mirror of
https://github.com/cpvalente/ontime.git
synced 2026-09-10 16:49:41 +00:00
fix: account for skip in rundown calculations
This commit is contained in:
committed by
Carlos Valente
parent
7cefe07594
commit
036d4051fc
@@ -161,12 +161,13 @@ describe('generate()', () => {
|
|||||||
const testRundown: OntimeRundown = [
|
const testRundown: OntimeRundown = [
|
||||||
{ type: SupportedEvent.Event, id: '1', timeStart: 100, timeEnd: 200 } as OntimeEvent,
|
{ type: SupportedEvent.Event, id: '1', timeStart: 100, timeEnd: 200 } as OntimeEvent,
|
||||||
{ type: SupportedEvent.Event, id: '2', timeStart: 200, timeEnd: 300 } as OntimeEvent,
|
{ type: SupportedEvent.Event, id: '2', timeStart: 200, timeEnd: 300 } as OntimeEvent,
|
||||||
{ type: SupportedEvent.Event, id: '3', timeStart: 300, timeEnd: 400 } as OntimeEvent,
|
{ type: SupportedEvent.Event, id: 'skipped', skip: true, timeStart: 300, timeEnd: 400 } as OntimeEvent,
|
||||||
|
{ type: SupportedEvent.Event, id: '3', timeStart: 400, timeEnd: 500 } as OntimeEvent,
|
||||||
];
|
];
|
||||||
|
|
||||||
const initResult = generate(testRundown);
|
const initResult = generate(testRundown);
|
||||||
expect(initResult.order.length).toBe(3);
|
expect(initResult.order.length).toBe(4);
|
||||||
expect(initResult.totalDuration).toBe(400 - 100);
|
expect(initResult.totalDuration).toBe(500 - 100);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('calculates total duration across days with gap', () => {
|
it('calculates total duration across days with gap', () => {
|
||||||
|
|||||||
@@ -102,17 +102,20 @@ export function generate(
|
|||||||
// update the persisted event
|
// update the persisted event
|
||||||
initialRundown[i] = updatedEvent;
|
initialRundown[i] = updatedEvent;
|
||||||
|
|
||||||
// update rundown duration
|
// we need to generate the skip event, but dont want to use its times
|
||||||
if (firstStart === null) {
|
if (!updatedEvent.skip) {
|
||||||
firstStart = updatedEvent.timeStart;
|
// update rundown duration
|
||||||
}
|
if (firstStart === null) {
|
||||||
lastEnd = updatedEvent.timeEnd;
|
firstStart = updatedEvent.timeStart;
|
||||||
|
}
|
||||||
|
lastEnd = updatedEvent.timeEnd;
|
||||||
|
|
||||||
// check if we go over midnight, account for eventual gaps
|
// check if we go over midnight, account for eventual gaps
|
||||||
const gapOverMidnight = previousStart !== null && checkIsNextDay(previousStart, updatedEvent.timeStart);
|
const gapOverMidnight = previousStart !== null && checkIsNextDay(previousStart, updatedEvent.timeStart);
|
||||||
const durationOverMidnight = updatedEvent.timeStart > updatedEvent.timeEnd;
|
const durationOverMidnight = updatedEvent.timeStart > updatedEvent.timeEnd;
|
||||||
if (gapOverMidnight || durationOverMidnight) {
|
if (gapOverMidnight || durationOverMidnight) {
|
||||||
daySpan++;
|
daySpan++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +123,7 @@ export function generate(
|
|||||||
// !!! this must happen after handling the links
|
// !!! this must happen after handling the links
|
||||||
if (isOntimeDelay(updatedEvent)) {
|
if (isOntimeDelay(updatedEvent)) {
|
||||||
accumulatedDelay += updatedEvent.duration;
|
accumulatedDelay += updatedEvent.duration;
|
||||||
} else if (isOntimeEvent(updatedEvent)) {
|
} else if (isOntimeEvent(updatedEvent) && !updatedEvent.skip) {
|
||||||
const eventStart = updatedEvent.timeStart;
|
const eventStart = updatedEvent.timeStart;
|
||||||
|
|
||||||
// we only affect positive delays (time forwards)
|
// we only affect positive delays (time forwards)
|
||||||
|
|||||||
Reference in New Issue
Block a user