From cf2bcb4cc5c6dde1146114cad68c9d6227de0d67 Mon Sep 17 00:00:00 2001 From: Ludeeus Date: Wed, 9 Sep 2020 07:34:42 +0000 Subject: [PATCH 1/7] Hide mobile_app from generated Lovelace --- src/panels/lovelace/common/generate-lovelace-config.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index b5301d37f955..98384bfa43b8 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -413,6 +413,15 @@ export const generateLovelaceConfigFromData = async ( viewEntities.length === 0 || viewEntities[0].entity_id !== DEFAULT_VIEW_ENTITY_ID ) { + const hiddenPlatforms = ["mobile_app"]; + const hidddenEntitites = entityEntries + .filter((entry) => hiddenPlatforms.includes(entry.platform)) + .map((entry) => entry.entity_id); + + hidddenEntitites.forEach((entity) => { + delete entities[entity]; + }); + views.unshift( generateDefaultViewConfig( areaEntries, From a6c2483f1e2022046e811401270d9fff9ea98ce3 Mon Sep 17 00:00:00 2001 From: Ludeeus Date: Wed, 9 Sep 2020 20:33:50 +0000 Subject: [PATCH 2/7] simplify --- .../lovelace/common/generate-lovelace-config.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index 98384bfa43b8..85fa089d553c 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -63,6 +63,8 @@ const HIDE_DOMAIN = new Set([ "zone", ]); +const HIDE_PLATFORM = ["mobile_app"]; + let subscribedRegistries = false; interface SplittedByAreas { @@ -413,14 +415,13 @@ export const generateLovelaceConfigFromData = async ( viewEntities.length === 0 || viewEntities[0].entity_id !== DEFAULT_VIEW_ENTITY_ID ) { - const hiddenPlatforms = ["mobile_app"]; - const hidddenEntitites = entityEntries - .filter((entry) => hiddenPlatforms.includes(entry.platform)) - .map((entry) => entry.entity_id); - - hidddenEntitites.forEach((entity) => { - delete entities[entity]; - }); + // Filter out unwanted platforms + entityEntries + .filter((entry) => HIDE_PLATFORM.includes(entry.platform)) + .map((entry) => entry.entity_id) + .forEach((entityId) => { + delete entities[entityId]; + }); views.unshift( generateDefaultViewConfig( From 9e906bdd34d5c30b64a73796bbca855e9e021ad7 Mon Sep 17 00:00:00 2001 From: Ludeeus Date: Wed, 9 Sep 2020 20:44:10 +0000 Subject: [PATCH 3/7] Move to computeDefaultViewStates --- .../common/generate-lovelace-config.ts | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index 85fa089d553c..a9aabbe6c8fe 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -208,11 +208,21 @@ export const computeCards = ( return cards; }; -const computeDefaultViewStates = (entities: HassEntities): HassEntities => { +const computeDefaultViewStates = ( + entities: HassEntities, + entityEntries: EntityRegistryEntry[] +): HassEntities => { const states = {}; + const removedEntities = entityEntries + .filter((entry) => HIDE_PLATFORM.includes(entry.platform)) + .map((entry) => entry.entity_id); + Object.keys(entities).forEach((entityId) => { const stateObj = entities[entityId]; - if (!HIDE_DOMAIN.has(computeStateDomain(stateObj))) { + if ( + !HIDE_DOMAIN.has(computeStateDomain(stateObj)) && + !removedEntities.includes(entityId) + ) { states[entityId] = entities[entityId]; } }); @@ -319,7 +329,7 @@ export const generateDefaultViewConfig = ( entities: HassEntities, localize: LocalizeFunc ): LovelaceViewConfig => { - const states = computeDefaultViewStates(entities); + const states = computeDefaultViewStates(entities, entityEntries); const path = "default_view"; const title = "Home"; const icon = undefined; @@ -415,14 +425,6 @@ export const generateLovelaceConfigFromData = async ( viewEntities.length === 0 || viewEntities[0].entity_id !== DEFAULT_VIEW_ENTITY_ID ) { - // Filter out unwanted platforms - entityEntries - .filter((entry) => HIDE_PLATFORM.includes(entry.platform)) - .map((entry) => entry.entity_id) - .forEach((entityId) => { - delete entities[entityId]; - }); - views.unshift( generateDefaultViewConfig( areaEntries, From d08db171d15bb69938a46e2cacfad8ad24b636b2 Mon Sep 17 00:00:00 2001 From: Ludeeus Date: Wed, 9 Sep 2020 20:45:59 +0000 Subject: [PATCH 4/7] removed -> hidden --- src/panels/lovelace/common/generate-lovelace-config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index a9aabbe6c8fe..413ebfd71bfd 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -213,7 +213,7 @@ const computeDefaultViewStates = ( entityEntries: EntityRegistryEntry[] ): HassEntities => { const states = {}; - const removedEntities = entityEntries + const hiddenEntities = entityEntries .filter((entry) => HIDE_PLATFORM.includes(entry.platform)) .map((entry) => entry.entity_id); @@ -221,7 +221,7 @@ const computeDefaultViewStates = ( const stateObj = entities[entityId]; if ( !HIDE_DOMAIN.has(computeStateDomain(stateObj)) && - !removedEntities.includes(entityId) + !hiddenEntities.includes(entityId) ) { states[entityId] = entities[entityId]; } From e20b9666aef00095d5eead458cd014f19877f69f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Wed, 9 Sep 2020 22:46:43 +0200 Subject: [PATCH 5/7] Update src/panels/lovelace/common/generate-lovelace-config.ts Co-authored-by: Bram Kragten --- src/panels/lovelace/common/generate-lovelace-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index 413ebfd71bfd..afd31c9ae3a6 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -63,7 +63,7 @@ const HIDE_DOMAIN = new Set([ "zone", ]); -const HIDE_PLATFORM = ["mobile_app"]; +const HIDE_PLATFORM = new Set(["mobile_app"]); let subscribedRegistries = false; From 3741de0093dd9a5cc4395bcec2c955203cd86cb7 Mon Sep 17 00:00:00 2001 From: Ludeeus Date: Wed, 9 Sep 2020 20:47:29 +0000 Subject: [PATCH 6/7] Adjust for Set --- src/panels/lovelace/common/generate-lovelace-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index afd31c9ae3a6..1c7de7833861 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -214,7 +214,7 @@ const computeDefaultViewStates = ( ): HassEntities => { const states = {}; const hiddenEntities = entityEntries - .filter((entry) => HIDE_PLATFORM.includes(entry.platform)) + .filter((entry) => HIDE_PLATFORM.has(entry.platform)) .map((entry) => entry.entity_id); Object.keys(entities).forEach((entityId) => { From 0af813bf225e932253191f3cae8a3ceda0c7f020 Mon Sep 17 00:00:00 2001 From: Ludeeus Date: Wed, 9 Sep 2020 20:49:57 +0000 Subject: [PATCH 7/7] Review comments --- src/panels/lovelace/common/generate-lovelace-config.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/panels/lovelace/common/generate-lovelace-config.ts b/src/panels/lovelace/common/generate-lovelace-config.ts index 1c7de7833861..bf49d2116a55 100644 --- a/src/panels/lovelace/common/generate-lovelace-config.ts +++ b/src/panels/lovelace/common/generate-lovelace-config.ts @@ -213,15 +213,17 @@ const computeDefaultViewStates = ( entityEntries: EntityRegistryEntry[] ): HassEntities => { const states = {}; - const hiddenEntities = entityEntries - .filter((entry) => HIDE_PLATFORM.has(entry.platform)) - .map((entry) => entry.entity_id); + const hiddenEntities = new Set( + entityEntries + .filter((entry) => HIDE_PLATFORM.has(entry.platform)) + .map((entry) => entry.entity_id) + ); Object.keys(entities).forEach((entityId) => { const stateObj = entities[entityId]; if ( !HIDE_DOMAIN.has(computeStateDomain(stateObj)) && - !hiddenEntities.includes(entityId) + !hiddenEntities.has(stateObj.entity_id) ) { states[entityId] = entities[entityId]; }