mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-05 07:28:01 +00:00
023aac4ead
* refactor: extract utilities and types * refactor: extract and simplify progress bar logic * refactor: duration validation handles midnight * fix: prevent stale event loader * refactor: consider next event in timer invalidation * refactor: reload changes on changed roll target * refactor: timer load accounts for midnight * fix: issues with midnight on roll * refactor: prevent stale secondary event
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
export type TimeEntryField = 'timeStart' | 'timeEnd' | 'durationOverride';
|
|
|
|
/**
|
|
* @description Checks which field the value relates to
|
|
*/
|
|
export const handleTimeEntry = (
|
|
field: TimeEntryField,
|
|
val: number,
|
|
timeStart: number,
|
|
timeEnd: number,
|
|
): { start: number; end: number; durationOverride: boolean } => {
|
|
let start = timeStart;
|
|
let end = timeEnd;
|
|
let durationOverride = false;
|
|
|
|
if (field === 'timeStart') {
|
|
start = val;
|
|
} else if (field === 'timeEnd') {
|
|
end = val;
|
|
} else {
|
|
durationOverride = field === 'durationOverride';
|
|
}
|
|
return { start, end, durationOverride };
|
|
};
|
|
|
|
/**
|
|
* @description Validates time entry
|
|
*/
|
|
export const validateEntry = (
|
|
field: TimeEntryField,
|
|
value: number,
|
|
timeStart: number,
|
|
timeEnd: number,
|
|
): { value: boolean; warnings: { start?: string; end?: string; duration?: string } } => {
|
|
const validate = { value: true, warnings: { start: '', end: '', duration: '' } };
|
|
|
|
const { start, end } = handleTimeEntry(field, value, timeStart, timeEnd);
|
|
|
|
if (end < start) {
|
|
validate.warnings.start = 'Start time later than end time';
|
|
}
|
|
|
|
return validate;
|
|
};
|