segments = {
const segments = [];
let eventStartIdx = parsed.events.findIndex(({ event_type }) => event_type == 'start');
while (eventStartIdx > -1 && eventStartIdx < parsed.events.length) {
let eventEndIdx = parsed.events.findIndex(
({ event_type }, i) => i > eventStartIdx && event_type == 'stop_all'
);
if (eventEndIdx > -1) {
let { timestamp: eventStart } = parsed.events[eventStartIdx];
let { timestamp: eventEnd } = parsed.events[eventEndIdx];
let recordStartIdx = parsed.records.findIndex(({ timestamp }) => +timestamp == +eventStart);
let recordEndIdx = parsed.records.findIndex(({ timestamp }) => +timestamp == +eventEnd);
if (recordStartIdx > -1 && recordEndIdx > -1) {
const records = parsed.records.slice(recordStartIdx, recordEndIdx);
const lastSegment = segments[segments.length - 1];
if (lastSegment) {
segments.push({
records: [ lastSegment.records[lastSegment.records.length - 1], records[0] ],
active: false,
});
}
segments.push({
records,
active: true
});
}
}
eventStartIdx = eventEndIdx;
}
return segments;
}