summaryrefslogtreecommitdiff
path: root/animism-align/frontend/app/views/paragraph/transcript.actions.js
diff options
context:
space:
mode:
Diffstat (limited to 'animism-align/frontend/app/views/paragraph/transcript.actions.js')
-rw-r--r--animism-align/frontend/app/views/paragraph/transcript.actions.js81
1 files changed, 4 insertions, 77 deletions
diff --git a/animism-align/frontend/app/views/paragraph/transcript.actions.js b/animism-align/frontend/app/views/paragraph/transcript.actions.js
index 5905cc5..b1038ea 100644
--- a/animism-align/frontend/app/views/paragraph/transcript.actions.js
+++ b/animism-align/frontend/app/views/paragraph/transcript.actions.js
@@ -1,83 +1,10 @@
import * as types from 'app/types'
import { store, history, dispatch } from 'app/store'
-import {
- TEXT_ANNOTATION_TYPES,
- MEDIA_ANNOTATION_TYPES,
- UTILITY_ANNOTATION_TYPES,
-} from 'app/constants'
+import { buildParagraphs } from 'app/utils/transcript.utils'
-export const buildParagraphs = () => dispatch => {
+export const buildAllParagraphs = () => dispatch => {
const state = store.getState()
- const { order: annotationOrder, lookup: annotationLookup } = state.annotation.index
- const { lookup: paragraphLookup } = state.paragraph.index
- let currentParagraph = {}
- let sectionCount = 0
- const paragraphs = []
- // loop over the annotations in time order
- annotationOrder.forEach((annotation_id, i) => {
- const annotation = annotationLookup[annotation_id]
- const paragraph = paragraphLookup[annotation.paragraph_id]
- // if this annotation is a utility (curtain, gallery instructions), then skip it
- if (UTILITY_ANNOTATION_TYPES.has(annotation.type)) {
- return
- }
- // if this annotation is media, then insert it after the current paragraph
- if (MEDIA_ANNOTATION_TYPES.has(annotation.type)) {
- // add option to hide the citation from the transcript
- if (!annotation.settings.hideCitation) {
- paragraphs.push({
- id: ('index_' + i),
- type: annotation.type,
- start_ts: annotation.start_ts,
- end_ts: 0,
- annotations: [annotation],
- })
- }
- return
- }
- // if this annotation is from a different paragraph, make a new paragraph
- if (annotation.type === 'section_heading' || annotation.type === 'heading_text' || annotation.paragraph_id !== currentParagraph.id) {
- const paragraph_type = getParagraphType(annotation, paragraph)
- currentParagraph = {
- id: annotation.paragraph_id || ('index_' + i),
- type: paragraph_type,
- start_ts: annotation.start_ts,
- end_ts: 0,
- annotations: [],
- }
- if (annotation.type === 'section_heading') {
- currentParagraph.sectionIndex = sectionCount++
- currentParagraph.id = 'section_' + currentParagraph.sectionIndex
- }
- paragraphs.push(currentParagraph)
- }
- // if this annotation is a paragraph_end, set the end timestamp
- if (annotation.type === 'paragraph_end') {
- currentParagraph.end_ts = annotation.start_ts
- }
- // otherwise, just append this annotation to the paragraph
- else {
- currentParagraph.annotations.push(annotation)
- }
- })
- for (let i = 0; i < (paragraphs.length - 1); i++) {
- if (!paragraphs[i].end_ts) {
- paragraphs[i].end_ts = paragraphs[i+1].start_ts - 0.1
- }
- }
+ const annotationOrder = state.annotation.index.order
+ const paragraphs = buildParagraphs(annotationOrder)
dispatch({ type: types.paragraph.update_transcript, paragraphs })
}
-
-const getParagraphType = (annotation, paragraph) => {
- if (annotation.type === 'section_heading') {
- return annotation.type
- }
- if (annotation.type === 'heading_text') {
- return annotation.type
- }
- if (!paragraph) {
- return annotation.type
- }
- return paragraph.type
-}
-