From 92881093ae19e4d76193447c187028aee5cbe4c7 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 16 Nov 2020 17:03:07 +0100 Subject: getting the viewer-only version of the site working. flask command to run test server --- animism-align/frontend/app/store.js | 24 +++++++++++------ .../frontend/app/views/align/align.reducer.js | 2 +- .../frontend/app/views/audio/audio.actions.js | 6 +++-- .../views/paragraph/components/paragraph.list.js | 2 ++ .../app/views/paragraph/paragraph.reducer.js | 2 +- .../frontend/app/views/viewer/nav/nav.parent.js | 2 +- .../app/views/viewer/player/player.container.js | 1 + .../app/views/viewer/player/player.transcript.js | 1 + .../frontend/app/views/viewer/viewer.actions.js | 3 ++- .../frontend/app/views/viewer/viewer.container.js | 1 + animism-align/frontend/site/actions.js | 11 +++++--- animism-align/frontend/site/app.js | 31 +++++++++------------- animism-align/frontend/site/index.js | 4 +-- animism-align/frontend/site/site/site.reducer.js | 12 +++++++++ animism-align/frontend/site/store.js | 31 ++++++++++++++++++---- 15 files changed, 90 insertions(+), 43 deletions(-) create mode 100644 animism-align/frontend/site/site/site.reducer.js (limited to 'animism-align/frontend') diff --git a/animism-align/frontend/app/store.js b/animism-align/frontend/app/store.js index f7477df..d1843f7 100644 --- a/animism-align/frontend/app/store.js +++ b/animism-align/frontend/app/store.js @@ -5,31 +5,39 @@ import { createBrowserHistory } from 'history' import thunk from 'redux-thunk' // import { login } from 'app/utils' +// cms import uploadReducer from 'app/views/upload/upload.reducer' -import alignReducer from 'app/views/align/align.reducer' -import audioReducer from 'app/views/audio/audio.reducer' -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' import episodeReducer from 'app/views/episode/episode.reducer' import venueReducer from 'app/views/venue/venue.reducer' +// editor +import alignReducer from 'app/views/align/align.reducer' +import paragraphReducer from 'app/views/paragraph/paragraph.reducer' + +// viewer +import audioReducer from 'app/views/audio/audio.reducer' +import viewerReducer from 'app/views/viewer/viewer.reducer' + const createRootReducer = history => ( combineReducers({ auth: (state = {}) => state, router: connectRouter(history), site: siteReducer, + upload: uploadReducer, - align: alignReducer, - audio: audioReducer, - paragraph: paragraphReducer, annotation: annotationReducer, media: mediaReducer, - viewer: viewerReducer, episode: episodeReducer, venue: venueReducer, + + align: alignReducer, + paragraph: paragraphReducer, + + audio: audioReducer, + viewer: viewerReducer, }) ) diff --git a/animism-align/frontend/app/views/align/align.reducer.js b/animism-align/frontend/app/views/align/align.reducer.js index dec27a4..8a660c0 100644 --- a/animism-align/frontend/app/views/align/align.reducer.js +++ b/animism-align/frontend/app/views/align/align.reducer.js @@ -1,5 +1,5 @@ import * as types from 'app/types' -import { session, getDefault, getDefaultInt } from 'app/session' +// import { session, getDefault, getDefaultInt } from 'app/session' const initialState = { timeline: { diff --git a/animism-align/frontend/app/views/audio/audio.actions.js b/animism-align/frontend/app/views/audio/audio.actions.js index b5d4e1b..ef5a4f6 100644 --- a/animism-align/frontend/app/views/audio/audio.actions.js +++ b/animism-align/frontend/app/views/audio/audio.actions.js @@ -34,12 +34,14 @@ export const pause = () => dispatch => { audioPlayer.pause() } export const seek = play_ts => dispatch => { + console.log('seek to', play_ts) audioPlayer.currentTime = play_ts - dispatch({ type: types.audio.seek, seek_ts: audioPlayer.currentTime }) + console.log(play_ts, audioPlayer.currentTime) + dispatch({ type: types.audio.seek, seek_ts: audioPlayer.currentTime || play_ts }) } export const jump = delta_ts => dispatch => { audioPlayer.currentTime += delta_ts - dispatch({ type: types.audio.seek, seek_ts: audioPlayer.currentTime }) + dispatch({ type: types.audio.seek, seek_ts: audioPlayer.currentTime || play_ts }) } export const toggle = () => dispatch => { if (store.getState().audio.playing) { diff --git a/animism-align/frontend/app/views/paragraph/components/paragraph.list.js b/animism-align/frontend/app/views/paragraph/components/paragraph.list.js index a8f32b3..1507b51 100644 --- a/animism-align/frontend/app/views/paragraph/components/paragraph.list.js +++ b/animism-align/frontend/app/views/paragraph/components/paragraph.list.js @@ -14,6 +14,7 @@ class ParagraphList extends Component { componentDidUpdate(prevProps) { if (this.props.audio.play_ts === prevProps.audio.play_ts) return + if (!this.props.paragraphs) return this.setCurrentParagraph() } @@ -64,6 +65,7 @@ class ParagraphList extends Component { onAnnotationClick, onParagraphDoubleClick, } = this.props const { currentParagraph, currentAnnotation } = this.state + if (!paragraphs) return null return paragraphs.map((paragraph, i) => { if (selectedParagraph && selectedParagraph.id === paragraph.id) { paragraph = selectedParagraph diff --git a/animism-align/frontend/app/views/paragraph/paragraph.reducer.js b/animism-align/frontend/app/views/paragraph/paragraph.reducer.js index 041014f..3b33128 100644 --- a/animism-align/frontend/app/views/paragraph/paragraph.reducer.js +++ b/animism-align/frontend/app/views/paragraph/paragraph.reducer.js @@ -1,5 +1,5 @@ import * as types from 'app/types' -import { session, getDefault, getDefaultInt } from 'app/session' +// import { session, getDefault, getDefaultInt } from 'app/session' import { crudState, crudReducer } from 'app/api/crud.reducer' 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 d18aac0..cb83f94 100644 --- a/animism-align/frontend/app/views/viewer/nav/nav.parent.js +++ b/animism-align/frontend/app/views/viewer/nav/nav.parent.js @@ -61,7 +61,7 @@ class NavParent extends Component { e && e.preventDefault() e && e.stopPropagation() const { viewer } = this.props - // console.log('>> SEEK') + console.log('>> SEEK', viewer.nextSection) if (viewer.nextSection) { actions.viewer.seekToSection(viewer.nextSection) } else { 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 26697f9..0bf64d1 100644 --- a/animism-align/frontend/app/views/viewer/player/player.container.js +++ b/animism-align/frontend/app/views/viewer/player/player.container.js @@ -83,6 +83,7 @@ class PlayerContainer extends Component { // console.log('inCurrentSection?', inCurrentSection) // console.log('didSeek?', didSeek) // if the current TS isn't in the same section as the current one... + console.log(currentSection.start_ts, play_ts, currentSection.end_ts) if (inCurrentSection) { return } 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 15d376a..9796008 100644 --- a/animism-align/frontend/app/views/viewer/player/player.transcript.js +++ b/animism-align/frontend/app/views/viewer/player/player.transcript.js @@ -60,6 +60,7 @@ class PlayerTranscript extends Component { const className = "player-transcript " + color + " " + ( inlineParagraphCount > 2 ? 'scrollable' : 'not-scrollable' ) + console.log(this.props.section) return (
dispatch => { const { order: annotationOrder, lookup: annotationLookup } = state.annotation.index const { lookup: mediaLookup } = state.media.index + console.log(state) + // loop over the annotations in time order. annotationOrder.forEach((annotation_id, i) => { // fetch the current annotation @@ -206,7 +208,6 @@ export const loadSections = () => dispatch => { }) // console.log(sections) // console.log(footnoteList) - // console.log(fullscreenTimeline) dispatch({ type: types.viewer.load_sections, sections, footnoteList }) } diff --git a/animism-align/frontend/app/views/viewer/viewer.container.js b/animism-align/frontend/app/views/viewer/viewer.container.js index 90787db..c81b79e 100644 --- a/animism-align/frontend/app/views/viewer/viewer.container.js +++ b/animism-align/frontend/app/views/viewer/viewer.container.js @@ -35,6 +35,7 @@ import VitrineModal from './modals/modals.vitrine' class ViewerContainer extends Component { render() { const { loaded, viewer, playing } = this.props + // console.log(loaded, playing, viewer) if (!loaded) { return
} diff --git a/animism-align/frontend/site/actions.js b/animism-align/frontend/site/actions.js index f11ce13..2642469 100644 --- a/animism-align/frontend/site/actions.js +++ b/animism-align/frontend/site/actions.js @@ -1,8 +1,10 @@ import { bindActionCreators } from 'redux' // import { actions as crudActions } from './api' -import * as audioActions from 'app/views/audio.actions' -import * as viewerActions from 'app/views/viewer.actions' +import * as siteActions from 'site/site/site.actions' +import * as audioActions from 'app/views/audio/audio.actions' +import * as viewerActions from 'app/views/viewer/viewer.actions' +import * as transcriptActions from 'app/views/paragraph/transcript.actions' import { store } from './store' @@ -11,12 +13,13 @@ export default // .map(a => [a, crudActions[a]]) // .concat( [ - // ['site', siteActions], + ['site', siteActions], ['audio', audioActions], ['viewer', viewerActions], + ['transcript', transcriptActions] ] //) .map(p => [p[0], bindActionCreators(p[1], store.dispatch)]) .concat([ // ['socket', socketActions], ]) - .reduce((a,b) => (a[b[0]] = b[1])&&a,{}) \ No newline at end of file + .reduce((a,b) => (a[b[0]] = b[1])&&a,{}) diff --git a/animism-align/frontend/site/app.js b/animism-align/frontend/site/app.js index 4f8a6cf..8509954 100644 --- a/animism-align/frontend/site/app.js +++ b/animism-align/frontend/site/app.js @@ -3,31 +3,26 @@ import { ConnectedRouter } from 'connected-react-router' import { Route } from 'react-router' // import ViewerContainer from './viewer/viewer.container' +import Viewer from 'app/views/viewer/viewer.container' import actions from './actions' export default class App extends Component { componentDidMount() { - const path_partz = window.location.pathname.split('/') - const graph_name = path_partz[1] - let path_name = null - if (path_partz.length > 2) { - path_name = path_partz[2] - } - // console.log('loading', graph_name, path_name) - actions.site.loadSite(graph_name, path_name) + actions.site.loadProject() } render() { - return ( - -
- { - // setTimeout(() => this.props.history.push('/'), 10) - return null - }} /> -
-
- ) + return + // return ( + // + //
+ // { + // // setTimeout(() => this.props.history.push('/'), 10) + // return null + // }} /> + //
+ //
+ // ) } } /* diff --git a/animism-align/frontend/site/index.js b/animism-align/frontend/site/index.js index 448d38d..7d47bd0 100644 --- a/animism-align/frontend/site/index.js +++ b/animism-align/frontend/site/index.js @@ -7,7 +7,7 @@ import '../app/common/form.css' import { store } from './store' -import Viewer from 'app/views/viewer/viewer.container' +import App from './app' const container = document.createElement('div') container.classList.add('container') @@ -15,6 +15,6 @@ document.body.appendChild(container) ReactDOM.render( - + , container ) diff --git a/animism-align/frontend/site/site/site.reducer.js b/animism-align/frontend/site/site/site.reducer.js new file mode 100644 index 0000000..ea10886 --- /dev/null +++ b/animism-align/frontend/site/site/site.reducer.js @@ -0,0 +1,12 @@ +// import * as types from 'app/types' + +const initialState = { +} + +export default function siteReducer(state = initialState, action) { + console.log(action.type, action) + switch (action.type) { + default: + return state + } +} diff --git a/animism-align/frontend/site/store.js b/animism-align/frontend/site/store.js index 0b4aff7..2d9ffbc 100644 --- a/animism-align/frontend/site/store.js +++ b/animism-align/frontend/site/store.js @@ -1,25 +1,46 @@ -import { crudReducer } from 'app/api/crud.reducer' +import { crudState, crudReducer } from 'app/api/crud.reducer' import { applyMiddleware, compose, combineReducers, createStore } from 'redux' import { connectRouter, routerMiddleware } from 'connected-react-router' import { createBrowserHistory } from 'history' import thunk from 'redux-thunk' -// import siteReducer from './site/site.reducer' +import audioReducer from 'app/views/audio/audio.reducer' +import alignReducer from 'app/views/align/align.reducer' +import viewerReducer from 'app/views/viewer/viewer.reducer' +import paragraphReducer from 'app/views/paragraph/paragraph.reducer' +import siteReducer from 'site/site/site.reducer' + +// document.querySelector("#plain_content").remove() +const siteData = JSON.parse(document.querySelector("#site_data").innerText) const createRootReducer = history => ( combineReducers([ "media", - "upload", "annotation", "paragraph", "episode", "venue", ].reduce((a, type) => { - a[type] = crudReducer(type) + a[type] = (() => { + const initialState = { + ...crudState(), + index: siteData[type], + } + if (type === 'paragraph') { + return (state=initialState, action) => paragraphReducer(state, action) + } else { + const typeReducer = crudReducer(type) + return (state=initialState, action) => typeReducer(state, action) + } + })() return a }, { - auth: (state = {}) => state, + // auth: (state = {}) => state, router: connectRouter(history), + site: siteReducer, + audio: audioReducer, + align: alignReducer, + viewer: viewerReducer, })) ) -- cgit v1.2.3-70-g09d2