diff --git a/docs/widgets/services/calendar.md b/docs/widgets/services/calendar.md index 4c8cbd3f..f9ed6284 100644 --- a/docs/widgets/services/calendar.md +++ b/docs/widgets/services/calendar.md @@ -41,6 +41,7 @@ widget: view: agenda maxEvents: 10 # optional - defaults to 10 showTime: true # optional - show time for event happening today - defaults to false + 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 02c76290..c2319781 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -352,6 +352,7 @@ export function cleanServiceGroups(groups) { integrations, maxEvents, showTime, + previousDays, view, // coinmarketcap @@ -518,6 +519,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; if (showTime) cleanedService.widget.showTime = showTime; } } diff --git a/src/widgets/calendar/agenda.jsx b/src/widgets/calendar/agenda.jsx index 018ad498..90359269 100644 --- a/src/widgets/calendar/agenda.jsx +++ b/src/widgets/calendar/agenda.jsx @@ -14,7 +14,9 @@ export default function Agenda({ service, colorVariants, events, 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) diff --git a/src/widgets/calendar/integrations/radarr.jsx b/src/widgets/calendar/integrations/radarr.jsx index fa78bf65..945eadd9 100644 --- a/src/widgets/calendar/integrations/radarr.jsx +++ b/src/widgets/calendar/integrations/radarr.jsx @@ -23,27 +23,35 @@ export default function Integration({ config, params, setEvents, hideErrors = fa const physicalTitle = `${event.title} - ${t("calendar.physicalRelease")}`; const digitalTitle = `${event.title} - ${t("calendar.digitalRelease")}`; - eventsToAdd[cinemaTitle] = { - title: cinemaTitle, - date: DateTime.fromISO(event.inCinemas), - color: config?.color ?? "amber", - isCompleted: event.isAvailable, - additional: "", - }; - eventsToAdd[physicalTitle] = { - title: physicalTitle, - date: DateTime.fromISO(event.physicalRelease), - color: config?.color ?? "cyan", - isCompleted: event.isAvailable, - additional: "", - }; - eventsToAdd[digitalTitle] = { - title: digitalTitle, - date: DateTime.fromISO(event.digitalRelease), - color: config?.color ?? "emerald", - isCompleted: event.isAvailable, - additional: "", - }; + if (event.inCinemas) { + eventsToAdd[cinemaTitle] = { + title: cinemaTitle, + date: DateTime.fromISO(event.inCinemas), + color: config?.color ?? "amber", + isCompleted: event.hasFile, + additional: "", + }; + } + + if (event.physicalRelease) { + eventsToAdd[physicalTitle] = { + title: physicalTitle, + date: DateTime.fromISO(event.physicalRelease), + color: config?.color ?? "cyan", + isCompleted: event.hasFile, + additional: "", + }; + } + + if (event.digitalRelease) { + eventsToAdd[digitalTitle] = { + title: digitalTitle, + date: DateTime.fromISO(event.digitalRelease), + color: config?.color ?? "emerald", + isCompleted: event.hasFile, + additional: "", + }; + } }); setEvents((prevEvents) => ({ ...prevEvents, ...eventsToAdd })); diff --git a/src/widgets/kubernetes/component.jsx b/src/widgets/kubernetes/component.jsx index 154a277b..2454f2aa 100644 --- a/src/widgets/kubernetes/component.jsx +++ b/src/widgets/kubernetes/component.jsx @@ -21,7 +21,7 @@ export default function Component({ service }) { return ; } - if (statusData && statusData.status !== "running") { + if (statusData && !(statusData.status.includes("running") || statusData.status.includes("partial"))) { return (