mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-08 08:53:51 +00:00
8d2db7ffcd
* feat: add group start time to state * refactor: calculate expected times when offset mode changes * feat: show relative data in ui * fixup! feat: add group start time to state * fixup! refactor: calculate expected times when offset mode changes * fixup! feat: show relative data in ui * try to handle multiday * show planed/expected rundown end day offset values * refactor: style tweaks to timers * refactor: cleanup data use * day offset * update tests * test getExpectedStart multiday * write start epoch to restore file * current day in relative mode * remove todo * move find day offset to utils --------- Co-authored-by: arc-alex <ac@omnivox.dk>
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { MaybeNumber, TimerType } from 'ontime-types';
|
|
import { dayInMs, millisToString } from 'ontime-utils';
|
|
|
|
import { timerPlaceholder, timerPlaceholderMin } from '../../common/utils/styleUtils';
|
|
|
|
/**
|
|
* Composition to stop negative timers from being formatted
|
|
* They should show a due string instead
|
|
*
|
|
* This is used for cases when a negative timer is unwanted
|
|
* eg: count down to a milestone
|
|
*/
|
|
export function formatDueTime(
|
|
time: MaybeNumber,
|
|
segments: number = 3,
|
|
direction?: TimerType.CountDown | TimerType.CountUp,
|
|
dueString = 'due',
|
|
): string {
|
|
if (time !== null && time <= 0) return dueString;
|
|
return formattedTime(time, segments, direction);
|
|
}
|
|
|
|
/**
|
|
* Encapsulates the logic for formatting time in overview
|
|
*/
|
|
export function formattedTime(
|
|
time: MaybeNumber,
|
|
segments: number = 3,
|
|
direction?: TimerType.CountDown | TimerType.CountUp,
|
|
): string {
|
|
return millisToString(time, { fallback: segments === 3 ? timerPlaceholder : timerPlaceholderMin, direction });
|
|
}
|
|
|
|
/**
|
|
* Calculates how long a time is and how many days it spans
|
|
*/
|
|
export function calculateEndAndDaySpan(end: MaybeNumber): [MaybeNumber, number] {
|
|
if (end !== null && end > dayInMs) {
|
|
return [end % dayInMs, Math.floor(end / dayInMs)];
|
|
}
|
|
|
|
return [end, 0];
|
|
}
|