summaryrefslogtreecommitdiff
path: root/animism-align/frontend/app/views/viewer/player/components.media/media.carousel.js
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-09-09 23:10:13 +0200
committerJules Laplace <julescarbon@gmail.com>2020-09-09 23:10:13 +0200
commit0e45ce2ea046068de8d792e653497dae5433ae77 (patch)
tree2dde42fa057948a6eb25460c59be020113be0845 /animism-align/frontend/app/views/viewer/player/components.media/media.carousel.js
parentf1af7754bf4814a4eaa3f2a2099fbef58502d030 (diff)
carousel image sizing
Diffstat (limited to 'animism-align/frontend/app/views/viewer/player/components.media/media.carousel.js')
-rw-r--r--animism-align/frontend/app/views/viewer/player/components.media/media.carousel.js47
1 files changed, 33 insertions, 14 deletions
diff --git a/animism-align/frontend/app/views/viewer/player/components.media/media.carousel.js b/animism-align/frontend/app/views/viewer/player/components.media/media.carousel.js
index 3759c30..991fc88 100644
--- a/animism-align/frontend/app/views/viewer/player/components.media/media.carousel.js
+++ b/animism-align/frontend/app/views/viewer/player/components.media/media.carousel.js
@@ -3,6 +3,8 @@ import { connect } from 'react-redux'
import { useKeenSlider } from "app/utils/vendor/keen-slider/react"
import "keen-slider/keen-slider.min.css"
+import actions from 'app/actions'
+import { SpeakerIcon } from 'app/views/viewer/nav/viewer.icons'
import { MediaCitation } from './media.citation'
import { Arrow } from 'app/views/viewer/nav/viewer.icons'
@@ -13,7 +15,7 @@ const SLIDES_PER_VIEW = 2
let slideChangedHook = slider => console.log(slider)
let slideChanged = slider => slideChangedHook(slider)
-const CarouselContainer = ({ element, play_ts, media }) => {
+const CarouselContainer = ({ element, media, play_ts }) => {
const { image_order, caption_lookup } = media.settings
const [currentSlide, setCurrentSlide] = React.useState(0)
@@ -33,10 +35,7 @@ const CarouselContainer = ({ element, play_ts, media }) => {
// step thru this carousel's timeline, which is ordered in reverse BTW
element.timeline.some(cue => {
if (cue.start_ts < play_ts && (play_ts - cue.start_ts) < 0.5) {
- let slide_index = parseInt(cue.settings.frame_index)
- if (cue.settings.half_frame) {
- slide_index += 0.5
- }
+ let slide_index = cue.settings.seek_index
if (currentSlide < slide_index) {
setCurrentSlide(slide_index)
slider.moveToSlideRelative(slide_index)
@@ -46,7 +45,7 @@ const CarouselContainer = ({ element, play_ts, media }) => {
return false
})
- const currentCaption = caption_lookup[image_order[currentSlide]]
+ const currentCaption = caption_lookup[image_order[Math.round(currentSlide)]]
return (
<Carousel
@@ -55,24 +54,29 @@ const CarouselContainer = ({ element, play_ts, media }) => {
sliderRef={sliderRef}
currentSlide={currentSlide}
currentCaption={currentCaption}
+ timelineLookup={element.timelineLookup}
/>
)
}
-const CarouselComponent = ({ media, slider, sliderRef, currentSlide, currentCaption }) => {
+const CarouselComponent = ({ media, slider, sliderRef, currentSlide, currentCaption, timelineLookup }) => {
const { image_order, display_lookup } = media.settings
-
return [
<div key={'carousel_' + media.id} ref={sliderRef} className='keen-slider carousel-items'>
{image_order.map((id, idx) => {
const image = display_lookup[id]
// console.log(image)
return (
- <CarouselItem key={id} image={image} />
+ <CarouselItem
+ key={id}
+ image={image}
+ slider={slider}
+ seekAnnotation={timelineLookup[idx]}
+ />
)
})}
</div>,
- <MediaCitation key={'caption_' + media.id} media={(currentCaption && currentCaption.short_caption) ? currentCaption : media} />,
+ <MediaCitation key={'caption_' + media.id} media={(currentCaption && currentCaption.caption) ? currentCaption : media} />,
<CarouselNav
key={'arrows_' + media.id}
currentSlide={currentSlide}
@@ -133,11 +137,26 @@ const CarouselNav = ({ currentSlide, slides, onPrev, onNext, onPick }) => {
)
}
-const CarouselItem = ({ image }) => {
+const CarouselItem = ({ image, slider, seekAnnotation }) => {
return (
- <div className='keen-slider__slide carousel-item' style={{
- backgroundImage: 'url(' + image.url + ')',
- }} />
+ <div className='keen-slider__slide carousel-item'>
+ <div className="image-container" style={{ backgroundImage: 'url(' + image.url + ')' }}>
+ <img
+ src={image.url}
+ />
+ {seekAnnotation && (
+ <div
+ className="speaker-icon"
+ onClick={() => {
+ slider.moveToSlideRelative(seekAnnotation.settings.seek_index)
+ actions.viewer.seekToTimestamp(seekAnnotation.start_ts)
+ }}
+ >
+ {SpeakerIcon}
+ </div>
+ )}
+ </div>
+ </div>
)
}