mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-18 13:44:12 +00:00
More rundown metadata (#1429)
* add dayOffset to OntimeEvent * refactor: isNewLatest * calculate totalDays * refactor: getTimeFromPrevious * add gap as dataset in OntimeEvent * use in ui * format overlap is just a simple text formatting, big test is not needed * add new fields where needed * update apply delay * show nex day eaven if there is no gap * create test * use buildin day offset in timeline * remove todo * consistent naming * make a calculateDayOffset util for rundownCache * refactor: checkIsNextDay to use dayOffset * spelling Co-authored-by: Carlos Valente <34649812+cpvalente@users.noreply.github.com> * remove unneeded test * remove todo * update test db * use data-testid * spelling Co-authored-by: Carlos Valente <34649812+cpvalente@users.noreply.github.com> * update comments * remove null option --------- Co-authored-by: Carlos Valente <34649812+cpvalente@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
9ba40c35a1
commit
e9a7cd0400
@@ -1,41 +1,27 @@
|
||||
import type { OntimeEvent } from 'ontime-types';
|
||||
|
||||
import { dayInMs } from './conversionUtils.js';
|
||||
|
||||
/**
|
||||
* Utility function checks whether a given event is the day after from its predecessor
|
||||
* We consider an event to be the day after, if it begins before the start of the previous
|
||||
* @example day after
|
||||
* 09:00 - 10:00
|
||||
* 08:00 - 10:30
|
||||
* @example day after
|
||||
* 23:00 - 00:00
|
||||
* 02:00 - 03:00
|
||||
* @example same day
|
||||
* 09:00 - 10:00
|
||||
* 09:30 - 10:30
|
||||
* @example same day, but previous crosses midnight
|
||||
* 23:00 - 01:00
|
||||
* 02:00 - 03:00
|
||||
* @example same day, but previous crosses midnight (with overlap)
|
||||
* 22:00 - 02:00
|
||||
* 01:00 - 03:00
|
||||
*/
|
||||
export function checkIsNextDay(previousStart: number, timeStart: number, previousDuration: number): boolean {
|
||||
if (previousDuration === 0) {
|
||||
export function checkIsNextDay(
|
||||
current: Pick<OntimeEvent, 'timeStart' | 'dayOffset'>,
|
||||
previous?: Pick<OntimeEvent, 'timeStart' | 'duration' | 'dayOffset'>,
|
||||
): boolean {
|
||||
if (!previous) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const cappedStart = previousStart % dayInMs;
|
||||
if (timeStart <= cappedStart) {
|
||||
const normalisedPreviousEnd = cappedStart + previousDuration;
|
||||
if (normalisedPreviousEnd === dayInMs) {
|
||||
return true;
|
||||
}
|
||||
// handle exception for an event that finishes exactly at midnight
|
||||
if (normalisedPreviousEnd > dayInMs) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
// if the day offsets are the same it can't be the next day
|
||||
if (current.dayOffset <= previous.dayOffset) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
// if the previous event crossed midnight then the current is the same day
|
||||
if (previous.timeStart + previous.duration > dayInMs) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user