src/lib/components/TasksFeed.svelte (view raw)
1<script lang="ts">
2 import { DateTime } from "luxon";
3 import TasksList from "./TasksList.svelte";
4
5 let { tasks = [] }: { tasks: Task[] } = $props();
6
7 const today = DateTime.now().endOf("day");
8
9 let { previousTasks, currentTasks, nextTasks } = $derived(
10 tasks.reduce<Record<string, Task[]>>(
11 (acc, task) => {
12 if (task.endTime) acc.previousTasks.push(task);
13 else if (task.dueDate) {
14 const dueDate = DateTime.fromJSDate(task.dueDate);
15 if (dueDate <= today) acc.currentTasks.push(task);
16 else acc.nextTasks.push(task);
17 } else acc.currentTasks.push(task);
18 return acc;
19 },
20 { previousTasks: [], currentTasks: [], nextTasks: [] }
21 )
22 );
23</script>
24
25<TasksList title="À faire" tasks={currentTasks} openOnLoad />
26<TasksList title="Plus tard" tasks={nextTasks} />
27<TasksList title="Fait" tasks={previousTasks} />