diff --git a/docs/widgets/services/vikunja.md b/docs/widgets/services/vikunja.md index f5563701c..a9918efff 100644 --- a/docs/widgets/services/vikunja.md +++ b/docs/widgets/services/vikunja.md @@ -15,9 +15,12 @@ Allowed fields: `["projects", "tasks7d", "tasksOverdue", "tasksInProgress"]`. "Tasks In Progress" lists the number of tasks with a progress percentage above 0% and below 100%. +A list of the next 5 tasks ordered by due date is disabled by default, but can be enabled with the `enableTaskList` option. + ```yaml widget: type: vikunja url: http[s]://vikunja.host.or.ip[:port] key: vikunjaapikey + enableTaskList: true # optional, defaults to false ``` diff --git a/src/widgets/vikunja/component.jsx b/src/widgets/vikunja/component.jsx index 677a915f0..8f278a481 100644 --- a/src/widgets/vikunja/component.jsx +++ b/src/widgets/vikunja/component.jsx @@ -30,6 +30,11 @@ function getInProgress(task) { return task.inProgress === true; } +// filter out Tasks with a bogus due date +function getDue(task) { + return new Date(task.dueDate).getTime() > new Date("0001-01-01T00:00:00Z").getTime(); +} + export default function Component({ service }) { const { t } = useTranslation(); const { widget } = service; @@ -62,12 +67,35 @@ export default function Component({ service }) { const inProgress = tasksData.filter(getInProgress); return ( - // <> - - - - - - + <> + + + + + + + {widget.enableTaskList && + tasksData + ?.filter(getDue) + .slice(0, 5) + .map((task) => ( +
+
+
+ {task.title} +
+
+
+ {t("common.relativeDate", { + value: task.dueDate, + formatParams: { value: { style: "narrow", numeric: "auto" } }, + })} +
+
+ ))} + ); }