diff options
Diffstat (limited to 'animism-align/frontend/app/views/paragraph/transcript.actions.js')
| -rw-r--r-- | animism-align/frontend/app/views/paragraph/transcript.actions.js | 81 |
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 -} - |
