diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2020-07-22 16:53:44 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2020-07-22 16:53:44 +0200 |
| commit | 74888b0fea12020da23ad0825d5d3e55aa6155c4 (patch) | |
| tree | a60b473afd92f68df97eaa903edd657fba3e6856 | |
| parent | ef78bc6a084f92b4794e987b5832240d85b6479e (diff) | |
adding spot for the viewer
13 files changed, 228 insertions, 13 deletions
diff --git a/animism-align/frontend/app/actions.js b/animism-align/frontend/app/actions.js index 8fa780e..54c5dc2 100644 --- a/animism-align/frontend/app/actions.js +++ b/animism-align/frontend/app/actions.js @@ -1,7 +1,7 @@ import { bindActionCreators } from 'redux' -// import { actions as crudActions } from 'app/api' import { crud_actions } from 'app/api/crud.actions' +import * as viewerActions from 'app/views/viewer/viewer.actions' import * as audioActions from 'app/views/audio/audio.actions' import * as alignActions from 'app/views/align/align.actions' import * as siteActions from 'app/views/site/site.actions' @@ -22,6 +22,7 @@ export default ['site', siteActions], ['align', alignActions], ['audio', audioActions], + ['viewer', viewerActions], ]) .map(p => [p[0], bindActionCreators(p[1], store.dispatch)]) .concat([ diff --git a/animism-align/frontend/app/store.js b/animism-align/frontend/app/store.js index e779ce4..ea0e2fa 100644 --- a/animism-align/frontend/app/store.js +++ b/animism-align/frontend/app/store.js @@ -12,6 +12,7 @@ import paragraphReducer from 'app/views/paragraph/paragraph.reducer' import annotationReducer from 'app/views/annotation/annotation.reducer' import siteReducer from 'app/views/site/site.reducer' import mediaReducer from 'app/views/media/media.reducer' +import viewerReducer from 'app/views/viewer/viewer.reducer' const createRootReducer = history => ( combineReducers({ @@ -24,6 +25,7 @@ const createRootReducer = history => ( paragraph: paragraphReducer, annotation: annotationReducer, media: mediaReducer, + viewer: viewerReducer, }) ) diff --git a/animism-align/frontend/app/views/index.js b/animism-align/frontend/app/views/index.js index 2c9ee78..b561bb5 100644 --- a/animism-align/frontend/app/views/index.js +++ b/animism-align/frontend/app/views/index.js @@ -2,3 +2,4 @@ export { default as align } from './align/align.container' export { default as paragraph } from './paragraph/paragraph.container' export { default as upload } from './upload/upload.container' export { default as media } from './media/media.container' +export { default as viewer } from './viewer/viewer.container' diff --git a/animism-align/frontend/app/views/nav/header.component.js b/animism-align/frontend/app/views/nav/header.component.js index b03d833..5e14ce4 100644 --- a/animism-align/frontend/app/views/nav/header.component.js +++ b/animism-align/frontend/app/views/nav/header.component.js @@ -15,6 +15,7 @@ function Header(props) { <Link to="/align">Align</Link> <Link to="/paragraph">Transcript</Link> <Link to="/media">Media</Link> + <Link to="/viewer">Viewer</Link> </div> </header> ) diff --git a/animism-align/frontend/app/views/paragraph/paragraph.container.js b/animism-align/frontend/app/views/paragraph/paragraph.container.js index ea1c797..71af036 100644 --- a/animism-align/frontend/app/views/paragraph/paragraph.container.js +++ b/animism-align/frontend/app/views/paragraph/paragraph.container.js @@ -11,19 +11,17 @@ import { Loader } from 'app/common' import ParagraphEditor from './containers/paragraphEditor.container' class ParagraphContainer extends Component { + constructor(props) { + super(props) + this.handleKeyDown = this.handleKeyDown.bind(this) + } componentDidMount() { - this.bind() + document.addEventListener('keydown', this.handleKeyDown) } componentWillUnmount() { - this.unbind() - } - bind() { - document.addEventListener('keydown', this.handleKeydown) - } - unbind() { - document.removeEventListener('keydown', this.handleKeydown) + document.removeEventListener('keydown', this.handleKeyDown) } - handleKeydown(e) { + handleKeyDown(e) { if (document.activeElement !== document.body) { return } @@ -46,7 +44,7 @@ class ParagraphContainer extends Component { } } render() { - if (!this.props.annotation.lookup || !this.props.paragraph.lookup) { + if (!this.props.loaded) { return <div className='body loading'><Loader /></div> } return ( @@ -58,8 +56,7 @@ class ParagraphContainer extends Component { } const mapStateToProps = state => ({ - paragraph: state.paragraph.index, - annotation: state.annotation.index, + loaded: !!state.annotation.lookup && !!state.paragraph.lookup && !!state.media.lookup }) const mapDispatchToProps = dispatch => ({ diff --git a/animism-align/frontend/app/views/viewer/containers/checklist.container.js b/animism-align/frontend/app/views/viewer/containers/checklist.container.js new file mode 100644 index 0000000..abe0ed1 --- /dev/null +++ b/animism-align/frontend/app/views/viewer/containers/checklist.container.js @@ -0,0 +1,28 @@ +import React, { Component } from 'react' +// import { Link } from 'react-router-dom' +// import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' + +import actions from 'app/actions' +// import * as uploadActions from './upload.actions' + +class Transcript extends Component { + componentDidMount() { + } + render() { + const { } = this.props + return ( + <div className="transcript"> + </div> + ) + } +} + +const mapStateToProps = state => ({ +}) + +const mapDispatchToProps = dispatch => ({ + // uploadActions: bindActionCreators({ ...uploadActions }, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(Transcript) diff --git a/animism-align/frontend/app/views/viewer/containers/transcript.container.js b/animism-align/frontend/app/views/viewer/containers/transcript.container.js new file mode 100644 index 0000000..abe0ed1 --- /dev/null +++ b/animism-align/frontend/app/views/viewer/containers/transcript.container.js @@ -0,0 +1,28 @@ +import React, { Component } from 'react' +// import { Link } from 'react-router-dom' +// import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' + +import actions from 'app/actions' +// import * as uploadActions from './upload.actions' + +class Transcript extends Component { + componentDidMount() { + } + render() { + const { } = this.props + return ( + <div className="transcript"> + </div> + ) + } +} + +const mapStateToProps = state => ({ +}) + +const mapDispatchToProps = dispatch => ({ + // uploadActions: bindActionCreators({ ...uploadActions }, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(Transcript) diff --git a/animism-align/frontend/app/views/viewer/containers/viewer.nav.js b/animism-align/frontend/app/views/viewer/containers/viewer.nav.js new file mode 100644 index 0000000..e1613b4 --- /dev/null +++ b/animism-align/frontend/app/views/viewer/containers/viewer.nav.js @@ -0,0 +1,28 @@ +import React, { Component } from 'react' +// import { Link } from 'react-router-dom' +// import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' + +import actions from 'app/actions' +// import * as uploadActions from './upload.actions' + +class ViewerNav extends Component { + componentDidMount() { + } + render() { + const { } = this.props + return ( + <div className="viewerNav"> + </div> + ) + } +} + +const mapStateToProps = state => ({ +}) + +const mapDispatchToProps = dispatch => ({ + // uploadActions: bindActionCreators({ ...uploadActions }, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(ViewerNav) diff --git a/animism-align/frontend/app/views/viewer/containers/viewer.router.js b/animism-align/frontend/app/views/viewer/containers/viewer.router.js new file mode 100644 index 0000000..e84600f --- /dev/null +++ b/animism-align/frontend/app/views/viewer/containers/viewer.router.js @@ -0,0 +1,42 @@ +import React, { Component } from 'react' +import { Link } from 'react-router-dom' +import { connect } from 'react-redux' + +import actions from 'app/actions' + +class ViewerRouter extends Component { + componentDidMount() { + this.route() + } + componentDidUpdate() { + this.route() + } + route() { + console.log(this.props.match.params.component) + switch (this.props.match.params.component) { + case 'transcript': + break + case 'nav': + break + case 'checklist': + break + case 'fullscreenImage': + break + case 'fullscreenVideo': + break + case 'fullscreenCarousel': + break + case 'end': + break + } + } + render() { + return null + } +} + +const mapStateToProps = state => ({ + viewer: state.viewer, +}) + +export default connect(mapStateToProps)(ViewerRouter) diff --git a/animism-align/frontend/app/views/viewer/viewer.actions.js b/animism-align/frontend/app/views/viewer/viewer.actions.js new file mode 100644 index 0000000..ed59793 --- /dev/null +++ b/animism-align/frontend/app/views/viewer/viewer.actions.js @@ -0,0 +1,4 @@ +import * as types from 'app/types' +import { store, history, dispatch } from 'app/store' +// import { } from 'app/utils' +// import actions from 'app/actions' diff --git a/animism-align/frontend/app/views/viewer/viewer.container.js b/animism-align/frontend/app/views/viewer/viewer.container.js new file mode 100644 index 0000000..ff68c4c --- /dev/null +++ b/animism-align/frontend/app/views/viewer/viewer.container.js @@ -0,0 +1,66 @@ +import React, { Component } from 'react' +import { Route } from 'react-router-dom' +import { bindActionCreators } from 'redux' +import { connect } from 'react-redux' + +import './viewer.css' + +import actions from 'app/actions' +import { Loader } from 'app/common' + +import ViewerRouter from './containers/viewer.router' + +class ViewerContainer extends Component { + constructor(props) { + super(props) + this.handleKeyDown = this.handleKeyDown.bind(this) + } + componentDidMount() { + document.addEventListener('keydown', this.handleKeyDown) + } + componentWillUnmount() { + document.removeEventListener('keydown', this.handleKeyDown) + } + handleKeyDown(e) { + if (document.activeElement !== document.body) { + return + } + // console.log(e.keyCode) + switch (e.keyCode) { + case 32: // spacebar + e.preventDefault() + actions.audio.toggle() + break + case 37: // left + case 38: // up + e.preventDefault() + actions.audio.jump(-5.0) + break + case 39: // right + case 40: // down + e.preventDefault() + actions.audio.jump(5.0) + break + } + } + render() { + if (!this.props.loaded) { + return <div className='viewer body loading'><Loader /></div> + } + return ( + <div className='viewer body'> + <Route exact path='/viewer/:component/' component={ViewerRouter} /> + </div> + ) + } +} + +const mapStateToProps = state => ({ + loaded: !!state.annotation.lookup && !!state.paragraph.lookup && !!state.media.lookup +}) + +const mapDispatchToProps = dispatch => ({ + // alignActions: bindActionCreators({ ...alignActions }, dispatch), +}) + +export default connect(mapStateToProps, mapDispatchToProps)(ViewerContainer) diff --git a/animism-align/frontend/app/views/viewer/viewer.css b/animism-align/frontend/app/views/viewer/viewer.css new file mode 100644 index 0000000..00cfa2b --- /dev/null +++ b/animism-align/frontend/app/views/viewer/viewer.css @@ -0,0 +1,3 @@ +.viewer { + background: #fff; +}
\ No newline at end of file diff --git a/animism-align/frontend/app/views/viewer/viewer.reducer.js b/animism-align/frontend/app/views/viewer/viewer.reducer.js new file mode 100644 index 0000000..039d16f --- /dev/null +++ b/animism-align/frontend/app/views/viewer/viewer.reducer.js @@ -0,0 +1,14 @@ +import * as types from 'app/types' + +const initialState = { + options: { + } +} + +export default function viewerReducer(state = initialState, action) { + // console.log(action.type, action) + switch (action.type) { + default: + return state + } +} |
