summaryrefslogtreecommitdiff
path: root/animism-align/frontend/app/views/viewer
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-11-05 15:16:33 +0100
committerJules Laplace <julescarbon@gmail.com>2020-11-05 15:16:33 +0100
commit948da5caeff1a0ae9990e6ddb2fbc37f8d0d04ae (patch)
treefead80aecf27f3925e69389e0c15a6c8b59ee974 /animism-align/frontend/app/views/viewer
parentb50b9ba9245d98a4552133db4e9d27de0f72fbe0 (diff)
fixing scrubber
Diffstat (limited to 'animism-align/frontend/app/views/viewer')
-rw-r--r--animism-align/frontend/app/views/viewer/player/components.fullscreen/fullscreen.video.js3
-rw-r--r--animism-align/frontend/app/views/viewer/player/components.inline/inline.video.js43
-rw-r--r--animism-align/frontend/app/views/viewer/player/components.media/video.scrubber.js7
-rw-r--r--animism-align/frontend/app/views/viewer/player/player.transcript.css4
4 files changed, 42 insertions, 15 deletions
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 213f17c..ec020f8 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
@@ -63,7 +63,7 @@ class FullscreenVideo extends Component {
}
render() {
- const { element, media, transitionDuration, playing } = this.props
+ const { element, media, transitionDuration, play_ts, playing } = this.props
const { duration, seconds, ready } = this.state
const { color } = element
const item = media.lookup[element.settings.media_id]
@@ -102,6 +102,7 @@ class FullscreenVideo extends Component {
/>
</div>
<VideoScrubber
+ play_ts={play_ts}
start_ts={element.start_ts}
video_start_ts={this.state.video_start_ts}
playing={playing}
diff --git a/animism-align/frontend/app/views/viewer/player/components.inline/inline.video.js b/animism-align/frontend/app/views/viewer/player/components.inline/inline.video.js
index f831078..d6de779 100644
--- a/animism-align/frontend/app/views/viewer/player/components.inline/inline.video.js
+++ b/animism-align/frontend/app/views/viewer/player/components.inline/inline.video.js
@@ -8,12 +8,20 @@ import { posterURL } from 'app/utils/annotation.utils'
export class MediaVideo extends Component {
state = {
+ width: 0,
ready: false,
}
constructor(props) {
super(props)
+ this.handleReady = this.handleReady.bind(this)
this.handlePlay = this.handlePlay.bind(this)
}
+ handleReady(player) {
+ player.getVideoWidth().then(width => {
+ this.setState({ width })
+ }).catch(error => {
+ })
+ }
handlePlay() {
this.setState({ ready: true })
}
@@ -68,17 +76,30 @@ export class MediaVideo extends Component {
style.opacity = ready ? 1.0 : 0.0
return (
<div className={className}>
- <div className='videoPlayer' style={style}>
- <VimeoPlayer
- video={item.url}
- autoplay={annotation.settings.autoplay}
- muted={true}
- responsive={true}
- controls={false}
- byline={false}
- style={poster}
- onPlay={this.handlePlay}
- />
+ <div className='videoContainer' style={style}>
+ <div className='videoPlayer'>
+ <VimeoPlayer
+ video={item.url}
+ autoplay={annotation.settings.autoplay}
+ muted={true}
+ responsive={true}
+ controls={false}
+ byline={false}
+ style={poster}
+ onReady={this.handleReady}
+ onPlay={this.handlePlay}
+ />
+ </div>
+ {this.state.width && (
+ <div
+ className="speaker-icon"
+ style={{
+ right: '50%',
+ marginRight: -1 * (this.state.width / 2 - 48 - 16)
+ }}
+ onClick={e => onAnnotationClick(e, paragraph, annotation)}
+ >{SpeakerIcon}</div>
+ )}
</div>
<MediaCitation media={item} />
</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 c236f81..48250c7 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
@@ -57,7 +57,7 @@ class VideoScrubber extends Component {
//
onScrub({
seek: video_seek,
- seconds: video_seek,
+ seconds: seconds,
scrubbing,
})
}
@@ -82,10 +82,11 @@ class VideoScrubber extends Component {
this.setState({ hovering: false })
}
render() {
- const { playing, volume, timing, video_start_ts, duration } = this.props
+ const { playing, start_ts, play_ts, volume, timing, video_start_ts, duration } = this.props
const { hovering, showing } = this.state
// remove video start offset from timing
- const player_ts = timing.seconds - video_start_ts
+ console.log(start_ts, play_ts)
+ const player_ts = play_ts - start_ts
// compute percent from the length of the fullscreen element
const percent = clamp(player_ts / duration, 0, 1)
// display timestamp from the fullscreen element too
diff --git a/animism-align/frontend/app/views/viewer/player/player.transcript.css b/animism-align/frontend/app/views/viewer/player/player.transcript.css
index 3a8f61c..e5a323c 100644
--- a/animism-align/frontend/app/views/viewer/player/player.transcript.css
+++ b/animism-align/frontend/app/views/viewer/player/player.transcript.css
@@ -245,6 +245,10 @@
padding: 1rem 0;
}
+.player-transcript .media.video .videoContainer {
+ position: relative;
+}
+
.player-transcript .media.video .speaker-icon,
.player-transcript .media.image .speaker-icon {
bottom: 0;