import React, { Component } from 'react'
// import { Link } from 'react-router-dom'
import { connect } from 'react-redux'
import actions from 'app/actions'
import ViewerSectionsNav from './viewer.sections.nav'
import { ROMAN_NUMERALS, CURTAIN_COLOR_LOOKUP } from 'app/constants'
import { clamp, timestamp, floatInRange, floatLT } from 'app/utils'
import { thumbnailURL } from 'app/utils/annotation.utils'
import { SpeakerIcon } from '../nav/viewer.icons'
class ViewerSections extends Component {
shouldComponentUpdate(nextProps) {
if (nextProps.nav !== this.props.nav) return true
return nextProps.nav
}
render() {
const { play_ts, sections, currentSection } = this.props
return (
{sections.map(section => {
// console.log(section)
const media = section.media.length ? section.media[0].media : null
const { no_audio, section_nav_color } = section
const progress = Math.round(sectionProgress(section, play_ts) * 100)
return (
actions.viewer.seekToSection(section)}
>
{!no_audio &&
{timestamp(section.duration)}
{SpeakerIcon}
}
{ROMAN_NUMERALS[section.index]}
{section.title}
{section.mediaLabels}
)
})}
)
}
}
const sectionProgress = (section, play_ts) => {
return (clamp(play_ts, section.start_ts, section.end_ts) - section.start_ts) / section.duration
}
const mapStateToProps = state => ({
nav: state.viewer.nav,
play_ts: state.audio.play_ts,
sections: state.viewer.sections,
currentSection: state.viewer.currentSection,
})
export default connect(mapStateToProps)(ViewerSections)