fix: task sorting
This commit is contained in:
+21
-44
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user