diff --git a/resources/ts/lib/tasks.ts b/resources/ts/lib/tasks.ts index a95ce5e..33e27b4 100644 --- a/resources/ts/lib/tasks.ts +++ b/resources/ts/lib/tasks.ts @@ -63,9 +63,9 @@ export function taskCompleted(task: Task): boolean { export function fallbackDate(task: Task): Date { return new Date( - task.created_at.getFullYear() - 100, - task.created_at.getMonth(), - task.created_at.getDate(), + (task.check_date ?? task.created_at).getFullYear() + 100, + (task.check_date ?? task.created_at).getMonth(), + (task.check_date ?? task.created_at).getDate(), 0, 0, 0, @@ -73,54 +73,31 @@ export function fallbackDate(task: Task): Date { ); } -export function sortTasks( - tasks: Task[], +export function taskSortFunction( sortType: SortType, reverse: boolean, -): Task[] { +): (a: Task, b: Task) => number { switch (sortType) { case SortType.CREATED_AT: - return tasks - .slice() - .sort( - (a: Task, b: Task) => - (reverse ? -1 : 1) * - (a.created_at.getTime() - b.created_at.getTime()), - ); + return (a: Task, b: Task) => + (reverse ? -1 : 1) * + (a.created_at.getTime() - b.created_at.getTime()); case SortType.UPDATED_AT: - return tasks - .slice() - .sort( - (a: Task, b: Task) => - (reverse ? -1 : 1) * - (a.updated_at.getTime() - b.updated_at.getTime()), - ); + return (a: Task, b: Task) => + (reverse ? -1 : 1) * + (a.updated_at.getTime() - b.updated_at.getTime()); case SortType.CHECK_DATE: - return tasks - .slice() - .sort( - (a: Task, b: Task) => - (reverse ? -1 : 1) * - ((a.check_date ?? fallbackDate(a)).getTime() - - (b.check_date ?? fallbackDate(b)).getTime()), - ); + return (a: Task, b: Task) => + (reverse ? -1 : 1) * + ((a.check_date ?? fallbackDate(a)).getTime() - + (b.check_date ?? fallbackDate(b)).getTime()); case SortType.RESET_DATE: - return tasks - .slice() - .sort( - (a: Task, b: Task) => - (reverse ? -1 : 1) * - (taskNextReset(a) ?? fallbackDate(a)).getTime() - - (taskNextReset(b) ?? fallbackDate(b)).getTime(), - ); + return (a: Task, b: Task) => + (reverse ? -1 : 1) * + ((taskNextReset(a) ?? fallbackDate(a)).getTime() - + (taskNextReset(b) ?? fallbackDate(b)).getTime()); case SortType.NAME: - return tasks - .slice() - .sort( - (a: Task, b: Task) => - (reverse ? -1 : 1) * a.name.localeCompare(b.name), - ); - default: - return tasks.slice(); + return (a: Task, b: Task) => + (reverse ? -1 : 1) * a.name.localeCompare(b.name); } } diff --git a/resources/ts/views/ListView.vue b/resources/ts/views/ListView.vue index 73fba03..37294ae 100644 --- a/resources/ts/views/ListView.vue +++ b/resources/ts/views/ListView.vue @@ -11,7 +11,7 @@ import { } from "@lucide/vue"; import TaskItem from "@/components/TaskItem.vue"; import ListOptions from "@/components/ListOptions.vue"; -import { taskCompleted, sortTasks, newTemporaryTask } from "@/lib/tasks"; +import { taskCompleted, taskSortFunction, newTemporaryTask } from "@/lib/tasks"; import { SortType } from "@/enums"; import { booleanCookieRef, enumCookieRef } from "@/lib/cookies"; import { useAlertStore } from "@/stores/alerts"; @@ -75,7 +75,7 @@ function fetchTasks(requestedList: string) { } function reSortTasks(update = false) { - tasks.value = sortTasks(tasks.value, sortType.value, sortReverse.value); + tasks.value.sort(taskSortFunction(sortType.value, sortReverse.value)); if (update) { updateTitle(); if (tasks.value.length && list.value) {