Check if area exists during default dashboard generation (#14767)

This commit is contained in:
Bram Kragten 2022-12-15 11:09:49 +01:00
parent 614496d65c
commit b2f0b6a814
No known key found for this signature in database
GPG Key ID: FBE2DFDB363EF55B

View File

@ -47,6 +47,7 @@ interface SplittedByAreaDevice {
} }
const splitByAreaDevice = ( const splitByAreaDevice = (
areaEntries: HomeAssistant["areas"],
deviceEntries: HomeAssistant["devices"], deviceEntries: HomeAssistant["devices"],
entityEntries: HomeAssistant["entities"], entityEntries: HomeAssistant["entities"],
entities: HassEntities entities: HassEntities
@ -55,25 +56,21 @@ const splitByAreaDevice = (
const areasWithEntities: SplittedByAreaDevice["areasWithEntities"] = {}; const areasWithEntities: SplittedByAreaDevice["areasWithEntities"] = {};
const devicesWithEntities: SplittedByAreaDevice["devicesWithEntities"] = {}; const devicesWithEntities: SplittedByAreaDevice["devicesWithEntities"] = {};
const areaDevices = new Set(
Object.values(deviceEntries)
.filter((device) => device.area_id)
.map((device) => device.id)
);
for (const entity of Object.values(entityEntries)) { for (const entity of Object.values(entityEntries)) {
if ( const areaId =
(entity.area_id || entity.area_id ||
(entity.device_id && areaDevices.has(entity.device_id))) && (entity.device_id && deviceEntries[entity.device_id].area_id);
entity.entity_id in allEntities if (areaId && areaId in areaEntries && entity.entity_id in allEntities) {
) {
const areaId =
entity.area_id || deviceEntries[entity.device_id!].area_id!;
if (!(areaId in areasWithEntities)) { if (!(areaId in areasWithEntities)) {
areasWithEntities[areaId] = []; areasWithEntities[areaId] = [];
} }
areasWithEntities[areaId].push(allEntities[entity.entity_id]); areasWithEntities[areaId].push(allEntities[entity.entity_id]);
delete allEntities[entity.entity_id]; delete allEntities[entity.entity_id];
} else if (entity.device_id && entity.entity_id in allEntities) { } else if (
entity.device_id &&
entity.device_id in deviceEntries &&
entity.entity_id in allEntities
) {
if (!(entity.device_id in devicesWithEntities)) { if (!(entity.device_id in devicesWithEntities)) {
devicesWithEntities[entity.device_id] = []; devicesWithEntities[entity.device_id] = [];
} }
@ -460,6 +457,7 @@ export const generateDefaultViewConfig = (
} }
const splittedByAreaDevice = splitByAreaDevice( const splittedByAreaDevice = splitByAreaDevice(
areaEntries,
deviceEntries, deviceEntries,
entityEntries, entityEntries,
states states