mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-11 02:13:48 +00:00
42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import {
|
|
calculateDuration,
|
|
checkIsNextDay,
|
|
dayInMs,
|
|
getTimeFromPrevious,
|
|
millisToString,
|
|
removeTrailingZero,
|
|
} from 'ontime-utils';
|
|
|
|
import { formatDuration } from '../../../common/utils/time';
|
|
|
|
export function formatDelay(timeStart: number, delay: number): string | undefined {
|
|
if (!delay) return;
|
|
|
|
const delayedStart = Math.max(0, timeStart + delay);
|
|
|
|
const timeTag = removeTrailingZero(millisToString(delayedStart));
|
|
return `New start ${timeTag}`;
|
|
}
|
|
|
|
export function formatOverlap(timeStart: number, previousStart?: number, previousEnd?: number): string | undefined {
|
|
const noPreviousElement = previousEnd === undefined || previousStart === undefined;
|
|
if (noPreviousElement) return;
|
|
|
|
const normalisedDuration = calculateDuration(previousStart, previousEnd);
|
|
const timeFromPrevious = getTimeFromPrevious(timeStart, previousStart, previousEnd, normalisedDuration);
|
|
if (timeFromPrevious === 0) return;
|
|
|
|
if (checkIsNextDay(previousStart, timeStart, normalisedDuration)) {
|
|
const previousCrossMidnight = previousStart > previousEnd;
|
|
const normalisedPreviousEnd = previousCrossMidnight ? previousEnd + dayInMs : previousEnd;
|
|
|
|
const gap = dayInMs - normalisedPreviousEnd + timeStart;
|
|
if (gap === 0) return;
|
|
const gapString = formatDuration(Math.abs(gap), false);
|
|
return `Gap ${gapString} (next day)`;
|
|
}
|
|
|
|
const overlapString = formatDuration(Math.abs(timeFromPrevious), false);
|
|
return `${timeFromPrevious < 0 ? 'Overlap' : 'Gap'} ${overlapString}`;
|
|
}
|