From e6c580aadce76457480e140cf49f7a5e84e34fc7 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Thu, 31 Mar 2022 10:06:47 -0400 Subject: [PATCH] Add zwave-js node alerts to device configuration page (#12173) Co-authored-by: Bram Kragten --- src/data/zwave_js.ts | 6 ++++ .../zwave_js/zwave_js-node-config.ts | 36 +++++++++++-------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/data/zwave_js.ts b/src/data/zwave_js.ts index 1cc8653752..a1dc54f852 100644 --- a/src/data/zwave_js.ts +++ b/src/data/zwave_js.ts @@ -167,12 +167,18 @@ export interface ZwaveJSNodeMetadata { wakeup: string; reset: string; device_database_url: string; + comments: ZWaveJSNodeComment[]; } export interface ZWaveJSNodeConfigParams { [key: string]: ZWaveJSNodeConfigParam; } +export interface ZWaveJSNodeComment { + level: "info" | "warning" | "error"; + text: string; +} + export interface ZWaveJSNodeConfigParam { property: number; value: any; diff --git a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts index 70e9d26390..bc84b9a78a 100644 --- a/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts +++ b/src/panels/config/integrations/integration-panels/zwave_js/zwave_js-node-config.ts @@ -19,6 +19,7 @@ import { customElement, property, state } from "lit/decorators"; import { classMap } from "lit/directives/class-map"; import memoizeOne from "memoize-one"; import { debounce } from "../../../../../common/util/debounce"; +import "../../../../../components/ha-alert"; import "../../../../../components/ha-card"; import "../../../../../components/ha-icon-next"; import "../../../../../components/ha-select"; @@ -130,7 +131,7 @@ class ZWaveJSNodeConfig extends SubscribeMixin(LitElement) { >`; } - if (!this._config) { + if (!this._config || !this._nodeMetadata) { return html``; } @@ -178,20 +179,27 @@ class ZWaveJSNodeConfig extends SubscribeMixin(LitElement) {

- - ${this._config - ? html` - ${Object.entries(this._config).map( - ([id, item]) => html` - ${this._generateConfigBox(id, item)} - ` + ${this._nodeMetadata.comments.length > 0 + ? html` +
+ ${this._nodeMetadata.comments.map( + (comment) => html` + ${comment.text} + ` )} - ` - : ``} +
+ ` + : ``} + + ${Object.entries(this._config).map( + ([id, item]) => html` + ${this._generateConfigBox(id, item)} + ` + )}