From 518ed7fc4e19d5e2df017021ed5a8094ab2f5925 Mon Sep 17 00:00:00 2001 From: Denis Papec Date: Sat, 25 Nov 2023 04:32:38 +0000 Subject: [PATCH] Feature: Support previous days option in Calendar Agenda (#2375) Signed-off-by: Denis Papec --- docs/widgets/services/calendar.md | 1 + src/utils/config/service-helpers.js | 2 ++ src/widgets/calendar/agenda.jsx | 4 +++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/widgets/services/calendar.md b/docs/widgets/services/calendar.md index 990c01c26..b1bc0ea47 100644 --- a/docs/widgets/services/calendar.md +++ b/docs/widgets/services/calendar.md @@ -33,6 +33,7 @@ widget: type: calendar view: agenda maxEvents: 10 # optional - defaults to 10 + previousDays: 3 # optional - shows events since three days ago - defaults to 0 integrations: # same as in Monthly view example ``` diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index 3a11954a8..b054fb960 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -351,6 +351,7 @@ export function cleanServiceGroups(groups) { firstDayInWeek, integrations, maxEvents, + previousDays, view, // coinmarketcap @@ -517,6 +518,7 @@ export function cleanServiceGroups(groups) { if (firstDayInWeek) cleanedService.widget.firstDayInWeek = firstDayInWeek; if (view) cleanedService.widget.view = view; if (maxEvents) cleanedService.widget.maxEvents = maxEvents; + if (previousDays) cleanedService.widget.previousDays = previousDays; } } diff --git a/src/widgets/calendar/agenda.jsx b/src/widgets/calendar/agenda.jsx index a854d277d..1ec4bb2e8 100644 --- a/src/widgets/calendar/agenda.jsx +++ b/src/widgets/calendar/agenda.jsx @@ -48,7 +48,9 @@ export default function Agenda({ service, colorVariants, showDate }) { const eventsArray = Object.keys(events) .filter( - (eventKey) => showDate.startOf("day").toUnixInteger() <= events[eventKey].date?.startOf("day").toUnixInteger(), + (eventKey) => + showDate.minus({ days: widget?.previousDays ?? 0 }).startOf("day").ts <= + events[eventKey].date?.startOf("day").ts, ) .map((eventKey) => events[eventKey]) .sort((a, b) => a.date - b.date)