diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2020-10-01 11:04:40 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2020-10-01 11:04:40 +0200 |
| commit | 5cb08bd401118a0ae3ff267b806c864b1d588292 (patch) | |
| tree | 308340c726d71a3ee5ebe8871efd9d0ae1ca8495 /animism-align | |
| parent | 2b6faa507945100a04a0d63a0d93627411e68632 (diff) | |
a place for credits
Diffstat (limited to 'animism-align')
10 files changed, 113 insertions, 21 deletions
diff --git a/animism-align/frontend/app/views/episode/components/episode.form.js b/animism-align/frontend/app/views/episode/components/episode.form.js index 6efa6a4..8a2fb8f 100644 --- a/animism-align/frontend/app/views/episode/components/episode.form.js +++ b/animism-align/frontend/app/views/episode/components/episode.form.js @@ -9,6 +9,7 @@ const newEpisode = () => ({ title: '', episode_number: '', release_date: '', + is_live: false, settings: { curator: "", author: "", @@ -112,7 +113,7 @@ export default class EpisodeForm extends Component { const { isNew, onSubmit } = this.props const { data } = this.state const requiredKeys = "title episode_number release_date".split(" ") - const validKeys = "title episode_number release_date settings".split(" ") + const validKeys = "title episode_number release_date is_live settings".split(" ") const validData = validKeys.reduce((a,b) => { a[b] = data[b]; return a }, {}) const errorFields = requiredKeys.filter(key => !validData[key]) if (errorFields.length) { @@ -168,8 +169,8 @@ export default class EpisodeForm extends Component { <Checkbox label="Episode is live" name="is_live" - checked={data.settings.is_live} - onChange={this.handleSettingsChange} + checked={data.is_live} + onChange={this.handleSelect} /> <TextArea diff --git a/animism-align/frontend/app/views/viewer/nav/nav.parent.js b/animism-align/frontend/app/views/viewer/nav/nav.parent.js index fc72cf3..0f445a5 100644 --- a/animism-align/frontend/app/views/viewer/nav/nav.parent.js +++ b/animism-align/frontend/app/views/viewer/nav/nav.parent.js @@ -19,6 +19,7 @@ class NavParent extends Component { this.handleMouseLeave = this.handleMouseLeave.bind(this) this.handleMouseEnterNext = this.handleMouseEnterNext.bind(this) this.handleMouseLeaveNext = this.handleMouseLeaveNext.bind(this) + this.goToNextSection = this.goToNextSection.bind(this) } handleMouseEnter(){ if (this.state.suppressHover) return @@ -37,6 +38,16 @@ class NavParent extends Component { this.setState({ suppressHover: false }) }, 50) } + goToNextSection() { + const { viewer } = this.props + if (viewer.nextSection) { + actions.viewer.seekToSection(viewer.nextSection) + } else if (viewer.credits) { + actions.viewer.seekToBeginning() + } else { + actions.viewer.showCredits() + } + } render() { const { viewer, play_ts, started } = this.props let containerClassName = "viewer-nav " + viewer.navStyle @@ -68,7 +79,7 @@ class NavParent extends Component { <span className="next-link link" onMouseEnter={this.handleMouseEnterNext} - onClick={() => actions.viewer.seekToSection(viewer.nextSection)} + onClick={this.goToNextSection} > Next <Arrow type={'right'} /> diff --git a/animism-align/frontend/app/views/viewer/nav/viewer.router.js b/animism-align/frontend/app/views/viewer/nav/viewer.router.js index 7f18b94..b177d2d 100644 --- a/animism-align/frontend/app/views/viewer/nav/viewer.router.js +++ b/animism-align/frontend/app/views/viewer/nav/viewer.router.js @@ -34,6 +34,9 @@ class ViewerRouter extends Component { case 'video': actions.viewer.seekToSection(getSection(4)) break + case 'credits': + actions.viewer.showCredits() + break case 'end': break } diff --git a/animism-align/frontend/app/views/viewer/player/components.inline/inline.utility.js b/animism-align/frontend/app/views/viewer/player/components.inline/inline.utility.js index 486b8e5..7e108f4 100644 --- a/animism-align/frontend/app/views/viewer/player/components.inline/inline.utility.js +++ b/animism-align/frontend/app/views/viewer/player/components.inline/inline.utility.js @@ -36,8 +36,7 @@ export const Intro = ({ paragraph, media, onAnnotationClick }) => { ) } -const ScheduleComponent = ({ episodes, venues }) => { - console.log(episodes.lookup[episodes.order[0]]) +const ScheduleComponent = ({ episodes }) => { const currentEpisode = episodes.lookup[episodes.order[0]].settings return ( <div> @@ -96,10 +95,46 @@ const ScheduleComponent = ({ episodes, venues }) => { ) } +const CreditsComponent = ({ episodes, venues }) => { + const currentEpisode = episodes.lookup[episodes.order[0]].settings + const lines = currentEpisode.credits.split("\n").map((s, i) => { + if (s[0] === "#") { + return ( + <div className='credits-title' key={i}> + {s.replace("#", "").trim()} + </div> + ) + } + return ( + <div key={i}>{s || " "}</div> + ) + }) + return ( + <div className='site-credits'> + {lines} + </div> + ) +} + +const CreditsVenue = ({ venue }) => { + return ( + <div /> + ) +} + +export const SubscriptionForm = () => { + return ( + <div className="subscription-form"> + Stay up to date and get notified when the next episode is available + <input type="text" placeholder="Email address here" /> + </div> + ) +} + const mapStateToProps = state => ({ episodes: state.episode.index, - episode: state.episode.show.res || {}, venues: state.venue.index, }) -export const Schedule = connect(mapStateToProps)(ScheduleComponent)
\ No newline at end of file +export const Schedule = connect(mapStateToProps)(ScheduleComponent) +export const Credits = connect(mapStateToProps)(CreditsComponent) diff --git a/animism-align/frontend/app/views/viewer/player/player.container.js b/animism-align/frontend/app/views/viewer/player/player.container.js index bbad771..e940bfa 100644 --- a/animism-align/frontend/app/views/viewer/player/player.container.js +++ b/animism-align/frontend/app/views/viewer/player/player.container.js @@ -2,10 +2,10 @@ import React, { Component } from 'react' import { connect } from 'react-redux' import actions from 'app/actions' -import { GROWL } from 'app/constants' import { floatInRange, clamp } from 'app/utils' import PlayerTranscript from './player.transcript' +import PlayerCredits from './player.credits' import PlayerFullscreen from './player.fullscreen' class PlayerContainer extends Component { @@ -84,12 +84,15 @@ class PlayerContainer extends Component { render() { // const { } = this.props - const { currentSection } = this.props - if (!currentSection) { return <div /> } + const { currentSection, viewer } = this.props + if (!currentSection && !viewer.credits) { return <div /> } // console.log(currentSection) return ( <div className='viewer-container'> - <PlayerTranscript section={currentSection} /> + {viewer.credits + ? <PlayerCredits /> + : <PlayerTranscript section={currentSection} /> + } <PlayerFullscreen /> </div> ) diff --git a/animism-align/frontend/app/views/viewer/player/player.credits.js b/animism-align/frontend/app/views/viewer/player/player.credits.js new file mode 100644 index 0000000..f8a0fa8 --- /dev/null +++ b/animism-align/frontend/app/views/viewer/player/player.credits.js @@ -0,0 +1,24 @@ +import React, { Component } from 'react' + +import { + Schedule, + Credits, + SubscriptionForm, +} from './components.inline/inline.utility' + +export default class PlayerCredits extends Component { + render() { + return ( + <div className="player-transcript player-credits"> + <div className='content'> + <div className='section_heading'> + <span>Credits</span> + </div> + <Schedule /> + <Credits /> + <SubscriptionForm /> + </div> + </div> + ) + } +} 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 4ea459b..ce4d143 100644 --- a/animism-align/frontend/app/views/viewer/player/player.transcript.css +++ b/animism-align/frontend/app/views/viewer/player/player.transcript.css @@ -328,3 +328,16 @@ padding: 0.375rem 0; white-space: pre-line; } + +.site-credits { + width: 45rem; + margin: 0 auto; + padding-top: 1rem; + padding-bottom: 1rem; +} +.site-credits .credits-title { + margin-bottom: 0.375rem; +} +.site-credits div { + min-height: 0.875rem; +} diff --git a/animism-align/frontend/app/views/viewer/player/player.transcript.js b/animism-align/frontend/app/views/viewer/player/player.transcript.js index c34475c..d6702bb 100644 --- a/animism-align/frontend/app/views/viewer/player/player.transcript.js +++ b/animism-align/frontend/app/views/viewer/player/player.transcript.js @@ -12,7 +12,6 @@ import { inlineComponents } from './components.inline' class PlayerTranscript extends Component { constructor(props){ super(props) - this.handleClose = this.handleClose.bind(this) this.handleAnnotationClick = this.handleAnnotationClick.bind(this) this.handleParagraphDoubleClick = this.handleParagraphDoubleClick.bind(this) this.handleScroll = this.handleScroll.bind(this) @@ -44,9 +43,6 @@ class PlayerTranscript extends Component { handleParagraphDoubleClick(e, paragraph) { } - handleClose() { - } - handleScroll(e) { if (this.props.viewer.growlOpen) { actions.viewer.closeGrowl() @@ -81,8 +77,4 @@ const mapStateToProps = state => ({ viewer: state.viewer, }) -const mapDispatchToProps = dispatch => ({ - // uploadActions: bindActionCreators({ ...uploadActions }, dispatch), -}) - -export default connect(mapStateToProps, mapDispatchToProps)(PlayerTranscript) +export default connect(mapStateToProps)(PlayerTranscript) diff --git a/animism-align/frontend/app/views/viewer/viewer.actions.js b/animism-align/frontend/app/views/viewer/viewer.actions.js index 10d6edd..6ce2f01 100644 --- a/animism-align/frontend/app/views/viewer/viewer.actions.js +++ b/animism-align/frontend/app/views/viewer/viewer.actions.js @@ -283,6 +283,15 @@ export const seekToTimestamp = play_ts => dispatch => { actions.audio.play() } +export const seekToBeginning = () => dispatch => { + actions.viewer.hideComponent("credits") + actions.viewer.seekToTimestamp(0.0) +} + +export const showCredits = () => dispatch => { + actions.viewer.showComponent("credits") +} + export const setSectionFromTimestamp = play_ts => dispatch => { const { sections, currentSection } = store.getState().viewer const insideSection = sections.some((section, i) => { diff --git a/animism-align/frontend/app/views/viewer/viewer.reducer.js b/animism-align/frontend/app/views/viewer/viewer.reducer.js index 1589ea4..24ef24d 100644 --- a/animism-align/frontend/app/views/viewer/viewer.reducer.js +++ b/animism-align/frontend/app/views/viewer/viewer.reducer.js @@ -7,6 +7,7 @@ const initialState = { checklist: false, nav: false, share: false, + credits: false, /* section look and navigation */ sections: { loading: true }, |
