33 lines
1.3 KiB
TypeScript
33 lines
1.3 KiB
TypeScript
import { WorkingProgressStatus } from '@generated/types';
|
|
import dayjs from 'dayjs';
|
|
|
|
export function assertUnreachable(value: never): never {
|
|
throw new Error(`Unhandled scenario: ${value}`);
|
|
}
|
|
|
|
export function toFormattedDate({ value }: { value: string }): string {
|
|
const date = new Date(value);
|
|
const day = dayjs(date).format('DD.MM.YYYY');
|
|
return day;
|
|
}
|
|
|
|
export function toBgColorByProgressStatus(value: WorkingProgressStatus): string {
|
|
if (value === WorkingProgressStatus.InProgress) return 'yellow.500';
|
|
if (value === WorkingProgressStatus.Frozen) return 'blue.500';
|
|
if (value === WorkingProgressStatus.Complete) return 'green.500';
|
|
assertUnreachable(value);
|
|
}
|
|
|
|
export function toFgColorByProgressStatus(value: WorkingProgressStatus): string {
|
|
if (value === WorkingProgressStatus.InProgress) return 'fg.warning';
|
|
if (value === WorkingProgressStatus.Frozen) return 'fg.info';
|
|
if (value === WorkingProgressStatus.Complete) return 'fg.success';
|
|
assertUnreachable(value);
|
|
}
|
|
|
|
export function toWorkingProgressStatusLabel(value: WorkingProgressStatus): string {
|
|
if (value === WorkingProgressStatus.InProgress) return 'In progress';
|
|
if (value === WorkingProgressStatus.Frozen) return 'Frozen';
|
|
if (value === WorkingProgressStatus.Complete) return 'Complete';
|
|
assertUnreachable(value);
|
|
}
|