mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-20 06:29:07 +00:00
events with 0 duration dose not contribute to next day calculation (#1099)
This commit is contained in:
committed by
GitHub
parent
1b448835cd
commit
975356f4f4
@@ -170,6 +170,19 @@ describe('generate()', () => {
|
|||||||
expect(initResult.totalDuration).toBe(500 - 100);
|
expect(initResult.totalDuration).toBe(500 - 100);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('calculates total duration with 0 duration events without causing a next day', () => {
|
||||||
|
const testRundown: OntimeRundown = [
|
||||||
|
{ type: SupportedEvent.Event, id: '1', timeStart: 100, timeEnd: 100, duration: 0 } as OntimeEvent,
|
||||||
|
{ type: SupportedEvent.Event, id: '2', timeStart: 100, timeEnd: 300 } 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);
|
||||||
|
expect(initResult.order.length).toBe(4);
|
||||||
|
expect(initResult.totalDuration).toBe(500 - 100);
|
||||||
|
});
|
||||||
|
|
||||||
it('calculates total duration across days with gap', () => {
|
it('calculates total duration across days with gap', () => {
|
||||||
const testRundown: OntimeRundown = [
|
const testRundown: OntimeRundown = [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ export function generate(
|
|||||||
let daySpan = 0;
|
let daySpan = 0;
|
||||||
let previousStart: MaybeNumber = null;
|
let previousStart: MaybeNumber = null;
|
||||||
let previousEnd: MaybeNumber = null;
|
let previousEnd: MaybeNumber = null;
|
||||||
|
let previousDuration: MaybeNumber = null;
|
||||||
|
|
||||||
for (let i = 0; i < initialRundown.length; i++) {
|
for (let i = 0; i < initialRundown.length; i++) {
|
||||||
const currentEvent = initialRundown[i];
|
const currentEvent = initialRundown[i];
|
||||||
@@ -111,7 +112,8 @@ export function generate(
|
|||||||
lastEnd = updatedEvent.timeEnd;
|
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, previousDuration);
|
||||||
const durationOverMidnight = updatedEvent.timeStart > updatedEvent.timeEnd;
|
const durationOverMidnight = updatedEvent.timeStart > updatedEvent.timeEnd;
|
||||||
if (gapOverMidnight || durationOverMidnight) {
|
if (gapOverMidnight || durationOverMidnight) {
|
||||||
daySpan++;
|
daySpan++;
|
||||||
@@ -134,6 +136,7 @@ export function generate(
|
|||||||
updatedEvent.delay = accumulatedDelay;
|
updatedEvent.delay = accumulatedDelay;
|
||||||
previousStart = updatedEvent.timeStart;
|
previousStart = updatedEvent.timeStart;
|
||||||
previousEnd = updatedEvent.timeEnd;
|
previousEnd = updatedEvent.timeEnd;
|
||||||
|
previousDuration = updatedEvent.duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
order.push(updatedEvent.id);
|
order.push(updatedEvent.id);
|
||||||
|
|||||||
@@ -8,6 +8,6 @@
|
|||||||
* 09:00 - 10:00
|
* 09:00 - 10:00
|
||||||
* 09:30 - 10:30
|
* 09:30 - 10:30
|
||||||
*/
|
*/
|
||||||
export function checkIsNextDay(previousStart: number, timeStart: number): boolean {
|
export function checkIsNextDay(previousStart: number, timeStart: number, previousDuration?: number): boolean {
|
||||||
return timeStart <= previousStart;
|
return previousDuration === 0 ? false : timeStart <= previousStart;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user