diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2021-03-12 19:34:30 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2021-03-12 19:34:30 +0100 |
| commit | cd84d1fbf26a9272b56fec30fa6e1c30bebe7e06 (patch) | |
| tree | 0eff1a2153ab5402b1e45e78f685cf93d78f27b5 /animism-align/frontend/app/views/editor/captions/captions.container.js | |
| parent | cb47d6a07b857ffc11e5baec07ec9d49439f14e4 (diff) | |
nicer automatic captions
Diffstat (limited to 'animism-align/frontend/app/views/editor/captions/captions.container.js')
| -rw-r--r-- | animism-align/frontend/app/views/editor/captions/captions.container.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/animism-align/frontend/app/views/editor/captions/captions.container.js b/animism-align/frontend/app/views/editor/captions/captions.container.js new file mode 100644 index 0000000..41cb2aa --- /dev/null +++ b/animism-align/frontend/app/views/editor/captions/captions.container.js @@ -0,0 +1,59 @@ +import React, { Component } from 'react' +import { connect } from 'react-redux' + +import './captions.css' + +import { MEDIA_ANNOTATION_TYPES } from 'app/constants' +import CaptionForm from './components/caption.form' + +class CaptionsContainer extends Component { + render() { + const { annotation, media, episode } = this.props + const { order, lookup: annotationLookup } = annotation + const { lookup: mediaLookup } = media + + const mediaItems = order.map(id => annotationLookup[id]) + .filter(annotation => ( + MEDIA_ANNOTATION_TYPES.has(annotation.type) + && !annotation.settings.hideCitation + && annotation.settings.media_id in mediaLookup + )) + .map(annotation => annotation.settings.media_id) + .reduce((dedupe, media_id) => { + if (dedupe.indexOf(media_id) === -1) { + dedupe.push(media_id) + } + return dedupe + }, []) + .map(media_id => mediaLookup[media_id]) + + // console.log(mediaItems) + + return ( + <div className='overview'> + <div className='project-top'> + <div className='project-heading'> + <h2>Captions</h2> + </div> + {mediaItems.map((item, index) => ( + <CaptionForm + key={item.id} + episode={episode} + media={item} + index={index+1} + /> + ))} + </div> + </div> + ) + } +} + +const mapStateToProps = state => ({ + project: state.site.project, + episode: state.site.episode, + annotation: state.annotation.index, + media: state.media.index, +}) + +export default connect(mapStateToProps)(CaptionsContainer) |
