Add functions for device/entity/area registry parsing

This commit is contained in:
Thomas Lovén 2019-11-07 23:04:17 +01:00
parent c0cf359552
commit 83a9a2ea31
3 changed files with 63 additions and 1 deletions

File diff suppressed because one or more lines are too long

56
src/devices.js Normal file
View File

@ -0,0 +1,56 @@
import { hass } from "./hass";
const areaData = hass().callWS({type: "config/area_registry/list"});
const deviceData = hass().callWS({type: "config/device_registry/list"});
const entityData = hass().callWS({type: "config/entity_registry/list"});
export async function getData(){
window.cardToolsData = window.cardToolsData || {
areas: await areaData,
devices: await deviceData,
entities: await entityData,
}
return window.cardToolsData;
}
getData();
export function areaByName(name) {
const data = window.cardToolsData;
for(const a of data.areas) {
if(a.name.toLowerCase() === name.toLowerCase())
return a;
}
return null;
}
export function areaDevices(area) {
const data = window.cardToolsData;
let devices = [];
if(!area) return devices;
for(const d of data.devices) {
if(d.area_id === area.area_id) {
devices.push(d);
}
}
return devices;
}
export function deviceByName(name) {
const data = window.cardToolsData;
for(const d of data.devices) {
if(d.name.toLowerCase() === name.toLowerCase())
return d;
}
return null;
}
export function deviceEntities(device) {
const data = window.cardToolsData;
let entities = [];
if(!device) return entities;
for(const e of data.entities) {
if(e.device_id === device.id) {
entities.push(e.entity_id);
}
}
return entities;
}

View File

@ -9,6 +9,7 @@ import { moreInfo } from "./more-info.js";
import { popUp, closePopUp } from "./popup.js";
import { parseTemplate, subscribeRenderTemplate } from "./templates.js";
import { hasOldTemplate, parseOldTemplate } from "./old-templates.js";
import { getData, areaByName, areaDevices, deviceByName, deviceEntities }  from "./devices";
class CardTools {
@ -50,6 +51,11 @@ class CardTools {
}
static get subscribeRenderTemplate() { return subscribeRenderTemplate; }
static get getData() { return getData; }
static get areaByName() { return areaByName; }
static get areaDevices() { return areaDevices; }
static get deviceByName() { return deviceByName; }
static get deviceEntities() { return deviceEntities; }
}
if(!customElements.get("card-tools")) {