diff --git a/src/configurationDefaults.ts b/src/configurationDefaults.ts index 0fd7bea..6e26605 100644 --- a/src/configurationDefaults.ts +++ b/src/configurationDefaults.ts @@ -22,6 +22,7 @@ export const getConfigurationDefaults = (localize: Function): StrategyDefaults = domains: { _: { hide_config_entities: false, + hide_diagnostic_entities: false, }, default: { title: localize("generic.miscellaneous"), diff --git a/src/mushroom-strategy.ts b/src/mushroom-strategy.ts index a4d6f53..ca15376 100644 --- a/src/mushroom-strategy.ts +++ b/src/mushroom-strategy.ts @@ -117,6 +117,10 @@ class MushroomStrategy extends HTMLTemplateElement { Helper.strategyOptions.domains[domain ?? "_"].hide_config_entities || Helper.strategyOptions.domains["_"].hide_config_entities; + let diagnosticEntityHidden = + Helper.strategyOptions.domains[domain ?? "_"].hide_diagnostic_entities + || Helper.strategyOptions.domains["_"].hide_diagnostic_entities; + // Set the target for controller cards to entities without an area. if (area.area_id === "undisclosed") { target = { @@ -137,6 +141,11 @@ class MushroomStrategy extends HTMLTemplateElement { const sensorCards: EntityCardConfig[] = []; for (const sensor of entities) { + // Don't include the diagnostic-entity if hidden in the strategy options. + if (sensor.entity_category === "diagnostic" && diagnosticEntityHidden) { + continue; + } + // Find the state of the current sensor. const sensorState = sensorStates.find(state => state.entity_id === sensor.entity_id); let cardOptions = Helper.strategyOptions.card_options?.[sensor.entity_id]; @@ -180,6 +189,11 @@ class MushroomStrategy extends HTMLTemplateElement { continue; } + // Don't include the diagnostic-entity if hidden in the strategy options. + if (entity.entity_category === "diagnostic" && diagnosticEntityHidden) { + continue; + } + domainCards.push(new cardModule[className](entity, cardOptions).getCard()); } @@ -242,6 +256,11 @@ class MushroomStrategy extends HTMLTemplateElement { continue; } + // Don't include the diagnostic-entity if hidden in the strategy options + if (entity.entity_category === "diagnostic" && Helper.strategyOptions.domains["_"].hide_diagnostic_entities) { + continue; + } + miscellaneousCards.push(new cardModule.MiscellaneousCard(entity, cardOptions).getCard()); } diff --git a/src/types/strategy/generic.ts b/src/types/strategy/generic.ts index 12197d5..a5bb28b 100644 --- a/src/types/strategy/generic.ts +++ b/src/types/strategy/generic.ts @@ -38,11 +38,14 @@ export namespace generic { * @property {boolean} [hidden] True if the entity should be hidden from the dashboard. * @property {boolean} [hide_config_entities] True if the entity's categorie is "config" and should be hidden from the * dashboard. + * @property {boolean} [hide_diagnostic_entities] True if the entity's categorie is "diagnostic" and should be hidden from the + * dashboard. */ export interface DomainConfig extends Partial { hidden?: boolean; order?: number; hide_config_entities?: boolean + hide_diagnostic_entities?: boolean } /** diff --git a/src/views/AbstractView.ts b/src/views/AbstractView.ts index 9e2b3a9..0c69a64 100644 --- a/src/views/AbstractView.ts +++ b/src/views/AbstractView.ts @@ -72,6 +72,9 @@ abstract class AbstractView { const configEntityHidden = Helper.strategyOptions.domains[this.#domain ?? "_"].hide_config_entities || Helper.strategyOptions.domains["_"].hide_config_entities; + const diagnosticEntityHidden = + Helper.strategyOptions.domains[this.#domain ?? "_"].hide_diagnostic_entities + || Helper.strategyOptions.domains["_"].hide_diagnostic_entities; // Create cards for each area. for (const area of Helper.areas) { @@ -105,6 +108,10 @@ abstract class AbstractView { continue; } + if (entity.entity_category === "diagnostic" && diagnosticEntityHidden) { + continue; + } + areaCards.push(new cardModule[className](entity, cardOptions).getCard()); }