1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
import * as types from 'app/types'
import { store, history, dispatch } from 'app/store'
import { api } from 'app/utils'
import actions from 'app/actions'
// import { session } from 'app/session'
import throttle from 'lodash.throttle'
import debounce from 'lodash.debounce'
import { ZOOM_STEPS } from 'app/constants'
import { getFirstPunctuationMarkIndex, cutFirstSentence } from 'app/utils/align.utils'
export const setScrollPosition = start_ts => dispatch => (
dispatch({ type: types.align.set_display_setting, key: 'start_ts', value: start_ts })
)
export const setZoom = zoom => dispatch => {
if (0 <= zoom && zoom < ZOOM_STEPS.length) {
dispatch({ type: types.align.set_display_setting, key: 'zoom', value: zoom })
}
}
export const throttledSetZoom = throttle(zoom => dispatch => {
setZoom(zoom)(dispatch)
}, 250, { leading: true })
export const setCursor = cursor_ts => dispatch => (
dispatch({ type: types.align.set_display_setting, key: 'cursor_ts', value: cursor_ts })
)
export const setSelectedAnnotation = annotation => dispatch => {
dispatch({ type: types.align.set_selected_annotation, data: annotation })
debouncedUpdateAnnotation.flush()
}
export const clearSelectedAnnotation = () => dispatch => {
dispatch({ type: types.align.clear_selected_annotation })
debouncedUpdateAnnotation.flush()
}
export const updateSelectedAnnotation = annotation => dispatch => {
dispatch({ type: types.align.set_selected_annotation, data: { ...annotation } })
debouncedUpdateAnnotation(annotation)
}
export const debouncedUpdateAnnotation = debounce(annotation => {
console.log('updating annotation', annotation)
actions.annotation.update(annotation)
}, 2000, { leading: false, trailing: true })
export const setSelectedParagraph = paragraph_id => dispatch => {
dispatch({ type: types.align.set_display_setting, key: 'selected_paragraph_id', value: paragraph_id })
}
export const clearSelectedParagraph = paragraph_id => dispatch => {
dispatch({ type: types.align.set_display_setting, key: 'selected_paragraph_id', value: -1 })
}
export const showNewAnnotationForm = (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,
end_ts: 0.0,
text: croppedText,
type: 'sentence',
settings: {},
}
})
}
export const showEditAnnotationForm = (annotation) => dispatch => {
dispatch({
type: types.align.set_temporary_annotation,
data: annotation,
})
}
export const updateAnnotationForm = (key, value) => dispatch => {
dispatch({ type: types.align.update_temporary_annotation, key, value })
}
export const updateAnnotationSettings = (key, value) => dispatch => {
dispatch({ type: types.align.update_temporary_annotation_settings, key, value })
}
export const hideAnnotationForm = () => dispatch => {
dispatch({
type: types.align.set_temporary_annotation,
data: {}
})
}
|