From f260c95add34f37bcf773114ef38dad786571f4f Mon Sep 17 00:00:00 2001 From: Wendelin <12148533+wendevlin@users.noreply.github.com> Date: Thu, 19 Sep 2024 13:17:45 +0200 Subject: [PATCH] Add default value to zwave config params (#21990) * Add default value to zwave config params * Remove unused ha-switch from zwave node config * Small fix of duplicate code in zwave node config --- src/data/zwave_js.ts | 1 + .../zwave_js/zwave_js-node-config.ts | 40 +++++++++++++------ src/translations/en.json | 3 +- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/data/zwave_js.ts b/src/data/zwave_js.ts index a80a17b6bb..af4ef49bed 100644 --- a/src/data/zwave_js.ts +++ b/src/data/zwave_js.ts @@ -252,6 +252,7 @@ export interface ZWaveJSNodeConfigParamMetadata { type: string; unit: string; states: { [key: number]: string }; + default: any; } export interface ZWaveJSSetConfigParamData { 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 abd39c9095..344a0cd507 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 @@ -24,8 +24,8 @@ import "../../../../../components/ha-icon-next"; import "../../../../../components/ha-select"; import "../../../../../components/ha-settings-row"; import "../../../../../components/ha-svg-icon"; -import "../../../../../components/ha-switch"; import "../../../../../components/ha-textfield"; +import "../../../../../components/ha-selector/ha-selector-boolean"; import { computeDeviceName } from "../../../../../data/device_registry"; import { ZWaveJSNodeConfigParam, @@ -189,6 +189,11 @@ class ZWaveJSNodeConfig extends LitElement { item: ZWaveJSNodeConfigParam ): TemplateResult { const result = this._results[id]; + + const isTypeBoolean = + item.configuration_value_type === "boolean" || + this._isEnumeratedBool(item); + const labelAndDescription = html` ${this.hass.localize("ui.panel.config.zwave_js.node_config.parameter")} @@ -240,23 +245,36 @@ class ZWaveJSNodeConfig extends LitElement { `; + const defaultLabel = + item.metadata.writeable && item.metadata.default !== undefined + ? `${this.hass.localize("ui.panel.config.zwave_js.node_config.default")}: + ${ + isTypeBoolean + ? this.hass.localize( + item.metadata.default === 1 ? "ui.common.yes" : "ui.common.no" + ) + : item.configuration_value_type === "enumerated" + ? item.metadata.states[item.metadata.default] || + item.metadata.default + : item.metadata.default + }` + : ""; + // Numeric entries with a min value of 0 and max of 1 are considered boolean - if ( - item.configuration_value_type === "boolean" || - this._isEnumeratedBool(item) - ) { + if (isTypeBoolean) { return html` ${labelAndDescription}
- + .helper=${defaultLabel} + >
`; } @@ -275,10 +293,7 @@ class ZWaveJSNodeConfig extends LitElement { .disabled=${!item.metadata.writeable} @change=${this._numericInputChanged} .suffix=${item.metadata.unit} - .helper=${this.hass.localize( - "ui.panel.config.zwave_js.node_config.between_min_max", - { min: item.metadata.min, max: item.metadata.max } - )} + .helper=${`${this.hass.localize("ui.panel.config.zwave_js.node_config.between_min_max", { min: item.metadata.min, max: item.metadata.max })}${defaultLabel ? `, ${defaultLabel}` : ""}`} helperPersistent > `; @@ -295,6 +310,7 @@ class ZWaveJSNodeConfig extends LitElement { .endpoint=${item.endpoint} .propertyKey=${item.property_key} @selected=${this._dropdownSelected} + .helper=${defaultLabel} > ${Object.entries(item.metadata.states).map( ([key, entityState]) => html` diff --git a/src/translations/en.json b/src/translations/en.json index 88a984bd2f..97473fda2a 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -4903,7 +4903,8 @@ "set_param_queued": "The parameter change has been queued, and will be updated when the device wakes up.", "set_param_error": "An error occurred.", "parameter": "Parameter", - "bitmask": "Bitmask" + "bitmask": "Bitmask", + "default": "Default" }, "network_status": { "connected": "Connected",