import React, { Component } from 'react' import { Route } from 'react-router-dom' import { bindActionCreators } from 'redux' import { connect } from 'react-redux' import { floatLT, floatLTE } from 'app/utils' import ParagraphForm from '../components/paragraph.form' import { MEDIA_TYPES } from 'app/constants' class ParagraphList extends Component { state = { currentParagraph: -1, currentAnnotation: -1, } componentDidUpdate(prevProps) { if (this.props.audio.play_ts === prevProps.audio.play_ts) return this.setCurrentParagraph() } setCurrentParagraph() { const { play_ts } = this.props.audio const insideParagraph = this.props.paragraphs.some(paragraph => { if (floatLTE(paragraph.start_ts, play_ts) && floatLT(play_ts, paragraph.end_ts)) { this.setCurrentAnnotation(paragraph, play_ts) return true } return false }) if (!insideParagraph) { this.setState({ currentParagraph: -1, currentAnnotation: -1, }) } } setCurrentAnnotation(paragraph, play_ts) { const { id: currentParagraph, annotations } = paragraph let currentAnnotation let annotation let i = 0 let len = annotations.length for (let i = 0; i < len - 1; i++) { if (floatLT(play_ts, annotations[i+1].start_ts)) { currentAnnotation = annotations[i].id break } } if (!currentAnnotation) { currentAnnotation = annotations[len-1].id } this.setState({ currentParagraph, currentAnnotation }) } render() { const { paragraphs, media, paragraphElementLookup, selectedParagraph, onAnnotationClick, onParagraphDoubleClick, } = this.props const { currentParagraph, currentAnnotation } = this.state return paragraphs.map(paragraph => { if (selectedParagraph && selectedParagraph.id === paragraph.id) { paragraph = selectedParagraph } if (paragraph.type in paragraphElementLookup) { const ParagraphElement = paragraphElementLookup[paragraph.type] return ( ) } else { return
{'(waiting to implement' + paragraph.type + ')'}
} }) } } const mapStateToProps = state => ({ audio: state.audio, media: state.media.index, }) const mapDispatchToProps = dispatch => ({ }) export default connect(mapStateToProps, mapDispatchToProps)(ParagraphList)