Skip to content

Commit f2cc72a

Browse files
committed
Latest build fiels for testing in Avalon
1 parent eb07f9d commit f2cc72a

22 files changed

+3423
-1546
lines changed

dist/actions/peaks-instance.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,10 +260,11 @@ function deleteSegment(item) {
260260
payload: item
261261
};
262262
}
263-
function activateSegment(id) {
263+
function activateSegment(id, neighbors) {
264264
return {
265265
type: types.ACTIVATE_SEGMENT,
266-
payload: id
266+
id: id,
267+
neighbors: neighbors
267268
};
268269
}
269270
function insertPlaceholderSegment(item, wrapperSpans) {

dist/components/HeadingForm.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,15 @@ var HeadingForm = function HeadingForm(_ref) {
6161
return titleValid && childOfValid;
6262
};
6363
var getOptions = function getOptions() {
64-
var rootHeader = structuralMetadataUtils.getItemsOfType('root', smData);
65-
var divHeaders = structuralMetadataUtils.getItemsOfType('div', smData);
66-
var allHeaders = rootHeader.concat(divHeaders);
64+
/**
65+
* Only get type='span' (timespans) items with children as possible headings.
66+
* This helps to keep the options list smaller, but allows to add heading
67+
* inside timespans. These headings then can be used as drop-zones for child
68+
* timespans inside them.
69+
*/
70+
var allHeaders = structuralMetadataUtils.getItemsOfType(['root', 'div', 'span'], smData).filter(function (h) {
71+
return h.type !== 'span' || h.items && h.items.length > 0;
72+
});
6773
var options = allHeaders.map(function (header) {
6874
return /*#__PURE__*/_react["default"].createElement("option", {
6975
value: header.id,
@@ -98,8 +104,8 @@ var HeadingForm = function HeadingForm(_ref) {
98104
}, /*#__PURE__*/_react["default"].createElement(_Form["default"].Label, null, "Title"), /*#__PURE__*/_react["default"].createElement(_Form["default"].Control, {
99105
type: "text",
100106
value: headingTitle,
101-
isValid: (0, _formHelper.getValidationTitleState)(headingTitle),
102-
isInvalid: !(0, _formHelper.getValidationTitleState)(headingTitle),
107+
isValid: (0, _formHelper.isTitleValid)(headingTitle),
108+
isInvalid: !(0, _formHelper.isTitleValid)(headingTitle),
103109
onChange: handleHeadingChange,
104110
"data-testid": "heading-form-title"
105111
}), /*#__PURE__*/_react["default"].createElement(_Form["default"].Control.Feedback, null)), /*#__PURE__*/_react["default"].createElement(_Form["default"].Group, {

dist/components/HeadingInlineForm.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ var HeadingInlineForm = function HeadingInlineForm(_ref) {
8383
type: "text",
8484
style: styles.formControl,
8585
value: headingTitle,
86-
isValid: (0, _formHelper.getValidationTitleState)(headingTitle),
87-
isInvalid: !(0, _formHelper.getValidationTitleState)(headingTitle),
86+
isValid: (0, _formHelper.isTitleValid)(headingTitle),
87+
isInvalid: !(0, _formHelper.isTitleValid)(headingTitle),
8888
onChange: handleInputChange,
8989
"data-testid": "inline-heading-title-form-control"
9090
})))), /*#__PURE__*/_react["default"].createElement(_ListItemInlineEditControls["default"], {

dist/components/ListItem.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ var ListItem = function ListItem(_ref) {
123123
};
124124
var begin = item.begin,
125125
end = item.end,
126+
nestedSpan = item.nestedSpan,
126127
items = item.items,
127128
label = item.label,
128129
type = item.type,
@@ -132,7 +133,8 @@ var ListItem = function ListItem(_ref) {
132133
childrenCount: items ? items.length : 0,
133134
label: label,
134135
type: type,
135-
active: active
136+
active: active,
137+
nestedSpan: nestedSpan
136138
};
137139

138140
/**

dist/components/TimespanForm.js

Lines changed: 52 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var _StructuralMetadataUtils = _interopRequireDefault(require("../services/Struc
1919
var _formHelper = require("../services/form-helper");
2020
var peaksActions = _interopRequireWildcard(require("../actions/peaks-instance"));
2121
var _WaveformDataUtils = _interopRequireDefault(require("../services/WaveformDataUtils"));
22+
var _smeHooks = require("../services/sme-hooks");
2223
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
2324
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
2425
var structuralMetadataUtils = new _StructuralMetadataUtils["default"]();
@@ -41,7 +42,6 @@ var TimespanForm = function TimespanForm(_ref) {
4142
});
4243
var duration = peaksInstance.duration,
4344
isDragging = peaksInstance.isDragging,
44-
peaks = peaksInstance.peaks,
4545
segment = peaksInstance.segment,
4646
startTimeChanged = peaksInstance.startTimeChanged;
4747

@@ -73,22 +73,56 @@ var TimespanForm = function TimespanForm(_ref) {
7373
_useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
7474
validHeadings = _useState10[0],
7575
setValidHeadings = _useState10[1];
76+
77+
// Update beginTime and endTime on load
78+
(0, _react.useEffect)(function () {
79+
if (initSegment) {
80+
setBeginTime(structuralMetadataUtils.toHHmmss(initSegment.startTime));
81+
setEndTime(structuralMetadataUtils.toHHmmss(initSegment.endTime));
82+
}
83+
}, [initSegment]);
7684
var allSpans = (0, _react.useMemo)(function () {
7785
if ((smData === null || smData === void 0 ? void 0 : smData.length) > 0) {
78-
return structuralMetadataUtils.getItemsOfType('span', smData);
86+
return structuralMetadataUtils.getItemsOfType(['span'], smData);
7987
}
8088
}, [smData]);
89+
90+
// Find neighboring timespans of the currently editing timespan
91+
var _useFindNeighborSegme = (0, _smeHooks.useFindNeighborSegments)({
92+
segment: segment
93+
}),
94+
prevSiblingRef = _useFindNeighborSegme.prevSiblingRef,
95+
nextSiblingRef = _useFindNeighborSegme.nextSiblingRef,
96+
parentTimespanRef = _useFindNeighborSegme.parentTimespanRef;
97+
98+
// Validate timespan form when editing
99+
var _useTimespanFormValid = (0, _smeHooks.useTimespanFormValidation)({
100+
beginTime: beginTime,
101+
endTime: endTime,
102+
neighbors: {
103+
prevSiblingRef: prevSiblingRef,
104+
nextSiblingRef: nextSiblingRef,
105+
parentTimespanRef: parentTimespanRef
106+
},
107+
timespanTitle: timespanTitle
108+
}),
109+
formIsValid = _useTimespanFormValid.formIsValid,
110+
isBeginValid = _useTimespanFormValid.isBeginValid,
111+
isEndValid = _useTimespanFormValid.isEndValid;
81112
var buildHeadingsOptions = function buildHeadingsOptions() {
82113
var newSpan = {
83114
begin: beginTime,
84115
end: endTime
85116
};
86117

87-
// Get spans in overall span list which fall before and after the new span
88-
var wrapperSpans = structuralMetadataUtils.findWrapperSpans(newSpan, allSpans);
118+
// Build wrapperSpans from sibling timespans
119+
var wrapperSpans = {
120+
before: prevSiblingRef.current,
121+
after: nextSiblingRef.current
122+
};
89123

90-
// Get all valid div headings
91-
var validHeadings = structuralMetadataUtils.getValidHeadings(newSpan, wrapperSpans, smData);
124+
// Get all valid div headings and potential parent timespans
125+
var validHeadings = structuralMetadataUtils.getValidParents(newSpan, wrapperSpans, smData, parentTimespanRef.current);
92126

93127
// Update state with valid headings
94128
setValidHeadings(validHeadings);
@@ -111,13 +145,15 @@ var TimespanForm = function TimespanForm(_ref) {
111145
(0, _react.useEffect)(function () {
112146
if (!isTyping) {
113147
if (initSegment && isInitializing) {
114-
setBeginTime(structuralMetadataUtils.toHHmmss(initSegment.startTime));
115-
setEndTime(structuralMetadataUtils.toHHmmss(initSegment.endTime));
116148
// Set isInitializing flag to false
117149
setIsInitializing(false);
118150
}
119151
if (!isInitializing) {
120-
var _waveformDataUtils$va = waveformDataUtils.validateSegment(segment, startTimeChanged, peaks, duration),
152+
var _waveformDataUtils$va = waveformDataUtils.validateSegment(segment, startTimeChanged, duration, {
153+
previousSibling: prevSiblingRef.current,
154+
nextSibling: nextSiblingRef.current,
155+
parentTimespan: parentTimespanRef.current
156+
}),
121157
startTime = _waveformDataUtils$va.startTime,
122158
_endTime = _waveformDataUtils$va.endTime;
123159
setBeginTime(structuralMetadataUtils.toHHmmss(startTime));
@@ -137,11 +173,6 @@ var TimespanForm = function TimespanForm(_ref) {
137173
// Reset isTyping flag
138174
setIsTyping(0);
139175
};
140-
var formIsValid = function formIsValid() {
141-
var titleValid = (0, _formHelper.isTitleValid)(timespanTitle);
142-
var childOfValid = timespanChildOf.length > 0;
143-
return titleValid && childOfValid && isValidTimespan;
144-
};
145176
var handleInputChange = function handleInputChange(e) {
146177
setTimespanTitle(e.target.value);
147178
};
@@ -226,8 +257,8 @@ var TimespanForm = function TimespanForm(_ref) {
226257
}, /*#__PURE__*/_react["default"].createElement(_Form["default"].Label, null, "Title"), /*#__PURE__*/_react["default"].createElement(_Form["default"].Control, {
227258
type: "text",
228259
value: timespanTitle,
229-
isValid: (0, _formHelper.getValidationTitleState)(timespanTitle),
230-
isInvalid: !(0, _formHelper.getValidationTitleState)(timespanTitle),
260+
isValid: (0, _formHelper.isTitleValid)(timespanTitle),
261+
isInvalid: !(0, _formHelper.isTitleValid)(timespanTitle),
231262
onChange: handleInputChange,
232263
"data-testid": "timespan-form-title"
233264
}), /*#__PURE__*/_react["default"].createElement(_Form["default"].Control.Feedback, null)), /*#__PURE__*/_react["default"].createElement(_Row["default"], null, /*#__PURE__*/_react["default"].createElement(_Col["default"], {
@@ -238,8 +269,8 @@ var TimespanForm = function TimespanForm(_ref) {
238269
}, /*#__PURE__*/_react["default"].createElement(_Form["default"].Label, null, "Begin Time"), /*#__PURE__*/_react["default"].createElement(_Form["default"].Control, {
239270
type: "text",
240271
value: beginTime,
241-
isValid: (0, _formHelper.getValidationBeginState)(beginTime, allSpans),
242-
isInvalid: !(0, _formHelper.getValidationBeginState)(beginTime, allSpans),
272+
isValid: isBeginValid,
273+
isInvalid: !isBeginValid,
243274
placeholder: "00:00:00",
244275
onChange: handleBeginTimeChange,
245276
"data-testid": "timespan-form-begintime"
@@ -251,8 +282,8 @@ var TimespanForm = function TimespanForm(_ref) {
251282
}, /*#__PURE__*/_react["default"].createElement(_Form["default"].Label, null, "End Time"), /*#__PURE__*/_react["default"].createElement(_Form["default"].Control, {
252283
type: "text",
253284
value: endTime,
254-
isValid: (0, _formHelper.getValidationEndState)(beginTime, endTime, allSpans, duration),
255-
isInvalid: !(0, _formHelper.getValidationEndState)(beginTime, endTime, allSpans, duration),
285+
isValid: isEndValid,
286+
isInvalid: !isEndValid,
256287
placeholder: "00:00:00",
257288
onChange: handleEndTimeChange,
258289
"data-testid": "timespan-form-endtime"
@@ -280,7 +311,7 @@ var TimespanForm = function TimespanForm(_ref) {
280311
}, "Cancel"), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
281312
variant: "primary",
282313
type: "submit",
283-
disabled: !formIsValid(),
314+
disabled: !(formIsValid && timespanChildOf.length > 0),
284315
"data-testid": "timespan-form-save-button"
285316
}, "Save")))));
286317
};

dist/components/TimespanInlineForm.js

Lines changed: 48 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var _lodash = require("lodash");
1919
var _ListItemInlineEditControls = _interopRequireDefault(require("./ListItemInlineEditControls"));
2020
var peaksActions = _interopRequireWildcard(require("../actions/peaks-instance"));
2121
var _WaveformDataUtils = _interopRequireDefault(require("../services/WaveformDataUtils"));
22+
var _smeHooks = require("../services/sme-hooks");
2223
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
2324
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
2425
var structuralMetadataUtils = new _StructuralMetadataUtils["default"]();
@@ -44,14 +45,15 @@ function TimespanInlineForm(_ref) {
4445
var peaksInstance = (0, _reactRedux.useSelector)(function (state) {
4546
return state.peaksInstance;
4647
});
47-
var isDragging = peaksInstance.isDragging,
48+
var duration = peaksInstance.duration,
49+
isDragging = peaksInstance.isDragging,
4850
segment = peaksInstance.segment,
4951
startTimeChanged = peaksInstance.startTimeChanged;
5052

5153
// Dispatch actions
5254
var dispatch = (0, _reactRedux.useDispatch)();
53-
var activateSegment = function activateSegment(id) {
54-
return dispatch(peaksActions.activateSegment(id));
55+
var activateSegment = function activateSegment(id, neighbors) {
56+
return dispatch(peaksActions.activateSegment(id, neighbors));
5557
};
5658
var insertPlaceholderSegment = function insertPlaceholderSegment(item, wrapperSpans) {
5759
return dispatch(peaksActions.insertPlaceholderSegment(item, wrapperSpans));
@@ -86,6 +88,29 @@ function TimespanInlineForm(_ref) {
8688
setClonedSegment = _useState8[1];
8789
var tempSmDataRef = (0, _react.useRef)();
8890
var allSpansRef = (0, _react.useRef)([]);
91+
92+
// Find neighboring timespans of the currently editing timespan
93+
var _useFindNeighborTimes = (0, _smeHooks.useFindNeighborTimespans)({
94+
item: item
95+
}),
96+
prevSiblingRef = _useFindNeighborTimes.prevSiblingRef,
97+
nextSiblingRef = _useFindNeighborTimes.nextSiblingRef,
98+
parentTimespanRef = _useFindNeighborTimes.parentTimespanRef;
99+
100+
// Validate timespan form when editing
101+
var _useTimespanFormValid = (0, _smeHooks.useTimespanFormValidation)({
102+
beginTime: beginTime,
103+
endTime: endTime,
104+
neighbors: {
105+
prevSiblingRef: prevSiblingRef,
106+
nextSiblingRef: nextSiblingRef,
107+
parentTimespanRef: parentTimespanRef
108+
},
109+
timespanTitle: timespanTitle
110+
}),
111+
formIsValid = _useTimespanFormValid.formIsValid,
112+
isBeginValid = _useTimespanFormValid.isBeginValid,
113+
isEndValid = _useTimespanFormValid.isEndValid;
89114
(0, _react.useEffect)(function () {
90115
// Get a fresh copy of store data
91116
tempSmDataRef.current = (0, _lodash.cloneDeep)(smData);
@@ -99,7 +124,11 @@ function TimespanInlineForm(_ref) {
99124
setEndTime(formValues.endTime);
100125
setTimespanTitle(formValues.timespanTitle);
101126
setClonedSegment(formValues.clonedSegment);
102-
activateSegment(item.id);
127+
activateSegment(item.id, {
128+
previousSibling: prevSiblingRef.current,
129+
nextSibling: nextSiblingRef.current,
130+
parentTimespan: parentTimespanRef.current
131+
});
103132
} else {
104133
handleInvalidTimespan();
105134
}
@@ -108,7 +137,7 @@ function TimespanInlineForm(_ref) {
108137
tempSmDataRef.current = structuralMetadataUtils.deleteListItem(item.id, tempSmDataRef.current);
109138

110139
// Save a reference to all the spans for future calculations
111-
allSpansRef.current = structuralMetadataUtils.getItemsOfType('span', tempSmDataRef.current);
140+
allSpansRef.current = structuralMetadataUtils.getItemsOfType(['span'], tempSmDataRef.current);
112141

113142
// Get segment from current peaks instance
114143
var currentSegment = peaksInstance.peaks.segments.getSegment(item.id);
@@ -127,7 +156,11 @@ function TimespanInlineForm(_ref) {
127156
// When handles in waveform are dragged clear out isInitializing and isTyping flags
128157
if (isInitializing) setIsInitializing(0);
129158
if (isTyping) setIsTyping(0);
130-
var _waveformUtils$valida = waveformUtils.validateSegment(segment, startTimeChanged, peaksInstance.peaks, peaksInstance.duration),
159+
var _waveformUtils$valida = waveformUtils.validateSegment(segment, startTimeChanged, duration, {
160+
previousSibling: prevSiblingRef.current,
161+
nextSibling: nextSiblingRef.current,
162+
parentTimespan: parentTimespanRef.current
163+
}),
131164
_startTime = _waveformUtils$valida.startTime,
132165
_endTime2 = _waveformUtils$valida.endTime;
133166
setBeginTime(structuralMetadataUtils.toHHmmss(_startTime));
@@ -141,10 +174,10 @@ function TimespanInlineForm(_ref) {
141174
* they cannot be added at the time Peaks is initialized.
142175
*/
143176
var handleInvalidTimespan = function handleInvalidTimespan() {
144-
var itemIndex = structuralMetadataUtils.getItemsOfType('span', smData).findIndex(function (i) {
177+
var itemIndex = structuralMetadataUtils.getItemsOfType(['span'], smData).findIndex(function (i) {
145178
return i.id === item.id;
146179
});
147-
var allSpans = structuralMetadataUtils.getItemsOfType('span', tempSmDataRef.current);
180+
var allSpans = structuralMetadataUtils.getItemsOfType(['span'], tempSmDataRef.current);
148181
var wrapperSpans = {
149182
prevSpan: null,
150183
nextSpan: null
@@ -159,11 +192,6 @@ function TimespanInlineForm(_ref) {
159192
setEndTime(structuralMetadataUtils.toHHmmss(placeholderSegment.endTime));
160193
setTimespanTitle(placeholderSegment.labelText);
161194
};
162-
var formIsValid = function formIsValid() {
163-
var titleValid = (0, _formHelper.isTitleValid)(timespanTitle);
164-
var timesValidResponse = (0, _formHelper.validTimespans)(beginTime, endTime, peaksInstance.duration, allSpansRef.current);
165-
return titleValid && timesValidResponse.valid;
166-
};
167195
var handleCancelClick = function handleCancelClick() {
168196
// Revert to segment to the state prior to editing
169197
revertSegment(clonedSegment);
@@ -226,8 +254,8 @@ function TimespanInlineForm(_ref) {
226254
type: "text",
227255
style: styles.formControl,
228256
value: timespanTitle,
229-
isValid: (0, _formHelper.getValidationTitleState)(timespanTitle),
230-
isInvalid: !(0, _formHelper.getValidationTitleState)(timespanTitle),
257+
isValid: (0, _formHelper.isTitleValid)(timespanTitle),
258+
isInvalid: !(0, _formHelper.isTitleValid)(timespanTitle),
231259
onChange: handleInputChange,
232260
"data-testid": "timespan-inline-form-title",
233261
className: "mx-0"
@@ -248,8 +276,8 @@ function TimespanInlineForm(_ref) {
248276
style: styles.formControl,
249277
value: beginTime,
250278
onChange: handleInputChange,
251-
isValid: (0, _formHelper.getValidationBeginState)(beginTime, allSpansRef.current),
252-
isInvalid: !(0, _formHelper.getValidationBeginState)(beginTime, allSpansRef.current),
279+
isValid: isBeginValid,
280+
isInvalid: !isBeginValid,
253281
"data-testid": "timespan-inline-form-begintime",
254282
className: "mx-0"
255283
}))), /*#__PURE__*/_react["default"].createElement(_Form["default"].Group, {
@@ -268,13 +296,13 @@ function TimespanInlineForm(_ref) {
268296
type: "text",
269297
style: styles.formControl,
270298
value: endTime,
271-
isValid: (0, _formHelper.getValidationEndState)(beginTime, endTime, allSpansRef.current, peaksInstance.duration),
272-
isInvalid: !(0, _formHelper.getValidationEndState)(beginTime, endTime, allSpansRef.current, peaksInstance.duration),
299+
isValid: isEndValid,
300+
isInvalid: !isEndValid,
273301
onChange: handleInputChange,
274302
"data-testid": "timespan-inline-form-endtime",
275303
className: "mx-0"
276304
})))), /*#__PURE__*/_react["default"].createElement(_ListItemInlineEditControls["default"], {
277-
formIsValid: formIsValid(),
305+
formIsValid: formIsValid,
278306
handleSaveClick: handleSaveClick,
279307
handleCancelClick: handleCancelClick
280308
}));

0 commit comments

Comments
 (0)