diff --git a/README.md b/README.md index 12356da..4444b53 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,7 @@ All the options are available in the lovelace editor but you can use `yaml` if y | `entity` | string | Required | Entity | | `layout` | string | Optional | Layout of the card. Vertical, horizontal and default layout are supported | | `fill_container` | boolean | `false` | Fill container or not. Useful when card is in a grid, vertical or horizontal layout | +| `next_days` | number | 2 | How many times the card will look into the future to find the next event | | `settings` | [Settings](#settings) | Required | Settings to detect the kind of trash and how to display | diff --git a/src/cards/trash-card/trash-card-config.ts b/src/cards/trash-card/trash-card-config.ts index fac1597..20d1ab8 100644 --- a/src/cards/trash-card/trash-card-config.ts +++ b/src/cards/trash-card/trash-card-config.ts @@ -2,7 +2,7 @@ import type { EntitySharedConfig } from 'lovelace-mushroom/src/shared/config/ent import { layoutStruct } from 'lovelace-mushroom/src/utils/layout'; import type { LovelaceCardConfig } from 'lovelace-mushroom/src/ha'; import { lovelaceCardConfigStruct } from 'lovelace-mushroom/src/shared/config/lovelace-card-config'; -import { assign, boolean, object, optional, string } from 'superstruct'; +import { assign, boolean, integer, object, optional, string } from 'superstruct'; export interface TrashItem { label?: string; @@ -22,6 +22,8 @@ EntityWithOutIcon & { others?: TrashItem; }; // eslint-disable-next-line @typescript-eslint/naming-convention + next_days?: number; + // eslint-disable-next-line @typescript-eslint/naming-convention full_size?: boolean; }; @@ -35,6 +37,8 @@ export const entityCardConfigStruct = assign( fill_container: optional(boolean()), // eslint-disable-next-line @typescript-eslint/naming-convention full_size: optional(boolean()), + // eslint-disable-next-line @typescript-eslint/naming-convention + next_days: optional(integer()), settings: optional( object({ organic: optional( diff --git a/src/cards/trash-card/trash-card-editor.ts b/src/cards/trash-card/trash-card-editor.ts index fb20840..17289c1 100644 --- a/src/cards/trash-card/trash-card-editor.ts +++ b/src/cards/trash-card/trash-card-editor.ts @@ -37,6 +37,11 @@ const TRASH_LABELS = new Set([ 'others.pattern' ]); +// eslint-disable-next-line @typescript-eslint/naming-convention +const OTHER_LABELS = new Set([ + 'next_days' +]); + // eslint-disable-next-line @typescript-eslint/naming-convention const SCHEMA: HaFormSchema[] = [ { name: 'entity', selector: { entity: { domain: 'calendar' }}}, @@ -136,7 +141,14 @@ const SCHEMA: HaFormSchema[] = [ schema: [ // eslint-disable-next-line @typescript-eslint/naming-convention { name: 'layout', selector: { mush_layout: {}}}, - { name: 'fill_container', selector: { boolean: {}}} + { name: 'fill_container', selector: { boolean: {}}}, + { name: 'next_days', + selector: { number: { + min: 1, + max: 365, + step: 1, + mode: 'box' + }}} ] } ]; @@ -192,6 +204,9 @@ export class TrashCardEditor extends LitElement implements LovelaceCardEditor { if (schema.label && TRASH_LABELS.has(schema.label)) { return customLocalize(`editor.card.trash.${schema.label}`); } + if (schema.label && OTHER_LABELS.has(schema.label)) { + return customLocalize(`editor.card.generic.${schema.label}`); + } return this.hass.localize(`ui.panel.lovelace.editor.card.generic.${schema.name}`); }; diff --git a/src/cards/trash-card/trash-card.ts b/src/cards/trash-card/trash-card.ts index b81a8d4..ffed769 100644 --- a/src/cards/trash-card/trash-card.ts +++ b/src/cards/trash-card/trash-card.ts @@ -128,7 +128,7 @@ export class TrashCard extends LitElement implements LovelaceCard { const today = new Date(); const endDate = new Date(); - endDate.setDate(endDate.getDate() + 2); + endDate.setDate(endDate.getDate() + (this.config?.next_days ?? 2)); const start = this.getDayFromDate(today); const end = this.getDayFromDate(endDate); diff --git a/src/translations/de.json b/src/translations/de.json index 7957370..21bd02f 100644 --- a/src/translations/de.json +++ b/src/translations/de.json @@ -18,7 +18,8 @@ "generic": { "icon_color": "Icon-Farbe", "layout": "Layout", - "fill_container": "Container ausfüllen" + "fill_container": "Container ausfüllen", + "next_days": "Tage in der Zukunft" }, "trash": { "organic": { diff --git a/src/translations/en.json b/src/translations/en.json index 9ee3f80..6a79bea 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -18,7 +18,8 @@ "generic": { "icon_color": "Icon color", "layout": "Layout", - "fill_container": "Fill container" + "fill_container": "Fill container", + "next_days": "Days in the future" }, "trash": { "organic": { diff --git a/src/translations/fr.json b/src/translations/fr.json index bed631f..0bb06e1 100644 --- a/src/translations/fr.json +++ b/src/translations/fr.json @@ -18,7 +18,8 @@ "generic": { "icon_color": "Couleur de l'icône", "layout": "Disposition", - "fill_container": "Remplir le conteneur" + "fill_container": "Remplir le conteneur", + "next_days": "Jours dans le futur" }, "trash": { "organic": { diff --git a/src/translations/sk.json b/src/translations/sk.json index c5f1bb5..6197b5b 100644 --- a/src/translations/sk.json +++ b/src/translations/sk.json @@ -18,7 +18,8 @@ "generic": { "icon_color": "Farba ikony", "layout": "Rozloženie", - "fill_container": "Naplňte nádobu" + "fill_container": "Naplňte nádobu", + "next_days": "Dni v budúcnosti" }, "trash": { "organic": {