diff --git a/src/widgets/vikunja/component.jsx b/src/widgets/vikunja/component.jsx index 282b0a9ef..67220ce67 100644 --- a/src/widgets/vikunja/component.jsx +++ b/src/widgets/vikunja/component.jsx @@ -9,14 +9,10 @@ export default function Component({ service }) { const { widget } = service; const { data: projectsData, error: projectsError } = useWidgetAPI(widget, "projects"); - const { data: tasksData, error: tasksError } = useWidgetAPI(widget, "tasks", { - filter: "done=false&&percent_done<1", - sort_by: "due_date", - }); + const { data: tasksData, error: tasksError } = useWidgetAPI(widget, "tasks"); if (projectsError || tasksError) { - const vikunjaError = projectsError ?? tasksError; - return ; + return ; } if (!projectsData || !tasksData) { @@ -30,52 +26,42 @@ export default function Component({ service }) { ); } - const projects = projectsData.filter((project) => project.id > 0); + const projects = projectsData.filter((project) => project.id); - const tasks7d = tasksData.filter( - (task) => - new Date(task.dueDate).getTime() > new Date("0001-01-01T00:00:00Z").getTime() && - new Date(task.dueDate).getTime() <= new Date(Date.now() + 604800000), - ); - - const overdue = tasksData.filter( - (task) => - new Date(task.dueDate).getTime() > new Date("0001-01-01T00:00:00Z").getTime() && - new Date(task.dueDate).getTime() <= new Date(Date.now()), - ); - - const inProgress = tasksData.filter((task) => task.inProgress === true); + const vikunjaDefaultDueDate = new Date("0001-01-01T00:00:00Z"); + const oneWeekFromNow = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000); + const tasksWithDueDate = tasksData.filter((task) => task.dueDate > vikunjaDefaultDueDate); + const tasks7d = tasksWithDueDate.filter((task) => task.dueDate <= oneWeekFromNow); + const tasksOverdue = tasksWithDueDate.filter((task) => task.dueDate <= new Date(Date.now())); + const tasksInProgress = tasksData.filter((task) => task.inProgress); return ( <> - - + + {widget.enableTaskList && - tasksData - ?.filter((task) => new Date(task.dueDate).getTime() > new Date("0001-01-01T00:00:00Z").getTime()) - .slice(0, 5) - .map((task) => ( -
-
-
- {task.title} -
-
-
- {t("common.relativeDate", { - value: task.dueDate, - formatParams: { value: { style: "narrow", numeric: "auto" } }, - })} + tasksWithDueDate.slice(0, 5).map((task) => ( +
+
+
+ {task.title}
- ))} +
+ {t("common.relativeDate", { + value: task.dueDate, + formatParams: { value: { style: "narrow", numeric: "auto" } }, + })} +
+
+ ))} ); } diff --git a/src/widgets/vikunja/widget.js b/src/widgets/vikunja/widget.js index 8c1b6ab04..168a05cc2 100644 --- a/src/widgets/vikunja/widget.js +++ b/src/widgets/vikunja/widget.js @@ -10,14 +10,13 @@ const widget = { endpoint: "projects", }, tasks: { - endpoint: "tasks/all", - params: ["filter", "sort_by"], + endpoint: "tasks/all?filter=done%3Dfalse&sort_by=due_date", map: (data) => asJson(data).map((task) => ({ id: task.id, title: task.title, priority: task.priority, - dueDate: task.due_date, + dueDate: new Date(task.due_date), inProgress: task.percent_done > 0 && task.percent_done < 1, })), },