summaryrefslogtreecommitdiff
path: root/animism-align/frontend/app/views/viewer
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-11-05 16:57:33 +0100
committerJules Laplace <julescarbon@gmail.com>2020-11-05 16:57:52 +0100
commit810d8108cab099457a08b139216db7cfabe67851 (patch)
tree0cf95abfc1221e5b06e6fdd96366d988401ac25d /animism-align/frontend/app/views/viewer
parent464921197b83c442d74985b1ab8978cdb02c9efd (diff)
fix scrubber, next hover. much nicer transitions when seeking
Diffstat (limited to 'animism-align/frontend/app/views/viewer')
-rw-r--r--animism-align/frontend/app/views/viewer/nav/nav.css3
-rw-r--r--animism-align/frontend/app/views/viewer/nav/nav.parent.js16
-rw-r--r--animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js7
-rw-r--r--animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js1
-rw-r--r--animism-align/frontend/app/views/viewer/player/player.fullscreen.js3
5 files changed, 25 insertions, 5 deletions
diff --git a/animism-align/frontend/app/views/viewer/nav/nav.css b/animism-align/frontend/app/views/viewer/nav/nav.css
index 6cab857..3e7b000 100644
--- a/animism-align/frontend/app/views/viewer/nav/nav.css
+++ b/animism-align/frontend/app/views/viewer/nav/nav.css
@@ -106,7 +106,7 @@
}
.next-link {
- padding-right: .25rem;
+ padding: 0.25rem 0.25rem 0.25rem 8rem;
}
.transcript-link {
padding-right: 1.25rem;
@@ -128,6 +128,7 @@
width: 12rem;
height: 8rem;
z-index: 2;
+ margin-top: 3rem;
margin-bottom: 0.5rem;
margin-right: 0.75rem;
background-size: cover;
diff --git a/animism-align/frontend/app/views/viewer/nav/nav.parent.js b/animism-align/frontend/app/views/viewer/nav/nav.parent.js
index fdad211..00eab26 100644
--- a/animism-align/frontend/app/views/viewer/nav/nav.parent.js
+++ b/animism-align/frontend/app/views/viewer/nav/nav.parent.js
@@ -15,6 +15,7 @@ class NavParent extends Component {
}
constructor(props){
super(props)
+ this.suppressHover = false
this.handleMouseEnter = this.handleMouseEnter.bind(this)
this.handleMouseLeave = this.handleMouseLeave.bind(this)
this.handleMouseEnterNext = this.handleMouseEnterNext.bind(this)
@@ -23,22 +24,30 @@ class NavParent extends Component {
this.goToNextSection = this.goToNextSection.bind(this)
}
handleMouseEnter(){
+ // console.log('mouse enter')
if (this.state.suppressHover) return
this.setState({ hoveringNext: false, hoveringNav: true })
}
handleMouseEnterNext(){
+ // console.log('mouse enter next', this.state.suppressHover)
if (this.state.suppressHover) return
this.setState({ hoveringNext: true, hoveringNav: false })
}
handleMouseLeave(){
- this.setState({ hoveringNext: false, hoveringNav: false, suppressHover: false })
+ // console.log('mouse leave')
+ this.setState({ hoveringNav: false })
+ clearTimeout(this.timeout)
+ this.timeout = setTimeout(() => {
+ this.setState({ hoveringNext: false, suppressHover: false })
+ }, 100)
}
handleMouseLeaveNext(){
+ // console.log('mouse leave next')
this.setState({ hoveringNext: false, suppressHover: true, })
clearTimeout(this.timeout)
this.timeout = setTimeout(() => {
this.setState({ suppressHover: false })
- }, 50)
+ }, 100)
}
handleNavBarClick(e) {
e && e.stopPropagation()
@@ -85,11 +94,12 @@ class NavParent extends Component {
</div>
<div
className='nav-next'
- onMouseEnter={this.handleMouseEnterNext}
+ onMouseEnter={this.handleMouseEnter}
onClick={this.goToNextSection}
>
<span
className="next-link link"
+ onMouseEnter={this.handleMouseEnterNext}
>
{viewer.nextSection
? "Next"
diff --git a/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js b/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js
index a2c4b72..e226bab 100644
--- a/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js
+++ b/animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js
@@ -28,6 +28,7 @@ class FullscreenVideo extends Component {
this.handlePlay = this.handlePlay.bind(this)
this.handlePause = this.handlePause.bind(this)
this.handleTimeUpdate = this.handleTimeUpdate.bind(this)
+ this.handleScrub = this.handleScrub.bind(this)
this.handleEnd = this.handleEnd.bind(this)
}
componentDidMount() {
@@ -61,6 +62,10 @@ class FullscreenVideo extends Component {
this.setState(timing)
}
}
+ handleScrub(timing) {
+ console.log(timing)
+ this.setState(timing)
+ }
render() {
const { element, media, transitionDuration, play_ts, playing } = this.props
@@ -109,7 +114,7 @@ class FullscreenVideo extends Component {
playing={playing}
duration={element.duration}
timing={this.state}
- onScrub={this.handleTimeUpdate}
+ onScrub={this.handleScrub}
/>
</div>
)
diff --git a/animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js b/animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js
index 78c4b1d..aec82ca 100644
--- a/animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js
+++ b/animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js
@@ -55,6 +55,7 @@ class VideoScrubber extends Component {
// in case the video loops, modulo the length of the original video
const video_seek = ((seconds + video_start_ts) % timing.duration)
//
+ console.log(start_ts, seconds)
onScrub({
seek: video_seek,
seconds: seconds,
diff --git a/animism-align/frontend/app/views/viewer/player/player.fullscreen.js b/animism-align/frontend/app/views/viewer/player/player.fullscreen.js
index 75a7e33..2f17375 100644
--- a/animism-align/frontend/app/views/viewer/player/player.fullscreen.js
+++ b/animism-align/frontend/app/views/viewer/player/player.fullscreen.js
@@ -49,6 +49,7 @@ class PlayerFullscreen extends Component {
// also any elements starting at this point should transition immediately,
// to prevent flash of the underlying content.
if (seekedElements.length) {
+ // console.log(play_ts, seek_ts, 'seeked', seekedElements)
elements = seekedElements.map(e => {
if (e.start_ts === seek_ts && e.type !== 'curtain') {
return {
@@ -58,6 +59,8 @@ class PlayerFullscreen extends Component {
}
return e
})
+ } else {
+ // console.log(play_ts, seek_ts, 'elements', elements)
}
// console.log(elements)
// set nav style from top-most element