summaryrefslogtreecommitdiff
path: root/animism-align/frontend/app/utils/transcript.utils.js
diff options
context:
space:
mode:
Diffstat (limited to 'animism-align/frontend/app/utils/transcript.utils.js')
-rw-r--r--animism-align/frontend/app/utils/transcript.utils.js13
1 files changed, 11 insertions, 2 deletions
diff --git a/animism-align/frontend/app/utils/transcript.utils.js b/animism-align/frontend/app/utils/transcript.utils.js
index c913f9a..5a56611 100644
--- a/animism-align/frontend/app/utils/transcript.utils.js
+++ b/animism-align/frontend/app/utils/transcript.utils.js
@@ -5,21 +5,26 @@ import {
UTILITY_ANNOTATION_TYPES,
} from 'app/constants'
-export const buildParagraphs = annotationOrder => {
+export const buildParagraphs = (annotationOrder, sectionCount) => {
const state = store.getState()
const { lookup: annotationLookup } = state.annotation.index
const { lookup: paragraphLookup } = state.paragraph.index
let currentParagraph = {}
- let sectionCount = 0
const paragraphs = []
+
+ sectionCount = (sectionCount || 0)
+
// loop over the annotations in time order
annotationOrder.forEach((annotation_id, i) => {
+ // fetch annotation and paragraph
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
@@ -34,6 +39,7 @@ export const buildParagraphs = annotationOrder => {
}
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)
@@ -50,15 +56,18 @@ export const buildParagraphs = annotationOrder => {
}
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)
}
})
+
// finally, go over the paragraphs and update their end_ts, if none is set
for (let i = 0; i < (paragraphs.length - 1); i++) {
if (!paragraphs[i].end_ts) {