diff --git a/src/cards/trash-card/formSchemas.ts b/src/cards/trash-card/formSchemas.ts index 96f86d3..64a31d3 100644 --- a/src/cards/trash-card/formSchemas.ts +++ b/src/cards/trash-card/formSchemas.ts @@ -115,6 +115,14 @@ const getSchema = (customLocalize: LocalizeFunc, currentValues: TrashCardConfig, selector: { text: {} } + }, + { + name: 'only_all_day_events', + label: customLocalize(`editor.form.only_all_day_events.title`), + helper: customLocalize(`editor.form.only_all_day_events.helper`), + selector: { + boolean: {} + } } ]; diff --git a/src/cards/trash-card/trash-card-config.ts b/src/cards/trash-card/trash-card-config.ts index 3e9496e..53439df 100644 --- a/src/cards/trash-card/trash-card-config.ts +++ b/src/cards/trash-card/trash-card-config.ts @@ -66,6 +66,7 @@ interface TrashCardConfig { view_layout?: any; layout: any; type: string; + only_all_day_events?: boolean; } type CardStyleConfig = Pick; @@ -95,7 +96,7 @@ const entityCardConfigStruct = assign( debug: optional(boolean()), icon_size: optional(integer()), with_label: optional(boolean()), - + only_all_day_events: optional(boolean()), pattern: optional(array( object({ color: optional(string()), diff --git a/src/translations/en.json b/src/translations/en.json index 975aa3f..f67869c 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -62,6 +62,10 @@ "location": { "title": "Location", "helper": "Filter events by given location, if none is given all are used." + }, + "only_all_day_events": { + "title": "Only all-day events", + "helper": "If you only want to use all-day entries, please activate this option, otherwise all entries will be used." } }, "card": { diff --git a/src/utils/findActiveEvents.test.ts b/src/utils/findActiveEvents.test.ts index 38f2868..8f25653 100644 --- a/src/utils/findActiveEvents.test.ts +++ b/src/utils/findActiveEvents.test.ts @@ -42,7 +42,8 @@ describe(`findActiveEvents`, () => { const result = findActiveEvents(data as CalendarEvent[], { config: { filter_events: false, - pattern: [] + pattern: [], + only_all_day_events: false }, dropAfter: false, now: new Date('2024-03-29T12:09:08.879Z'), diff --git a/src/utils/findActiveEvents.ts b/src/utils/findActiveEvents.ts index 644cf58..58811da 100644 --- a/src/utils/findActiveEvents.ts +++ b/src/utils/findActiveEvents.ts @@ -8,6 +8,8 @@ interface Config { pattern: Required['pattern']; // eslint-disable-next-line @typescript-eslint/naming-convention filter_events: TrashCardConfig['filter_events']; + // eslint-disable-next-line @typescript-eslint/naming-convention + only_all_day_events: TrashCardConfig['only_all_day_events']; } interface Options { @@ -47,9 +49,14 @@ const findActiveEvents = (items: CalendarEvent[], { config, now, dropAfter, filt return false; } + if (config.only_all_day_events && !item.isWholeDayEvent) { + return false; + } + if (item.isWholeDayEvent) { return item.date.end > now; } + if (item.date.end < now) { return false; } diff --git a/src/utils/getCalendarData.ts b/src/utils/getCalendarData.ts index 8603b53..09c4470 100644 --- a/src/utils/getCalendarData.ts +++ b/src/utils/getCalendarData.ts @@ -58,7 +58,9 @@ const getCalendarData = async ( config: { pattern: config.pattern!, // eslint-disable-next-line @typescript-eslint/naming-convention - filter_events: config.filter_events + filter_events: config.filter_events, + // eslint-disable-next-line @typescript-eslint/naming-convention + only_all_day_events: config.only_all_day_events }, dropAfter, now,