diff --git a/resources/ts/lib/tasks.ts b/resources/ts/lib/tasks.ts index 490dd95..a95ce5e 100644 --- a/resources/ts/lib/tasks.ts +++ b/resources/ts/lib/tasks.ts @@ -35,11 +35,19 @@ export function isTemporary(task: Task): boolean { } export function taskNextReset(task: Task): Date | null { - return nextCronReset(task.check_date ?? new Date(), task.reset_cron, task.id); + return nextCronReset( + task.check_date ?? new Date(), + task.reset_cron, + task.id, + ); } export function taskFutureReset(task: Task): Date | null { - return nextCronReset(taskNextReset(task) ?? new Date(), task.reset_cron, task.id); + return nextCronReset( + taskNextReset(task) ?? new Date(), + task.reset_cron, + task.id, + ); } export function taskCompleted(task: Task): boolean { @@ -53,6 +61,18 @@ export function taskCompleted(task: Task): boolean { return nextReset.getTime() > new Date().getTime(); } +export function fallbackDate(task: Task): Date { + return new Date( + task.created_at.getFullYear() - 100, + task.created_at.getMonth(), + task.created_at.getDate(), + 0, + 0, + 0, + 0, + ); +} + export function sortTasks( tasks: Task[], sortType: SortType, @@ -81,8 +101,8 @@ export function sortTasks( .sort( (a: Task, b: Task) => (reverse ? -1 : 1) * - ((a.check_date ?? a.created_at).getTime() - - (b.check_date ?? b.created_at).getTime()), + ((a.check_date ?? fallbackDate(a)).getTime() - + (b.check_date ?? fallbackDate(b)).getTime()), ); case SortType.RESET_DATE: return tasks @@ -90,8 +110,8 @@ export function sortTasks( .sort( (a: Task, b: Task) => (reverse ? -1 : 1) * - (taskNextReset(a) ?? a.created_at).getTime() - - (taskNextReset(b) ?? b.created_at).getTime(), + (taskNextReset(a) ?? fallbackDate(a)).getTime() - + (taskNextReset(b) ?? fallbackDate(b)).getTime(), ); case SortType.NAME: return tasks