From 54693056469d3eddf6bdf027a0642851ae1f98fa Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Tue, 24 Nov 2020 16:27:34 -0500 Subject: [PATCH 01/14] initial commit --- package.json | 2 + src/data/zha.ts | 8 + .../zha/zha-config-dashboard-router.ts | 4 + .../zha/zha-config-dashboard.ts | 5 + .../zha/zha-network-visualization-page.ts | 237 ++++++++++++++++++ src/translations/en.json | 4 + 6 files changed, 260 insertions(+) create mode 100644 src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts diff --git a/package.json b/package.json index 7f0194ccd7c3..6349d3864f4c 100644 --- a/package.json +++ b/package.json @@ -123,6 +123,8 @@ "superstruct": "^0.10.12", "tinykeys": "^1.1.1", "unfetch": "^4.1.0", + "vis-data": "^7.1.1", + "vis-network": "^8.5.4", "vue": "^2.6.11", "vue2-daterange-picker": "^0.5.1", "web-animations-js": "^2.3.2", diff --git a/src/data/zha.ts b/src/data/zha.ts index 41c4f0805c6d..5f4cb3aa1855 100644 --- a/src/data/zha.ts +++ b/src/data/zha.ts @@ -7,6 +7,7 @@ export interface ZHAEntityReference extends HassEntity { } export interface ZHADevice { + available: boolean; name: string; ieee: string; nwk: string; @@ -25,6 +26,13 @@ export interface ZHADevice { area_id?: string; device_type: string; signature: any; + neighbors: Neighbor[]; +} + +export interface Neighbor { + ieee: string; + nwk: string; + lqi: number; } export interface ZHADeviceEndpoint { diff --git a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard-router.ts b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard-router.ts index 62af2ab06cde..866ec1317c75 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard-router.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard-router.ts @@ -42,6 +42,10 @@ class ZHAConfigDashboardRouter extends HassRouterPage { tag: "zha-add-group-page", load: () => import("./zha-add-group-page"), }, + visualization: { + tag: "zha-network-visualization-page", + load: () => import("./zha-network-visualization-page"), + }, }, }; diff --git a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts index e6025f777c45..cc69aca5cdb3 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts @@ -32,6 +32,11 @@ export const zhaTabs: PageNavigation[] = [ path: `/config/zha/groups`, iconPath: mdiFolderMultipleOutline, }, + { + translationKey: "ui.panel.config.zha.visualization.caption", + path: `/config/zha/visualization`, + iconPath: mdiFolderMultipleOutline, + }, ]; @customElement("zha-config-dashboard") diff --git a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts new file mode 100644 index 000000000000..4d4d733693f9 --- /dev/null +++ b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts @@ -0,0 +1,237 @@ +import { + css, + CSSResult, + customElement, + html, + internalProperty, + LitElement, + property, + PropertyValues, + query, +} from "lit-element"; + +import { navigate } from "../../../../../common/navigate"; +import { fetchDevices, ZHADevice } from "../../../../../data/zha"; +import "../../../../../layouts/hass-error-screen"; +import "../../../../../layouts/hass-subpage"; +import type { HomeAssistant } from "../../../../../types"; +import { Network, Edge, Node, EdgeOptions } from "vis-network"; +import "vis-network/styles/vis-network.css"; +import "../../../ha-config-section"; + +@customElement("zha-network-visualization-page") +export class ZHANetworkVisualizationPage extends LitElement { + @property({ type: Object }) public hass!: HomeAssistant; + + @property({ type: Boolean }) public narrow!: boolean; + + @query("#visualization", true) + private _visualization!: HTMLElement; + + @internalProperty() + private _firstUpdatedCalled = false; + + @internalProperty() + private _devices: ZHADevice[] = []; + + @internalProperty() + private _network!: Network; + + public connectedCallback(): void { + super.connectedCallback(); + if (this.hass && this._firstUpdatedCalled) { + this._fetchData(); + } + } + + protected firstUpdated(changedProperties: PropertyValues): void { + super.firstUpdated(changedProperties); + if (this.hass) { + this._fetchData(); + } + this._network = new Network( + this._visualization, + {}, + { + autoResize: true, + height: window.innerHeight + "px", + width: window.innerWidth + "px", + layout: { + improvedLayout: true, + }, + physics: { + barnesHut: { + springConstant: 0, + avoidOverlap: 10, + damping: 0.09, + }, + }, + nodes: { + font: { + multi: "html", + }, + }, + edges: { + smooth: { + enabled: true, + type: "continuous", + forceDirection: "none", + roundness: 0.6, + }, + }, + } + ); + this._network.on("doubleClick", (properties) => { + const ieee = properties.nodes[0]; + if (ieee) { + const devices = this._devices.filter((regDev) => { + return regDev.ieee === ieee; + }); + if (devices[0]) { + navigate( + this, + "/config/devices/device/" + devices[0].device_reg_id, + false + ); + } + } + }); + this._firstUpdatedCalled = true; + } + + protected render() { + return html` + + +
+
+
+ `; + } + + private async _fetchData() { + this._devices = await fetchDevices(this.hass!); + this._updateDevices(this._devices); + } + + private _updateDevices(devices: ZHADevice[]) { + const nodes: Node[] = []; + const edges: Edge[] = []; + + devices.forEach((device) => { + nodes.push({ + id: device.ieee, + label: this._buildLabel(device), + shape: this._getShape(device), + mass: this._getMass(device), + }); + if (device.neighbors && device.neighbors.length > 0) { + device.neighbors.forEach((neighbor) => { + const idx = edges.findIndex(function (e) { + return device.ieee === e.to && neighbor.ieee === e.from; + }); + if (idx === -1) { + edges.push({ + from: device.ieee, + to: neighbor.ieee, + label: neighbor.lqi + "", + color: this._getLQI(neighbor.lqi), + }); + } else { + edges[idx].color = this._getLQI( + (parseInt(edges[idx].label!) + neighbor.lqi) / 2 + ); + edges[idx].label += "/" + neighbor.lqi; + } + }); + } + }); + + this._network.setData({ nodes: nodes, edges: edges }); + } + + private _getLQI(lqi: number): EdgeOptions["color"] { + if (lqi > 192) { + return { color: "#17ab00", highlight: "#17ab00" }; + } + if (lqi > 128) { + return { color: "#e6b402", highlight: "#e6b402" }; + } + if (lqi > 80) { + return { color: "#fc4c4c", highlight: "#fc4c4c" }; + } + return { color: "#bfbfbf", highlight: "#bfbfbf" }; + } + + private _getMass(device: ZHADevice) { + if (device.device_type === "Coordinator") { + return 2; + } + if (device.device_type === "Router") { + return 4; + } + return 5; + } + + private _getShape(device: ZHADevice): string { + if (device.device_type === "Coordinator") { + return "box"; + } + if (device.device_type === "Router") { + return "ellipse"; + } + return "circle"; + } + + private _buildLabel(device: ZHADevice): string { + const regDevices = this._devices.filter((regDev) => { + return regDev.ieee === device.ieee; + }); + + let label = + regDevices.length > 0 && regDevices[0].user_given_name !== null + ? "" + regDevices[0].user_given_name + "\n" + : ""; + label += "IEEE: " + device.ieee; + label += "\nDevice Type: " + device.device_type.replace("_", " "); + if (device.nwk != null) { + label += "\nNWK: " + device.nwk; + } + if (device.manufacturer != null && device.model != null) { + label += "\nDevice: " + device.manufacturer + " " + device.model; + } else { + label += "\nDevice is not in 'zigbee.db'"; + } + if (!device.available) { + label += "\nDevice is Offline"; + } + return label; + } + + static get styles(): CSSResult[] { + return [ + css` + .header { + font-family: var(--paper-font-display1_-_font-family); + -webkit-font-smoothing: var( + --paper-font-display1_-_-webkit-font-smoothing + ); + font-size: var(--paper-font-display1_-_font-size); + font-weight: var(--paper-font-display1_-_font-weight); + letter-spacing: var(--paper-font-display1_-_letter-spacing); + line-height: var(--paper-font-display1_-_line-height); + opacity: var(--dark-primary-opacity); + } + + ha-config-section *:last-child { + padding-bottom: 24px; + } + `, + ]; + } +} diff --git a/src/translations/en.json b/src/translations/en.json index d00b1e19334b..fe21fd8737bf 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2246,6 +2246,10 @@ "create": "Create Group", "creating_group": "Creating Group" }, + "visualization": { + "header": "Zigbee Home Automation - Visualization", + "caption": "Visualization" + }, "group_binding": { "header": "Group Binding", "introduction": "Bind and unbind groups.", From 34ccd9be630092c8248a33b63ed08b59372c3819 Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Tue, 24 Nov 2020 16:50:08 -0500 Subject: [PATCH 02/14] review comment --- .../zha/zha-network-visualization-page.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts index 4d4d733693f9..7c8d574f0d8d 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts @@ -195,15 +195,15 @@ export class ZHANetworkVisualizationPage extends LitElement { let label = regDevices.length > 0 && regDevices[0].user_given_name !== null - ? "" + regDevices[0].user_given_name + "\n" + ? `${regDevices[0].user_given_name}\n` : ""; - label += "IEEE: " + device.ieee; - label += "\nDevice Type: " + device.device_type.replace("_", " "); + label += `IEEE: ${device.ieee}`; + label += `\nDevice Type: ${device.device_type.replace("_", " ")}`; if (device.nwk != null) { - label += "\nNWK: " + device.nwk; + label += `\nNWK: ${device.nwk}`; } if (device.manufacturer != null && device.model != null) { - label += "\nDevice: " + device.manufacturer + " " + device.model; + label += `\nDevice: ${device.manufacturer} ${device.model}`; } else { label += "\nDevice is not in 'zigbee.db'"; } From 312118a1107fca9c5c0541a30e02bb9381228d3a Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Tue, 24 Nov 2020 17:06:01 -0500 Subject: [PATCH 03/14] review comment --- .../zha/zha-network-visualization-page.ts | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts index 7c8d574f0d8d..dce4822371a7 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts @@ -32,7 +32,7 @@ export class ZHANetworkVisualizationPage extends LitElement { private _firstUpdatedCalled = false; @internalProperty() - private _devices: ZHADevice[] = []; + private _devices: Map = new Map(); @internalProperty() private _network!: Network; @@ -84,13 +84,11 @@ export class ZHANetworkVisualizationPage extends LitElement { this._network.on("doubleClick", (properties) => { const ieee = properties.nodes[0]; if (ieee) { - const devices = this._devices.filter((regDev) => { - return regDev.ieee === ieee; - }); - if (devices[0]) { + const device = this._devices.get(ieee); + if (device) { navigate( this, - "/config/devices/device/" + devices[0].device_reg_id, + `/config/devices/device/${device.device_reg_id}`, false ); } @@ -115,8 +113,11 @@ export class ZHANetworkVisualizationPage extends LitElement { } private async _fetchData() { - this._devices = await fetchDevices(this.hass!); - this._updateDevices(this._devices); + const devices = await fetchDevices(this.hass!); + this._devices = new Map( + devices.map((device: ZHADevice) => [device.ieee, device]) + ); + this._updateDevices(devices); } private _updateDevices(devices: ZHADevice[]) { @@ -189,13 +190,9 @@ export class ZHANetworkVisualizationPage extends LitElement { } private _buildLabel(device: ZHADevice): string { - const regDevices = this._devices.filter((regDev) => { - return regDev.ieee === device.ieee; - }); - let label = - regDevices.length > 0 && regDevices[0].user_given_name !== null - ? `${regDevices[0].user_given_name}\n` + device.user_given_name !== null + ? `${device.user_given_name}\n` : ""; label += `IEEE: ${device.ieee}`; label += `\nDevice Type: ${device.device_type.replace("_", " ")}`; From f7cd44aed722a316ddcb961387d8f7c9d05cf90f Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Tue, 24 Nov 2020 17:09:39 -0500 Subject: [PATCH 04/14] review comment --- .../zha/zha-network-visualization-page.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts index dce4822371a7..08489431e2a8 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts @@ -28,22 +28,12 @@ export class ZHANetworkVisualizationPage extends LitElement { @query("#visualization", true) private _visualization!: HTMLElement; - @internalProperty() - private _firstUpdatedCalled = false; - @internalProperty() private _devices: Map = new Map(); @internalProperty() private _network!: Network; - public connectedCallback(): void { - super.connectedCallback(); - if (this.hass && this._firstUpdatedCalled) { - this._fetchData(); - } - } - protected firstUpdated(changedProperties: PropertyValues): void { super.firstUpdated(changedProperties); if (this.hass) { @@ -94,7 +84,6 @@ export class ZHANetworkVisualizationPage extends LitElement { } } }); - this._firstUpdatedCalled = true; } protected render() { From 2a73a378fe4811b6c1282df3181a3592fe6a8370 Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Tue, 24 Nov 2020 17:11:49 -0500 Subject: [PATCH 05/14] review comment --- .../integration-panels/zha/zha-config-dashboard.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts index cc69aca5cdb3..e30626d82769 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts @@ -15,7 +15,12 @@ import "../../../../../components/ha-icon-next"; import { haStyle } from "../../../../../resources/styles"; import type { HomeAssistant, Route } from "../../../../../types"; import "../../../ha-config-section"; -import { mdiNetwork, mdiFolderMultipleOutline, mdiPlus } from "@mdi/js"; +import { + mdiNetwork, + mdiFolderMultipleOutline, + mdiPlus, + mdiApacheKafka, +} from "@mdi/js"; import "../../../../../layouts/hass-tabs-subpage"; import type { PageNavigation } from "../../../../../layouts/hass-tabs-subpage"; import { computeRTL } from "../../../../../common/util/compute_rtl"; @@ -35,7 +40,7 @@ export const zhaTabs: PageNavigation[] = [ { translationKey: "ui.panel.config.zha.visualization.caption", path: `/config/zha/visualization`, - iconPath: mdiFolderMultipleOutline, + iconPath: mdiApacheKafka, }, ]; From bc4a824f56a11ccf193848a1c0e0a34f2bfa48b5 Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Tue, 24 Nov 2020 17:19:28 -0500 Subject: [PATCH 06/14] remove ha-config-section --- .../zha/zha-network-visualization-page.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts index 08489431e2a8..dea1db437119 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts @@ -17,7 +17,6 @@ import "../../../../../layouts/hass-subpage"; import type { HomeAssistant } from "../../../../../types"; import { Network, Edge, Node, EdgeOptions } from "vis-network"; import "vis-network/styles/vis-network.css"; -import "../../../ha-config-section"; @customElement("zha-network-visualization-page") export class ZHANetworkVisualizationPage extends LitElement { @@ -94,9 +93,7 @@ export class ZHANetworkVisualizationPage extends LitElement { "ui.panel.config.zha.visualization.header" )} > - -
-
+
`; } @@ -213,10 +210,6 @@ export class ZHANetworkVisualizationPage extends LitElement { line-height: var(--paper-font-display1_-_line-height); opacity: var(--dark-primary-opacity); } - - ha-config-section *:last-child { - padding-bottom: 24px; - } `, ]; } From ea83bfc0604e7252f7a09e55ed51f5571b8f4973 Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Wed, 25 Nov 2020 06:12:15 -0500 Subject: [PATCH 07/14] Update src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts Co-authored-by: Bram Kragten --- .../integrations/integration-panels/zha/zha-config-dashboard.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts index e30626d82769..d42af8fb67c5 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts @@ -40,7 +40,7 @@ export const zhaTabs: PageNavigation[] = [ { translationKey: "ui.panel.config.zha.visualization.caption", path: `/config/zha/visualization`, - iconPath: mdiApacheKafka, + iconPath: mdiLan, }, ]; From bac38a07127f5630fb6be7445c511aee15767adb Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Wed, 25 Nov 2020 06:12:34 -0500 Subject: [PATCH 08/14] Update src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts Co-authored-by: Bram Kragten --- .../integration-panels/zha/zha-network-visualization-page.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts index dea1db437119..d77f9536c07f 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts @@ -31,7 +31,7 @@ export class ZHANetworkVisualizationPage extends LitElement { private _devices: Map = new Map(); @internalProperty() - private _network!: Network; + private _network?: Network; protected firstUpdated(changedProperties: PropertyValues): void { super.firstUpdated(changedProperties); From cfeceb6fe40d20783139c06037d03fd74d69a684 Mon Sep 17 00:00:00 2001 From: "David F. Mulcahey" Date: Wed, 25 Nov 2020 06:12:44 -0500 Subject: [PATCH 09/14] Update src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts Co-authored-by: Bram Kragten --- .../integration-panels/zha/zha-network-visualization-page.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts index d77f9536c07f..675b8381a431 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts @@ -25,7 +25,7 @@ export class ZHANetworkVisualizationPage extends LitElement { @property({ type: Boolean }) public narrow!: boolean; @query("#visualization", true) - private _visualization!: HTMLElement; + private _visualization?: HTMLElement; @internalProperty() private _devices: Map = new Map(); From dfd90206e23256931746f7526113b9cadb819b44 Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Wed, 25 Nov 2020 06:45:06 -0500 Subject: [PATCH 10/14] clean up after committing suggestions --- .../integration-panels/zha/zha-config-dashboard.ts | 7 +------ .../zha/zha-network-visualization-page.ts | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts index d42af8fb67c5..10d68ef5512c 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-config-dashboard.ts @@ -15,12 +15,7 @@ import "../../../../../components/ha-icon-next"; import { haStyle } from "../../../../../resources/styles"; import type { HomeAssistant, Route } from "../../../../../types"; import "../../../ha-config-section"; -import { - mdiNetwork, - mdiFolderMultipleOutline, - mdiPlus, - mdiApacheKafka, -} from "@mdi/js"; +import { mdiNetwork, mdiFolderMultipleOutline, mdiPlus, mdiLan } from "@mdi/js"; import "../../../../../layouts/hass-tabs-subpage"; import type { PageNavigation } from "../../../../../layouts/hass-tabs-subpage"; import { computeRTL } from "../../../../../common/util/compute_rtl"; diff --git a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts index 675b8381a431..12da90e46df1 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts @@ -39,7 +39,7 @@ export class ZHANetworkVisualizationPage extends LitElement { this._fetchData(); } this._network = new Network( - this._visualization, + this._visualization!, {}, { autoResize: true, @@ -139,7 +139,7 @@ export class ZHANetworkVisualizationPage extends LitElement { } }); - this._network.setData({ nodes: nodes, edges: edges }); + this._network?.setData({ nodes: nodes, edges: edges }); } private _getLQI(lqi: number): EdgeOptions["color"] { From 2e6234fd82d0f2ee28acd65fb9a73b39297e8630 Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Wed, 25 Nov 2020 06:46:28 -0500 Subject: [PATCH 11/14] update translation --- src/translations/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/translations/en.json b/src/translations/en.json index fe21fd8737bf..f62b04ec64e9 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2247,7 +2247,7 @@ "creating_group": "Creating Group" }, "visualization": { - "header": "Zigbee Home Automation - Visualization", + "header": "Network Visualization", "caption": "Visualization" }, "group_binding": { From 0449c0904233e4c0de4f6c23538fae614f3c77a7 Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Wed, 25 Nov 2020 06:48:21 -0500 Subject: [PATCH 12/14] review comments --- .../integration-panels/zha/zha-network-visualization-page.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts index 12da90e46df1..1b6de448ed86 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts @@ -12,11 +12,9 @@ import { import { navigate } from "../../../../../common/navigate"; import { fetchDevices, ZHADevice } from "../../../../../data/zha"; -import "../../../../../layouts/hass-error-screen"; import "../../../../../layouts/hass-subpage"; import type { HomeAssistant } from "../../../../../types"; import { Network, Edge, Node, EdgeOptions } from "vis-network"; -import "vis-network/styles/vis-network.css"; @customElement("zha-network-visualization-page") export class ZHANetworkVisualizationPage extends LitElement { From ed0617e71bec6835f9cccc2d5b0984dd1cc39edf Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Wed, 25 Nov 2020 07:03:19 -0500 Subject: [PATCH 13/14] type info --- .../integration-panels/zha/zha-network-visualization-page.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts index 1b6de448ed86..8f3dbd63a5a4 100644 --- a/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts +++ b/src/panels/config/integrations/integration-panels/zha/zha-network-visualization-page.ts @@ -153,7 +153,7 @@ export class ZHANetworkVisualizationPage extends LitElement { return { color: "#bfbfbf", highlight: "#bfbfbf" }; } - private _getMass(device: ZHADevice) { + private _getMass(device: ZHADevice): number { if (device.device_type === "Coordinator") { return 2; } From d128e2484860f141d4ef73e634d6794f0fbf2f7e Mon Sep 17 00:00:00 2001 From: David Mulcahey Date: Thu, 26 Nov 2020 16:39:07 -0500 Subject: [PATCH 14/14] commit lock file --- yarn.lock | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/yarn.lock b/yarn.lock index 7b2948ee1cda..06b93edb5d69 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13567,6 +13567,16 @@ vinyl@^2.0.0, vinyl@^2.1.0: remove-trailing-separator "^1.0.1" replace-ext "^1.0.0" +vis-data@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/vis-data/-/vis-data-7.1.1.tgz#a38b38efcc0b721181ddaa4f4359edfd75623825" + integrity sha512-Z5+caySDqoKL9yxbI3c/CKmUcSvROSZstuvwxbOsUpdxHpxFYEUgxC1EH4lSB1ykEaM54MVMM1UcwB9oNaWFlw== + +vis-network@^8.5.4: + version "8.5.4" + resolved "https://registry.yarnpkg.com/vis-network/-/vis-network-8.5.4.tgz#6979a626c28f29e981adf535a8e6c25503c26f7f" + integrity sha512-KeYHlTZpbPHS6868MHnMtRXDTmKA0YwQQl/mC5cBiICGH67ilzOqkyWObAMyeo8b8Z/6pTfFJEu9g70EvWqOYA== + vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"