From fb69deb6176e76e726f11e19a8717868880375fc Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Fri, 1 Sep 2023 15:24:36 +0200 Subject: [PATCH] Fix target range temperature in tile feature (#17772) --- .../hui-target-temperature-tile-feature.ts | 193 +++++++++++------- 1 file changed, 115 insertions(+), 78 deletions(-) diff --git a/src/panels/lovelace/tile-features/hui-target-temperature-tile-feature.ts b/src/panels/lovelace/tile-features/hui-target-temperature-tile-feature.ts index 34fbf1ac83..3832dbb91a 100644 --- a/src/panels/lovelace/tile-features/hui-target-temperature-tile-feature.ts +++ b/src/panels/lovelace/tile-features/hui-target-temperature-tile-feature.ts @@ -129,6 +129,33 @@ class HuiTargetTemperatureTileFeature }); } + private _supportsTarget() { + const domain = computeStateDomain(this.stateObj!); + return ( + (domain === "climate" && + supportsFeature( + this.stateObj!, + ClimateEntityFeature.TARGET_TEMPERATURE + )) || + (domain === "water_heater" && + supportsFeature( + this.stateObj!, + WaterHeaterEntityFeature.TARGET_TEMPERATURE + )) + ); + } + + private _supportsTargetRange() { + const domain = computeStateDomain(this.stateObj!); + return ( + domain === "climate" && + supportsFeature( + this.stateObj!, + ClimateEntityFeature.TARGET_TEMPERATURE_RANGE + ) + ); + } + protected render() { if ( !this._config || @@ -147,94 +174,104 @@ class HuiTargetTemperatureTileFeature minimumFractionDigits: digits, }; - const domain = computeStateDomain(this.stateObj!); - if ( - (domain === "climate" && - supportsFeature( - this.stateObj, - ClimateEntityFeature.TARGET_TEMPERATURE - )) || - (domain === "water_heater" && - supportsFeature( - this.stateObj, - WaterHeaterEntityFeature.TARGET_TEMPERATURE - )) + this._supportsTarget() && + this._targetTemperature.value != null && + this.stateObj.state !== UNAVAILABLE ) { return html` - - - - - `; + + + + + `; } if ( - domain === "climate" && - supportsFeature( - this.stateObj, - ClimateEntityFeature.TARGET_TEMPERATURE_RANGE - ) + this._supportsTargetRange() && + this._targetTemperature.low != null && + this._targetTemperature.high != null && + this.stateObj.state !== UNAVAILABLE ) { return html` - - - - - - - `; + + + + + + + `; } - return nothing; + return html` + + + + + `; } static get styles() {