From 3e2c1d432d73823e66e19d0081b498ace467b231 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 2 Jul 2020 00:35:06 +0200 Subject: display the form --- animism-align/frontend/common/app.css | 2 +- animism-align/frontend/types.js | 1 + animism-align/frontend/util/index.js | 4 + .../frontend/views/align/align.actions.js | 36 ++++++ .../frontend/views/align/align.container.js | 8 +- animism-align/frontend/views/align/align.css | 32 ++++- .../frontend/views/align/align.reducer.js | 7 ++ animism-align/frontend/views/align/align.util.js | 28 +++++ .../components/annotations/annotation.form.js | 95 +++++++++++++++ .../views/align/components/cursor.component.js | 25 ---- .../views/align/components/playButton.component.js | 31 ----- .../views/align/components/playCursor.component.js | 43 ------- .../views/align/components/ticks.component.js | 89 -------------- .../views/align/components/timeline.component.js | 129 --------------------- .../align/components/timeline/cursor.component.js | 26 +++++ .../components/timeline/playButton.component.js | 31 +++++ .../components/timeline/playCursor.component.js | 43 +++++++ .../align/components/timeline/ticks.component.js | 89 ++++++++++++++ .../components/timeline/waveform.component.js | 100 ++++++++++++++++ .../views/align/components/waveform.component.js | 100 ---------------- .../align/containers/annotations.container.js | 44 +++++++ .../views/align/containers/script.container.js | 34 ++++++ .../views/align/containers/timeline.container.js | 129 +++++++++++++++++++++ .../frontend/views/audio/audio.actions.js | 2 +- animism-align/frontend/views/site/site.actions.js | 4 + .../frontend/views/timestamp/timestamp.reducer.js | 1 + 26 files changed, 711 insertions(+), 422 deletions(-) create mode 100644 animism-align/frontend/views/align/align.util.js create mode 100644 animism-align/frontend/views/align/components/annotations/annotation.form.js delete mode 100644 animism-align/frontend/views/align/components/cursor.component.js delete mode 100644 animism-align/frontend/views/align/components/playButton.component.js delete mode 100644 animism-align/frontend/views/align/components/playCursor.component.js delete mode 100644 animism-align/frontend/views/align/components/ticks.component.js delete mode 100644 animism-align/frontend/views/align/components/timeline.component.js create mode 100644 animism-align/frontend/views/align/components/timeline/cursor.component.js create mode 100644 animism-align/frontend/views/align/components/timeline/playButton.component.js create mode 100644 animism-align/frontend/views/align/components/timeline/playCursor.component.js create mode 100644 animism-align/frontend/views/align/components/timeline/ticks.component.js create mode 100644 animism-align/frontend/views/align/components/timeline/waveform.component.js delete mode 100644 animism-align/frontend/views/align/components/waveform.component.js create mode 100644 animism-align/frontend/views/align/containers/annotations.container.js create mode 100644 animism-align/frontend/views/align/containers/script.container.js create mode 100644 animism-align/frontend/views/align/containers/timeline.container.js diff --git a/animism-align/frontend/common/app.css b/animism-align/frontend/common/app.css index d9f9946..699505f 100644 --- a/animism-align/frontend/common/app.css +++ b/animism-align/frontend/common/app.css @@ -37,7 +37,7 @@ body { } .app .body { display: flex; - flex-direction: column; + flex-direction: row; flex-grow: 1; position: relative; height: 100%; diff --git a/animism-align/frontend/types.js b/animism-align/frontend/types.js index 9d16a4b..d888a0a 100644 --- a/animism-align/frontend/types.js +++ b/animism-align/frontend/types.js @@ -9,6 +9,7 @@ export const timestamp = crud_type('timestamp', []) export const paragraph = crud_type('paragraph', []) export const align = crud_type('align', [ 'set_display_setting', + 'set_temporary_annotation', ]) export const audio = with_type('audio', [ diff --git a/animism-align/frontend/util/index.js b/animism-align/frontend/util/index.js index 0615f93..b105f55 100644 --- a/animism-align/frontend/util/index.js +++ b/animism-align/frontend/util/index.js @@ -275,6 +275,10 @@ export const orderByFn = (s='name asc') => { mapFn = a => [parseInt(a.size) || 0, a] sortFn = numericSort[direction] break + case 'start_ts': + mapFn = a => [parseFloat(a.start_ts) || 0, a] + sortFn = numericSort[direction] + break case 'date': mapFn = a => [+new Date(a.date || a.created_at), a] sortFn = numericSort[direction] diff --git a/animism-align/frontend/views/align/align.actions.js b/animism-align/frontend/views/align/align.actions.js index 2e1c795..82e4799 100644 --- a/animism-align/frontend/views/align/align.actions.js +++ b/animism-align/frontend/views/align/align.actions.js @@ -24,3 +24,39 @@ export const throttledSetZoom = throttle(zoom => dispatch => { export const setCursor = cursor_ts => dispatch => ( dispatch({ type: types.align.set_display_setting, key: 'cursor_ts', value: cursor_ts }) ) + +export const showNewTimestampForm = (start_ts, text) => dispatch => { + let croppedText; + if (store.getState().align.annotation.start_ts) { + croppedText = store.getState().align.annotation.text + } else { + croppedText = cutFirstSentence(text) + } + console.log(croppedText) + dispatch({ + type: types.align.set_temporary_annotation, + data: { + id: 'new', + start_ts, + text: croppedText, + type: 'sentence', + } + }) +} + +const cutFirstSentence = text => { + const textToCrop = text.trim().replace("\n", " ").split("\n")[0] + let cropIndex = textToCrop.indexOf('. ') + 1 + if (!cropIndex) cropIndex = textToCrop.length + const croppedText = textToCrop.substr(0, cropIndex).trim() + const updatedText = text.trim().replace(croppedText, '').trim() + actions.site.updateText(updatedText) + return croppedText +} + +export const hideTimestampForm = () => dispatch => { + dispatch({ + type: types.align.set_temporary_annotation, + data: {} + }) +} diff --git a/animism-align/frontend/views/align/align.container.js b/animism-align/frontend/views/align/align.container.js index 387bd86..80d8a57 100644 --- a/animism-align/frontend/views/align/align.container.js +++ b/animism-align/frontend/views/align/align.container.js @@ -5,7 +5,8 @@ import { connect } from 'react-redux' import './align.css' -import Timeline from './components/timeline.component.js' +import Timeline from './containers/timeline.container.js' +import Script from './containers/script.container.js' import actions from '../../actions' import { Header } from '../../common' // import * as uploadActions from './upload.actions' @@ -20,7 +21,10 @@ class Container extends Component { render() { return (
- +
+ +
+