mirror of
https://github.com/home-assistant/frontend.git
synced 2025-12-20 02:38:53 +00:00
Fix incorrect water & gas price hints (#28357)
* Fix incorrect water price hint * Gas
This commit is contained in:
@@ -9,6 +9,7 @@ import "../../../../components/ha-dialog";
|
|||||||
import "../../../../components/ha-formfield";
|
import "../../../../components/ha-formfield";
|
||||||
import "../../../../components/ha-radio";
|
import "../../../../components/ha-radio";
|
||||||
import "../../../../components/ha-button";
|
import "../../../../components/ha-button";
|
||||||
|
import "../../../../components/ha-markdown";
|
||||||
import type { HaRadio } from "../../../../components/ha-radio";
|
import type { HaRadio } from "../../../../components/ha-radio";
|
||||||
import "../../../../components/ha-textfield";
|
import "../../../../components/ha-textfield";
|
||||||
import type { GasSourceTypeEnergyPreference } from "../../../../data/energy";
|
import type { GasSourceTypeEnergyPreference } from "../../../../data/energy";
|
||||||
@@ -109,6 +110,15 @@ export class DialogEnergyGasSettings
|
|||||||
? `${this.hass.config.currency}/${this._pickedDisplayUnit}`
|
? `${this.hass.config.currency}/${this._pickedDisplayUnit}`
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
|
const pickedUnitClass =
|
||||||
|
this._pickedDisplayUnit &&
|
||||||
|
this._energy_units?.includes(this._pickedDisplayUnit)
|
||||||
|
? "energy"
|
||||||
|
: this._pickedDisplayUnit &&
|
||||||
|
this._gas_units?.includes(this._pickedDisplayUnit)
|
||||||
|
? "volume"
|
||||||
|
: undefined;
|
||||||
|
|
||||||
const externalSource =
|
const externalSource =
|
||||||
this._source.stat_energy_from &&
|
this._source.stat_energy_from &&
|
||||||
isExternalStatistic(this._source.stat_energy_from);
|
isExternalStatistic(this._source.stat_energy_from);
|
||||||
@@ -213,9 +223,33 @@ export class DialogEnergyGasSettings
|
|||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
include-domains='["sensor", "input_number"]'
|
include-domains='["sensor", "input_number"]'
|
||||||
.value=${this._source.entity_energy_price}
|
.value=${this._source.entity_energy_price}
|
||||||
.label=${`${this.hass.localize(
|
.label=${this.hass.localize(
|
||||||
"ui.panel.config.energy.gas.dialog.cost_entity_input"
|
"ui.panel.config.energy.gas.dialog.cost_entity_input"
|
||||||
)} ${unitPrice ? ` (${unitPrice})` : ""}`}
|
)}
|
||||||
|
.helper=${pickedUnitClass
|
||||||
|
? html`<ha-markdown
|
||||||
|
.content=${this.hass.localize(
|
||||||
|
"ui.panel.config.energy.gas.dialog.cost_entity_helper",
|
||||||
|
pickedUnitClass === "energy"
|
||||||
|
? {
|
||||||
|
currency: this.hass.config.currency,
|
||||||
|
class: this.hass.localize(
|
||||||
|
"ui.panel.config.energy.gas.dialog.cost_entity_helper_energy"
|
||||||
|
),
|
||||||
|
unit1: "kWh",
|
||||||
|
unit2: "Wh",
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
currency: this.hass.config.currency,
|
||||||
|
class: this.hass.localize(
|
||||||
|
"ui.panel.config.energy.gas.dialog.cost_entity_helper_volume"
|
||||||
|
),
|
||||||
|
unit1: "m³",
|
||||||
|
unit2: "ft³",
|
||||||
|
}
|
||||||
|
)}
|
||||||
|
></ha-markdown>`
|
||||||
|
: nothing}
|
||||||
@value-changed=${this._priceEntityChanged}
|
@value-changed=${this._priceEntityChanged}
|
||||||
></ha-entity-picker>`
|
></ha-entity-picker>`
|
||||||
: ""}
|
: ""}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import "../../../../components/ha-dialog";
|
|||||||
import "../../../../components/ha-button";
|
import "../../../../components/ha-button";
|
||||||
import "../../../../components/ha-formfield";
|
import "../../../../components/ha-formfield";
|
||||||
import "../../../../components/ha-radio";
|
import "../../../../components/ha-radio";
|
||||||
|
import "../../../../components/ha-markdown";
|
||||||
import type { HaRadio } from "../../../../components/ha-radio";
|
import type { HaRadio } from "../../../../components/ha-radio";
|
||||||
import "../../../../components/ha-textfield";
|
import "../../../../components/ha-textfield";
|
||||||
import type { WaterSourceTypeEnergyPreference } from "../../../../data/energy";
|
import type { WaterSourceTypeEnergyPreference } from "../../../../data/energy";
|
||||||
@@ -16,11 +17,7 @@ import {
|
|||||||
emptyWaterEnergyPreference,
|
emptyWaterEnergyPreference,
|
||||||
energyStatisticHelpUrl,
|
energyStatisticHelpUrl,
|
||||||
} from "../../../../data/energy";
|
} from "../../../../data/energy";
|
||||||
import {
|
import { isExternalStatistic } from "../../../../data/recorder";
|
||||||
getDisplayUnit,
|
|
||||||
getStatisticMetadata,
|
|
||||||
isExternalStatistic,
|
|
||||||
} from "../../../../data/recorder";
|
|
||||||
import { getSensorDeviceClassConvertibleUnits } from "../../../../data/sensor";
|
import { getSensorDeviceClassConvertibleUnits } from "../../../../data/sensor";
|
||||||
import type { HassDialog } from "../../../../dialogs/make-dialog-manager";
|
import type { HassDialog } from "../../../../dialogs/make-dialog-manager";
|
||||||
import { haStyle, haStyleDialog } from "../../../../resources/styles";
|
import { haStyle, haStyleDialog } from "../../../../resources/styles";
|
||||||
@@ -40,8 +37,6 @@ export class DialogEnergyWaterSettings
|
|||||||
|
|
||||||
@state() private _costs?: "no-costs" | "number" | "entity" | "statistic";
|
@state() private _costs?: "no-costs" | "number" | "entity" | "statistic";
|
||||||
|
|
||||||
@state() private _pickedDisplayUnit?: string | null;
|
|
||||||
|
|
||||||
@state() private _water_units?: string[];
|
@state() private _water_units?: string[];
|
||||||
|
|
||||||
@state() private _error?: string;
|
@state() private _error?: string;
|
||||||
@@ -55,11 +50,6 @@ export class DialogEnergyWaterSettings
|
|||||||
this._source = params.source
|
this._source = params.source
|
||||||
? { ...params.source }
|
? { ...params.source }
|
||||||
: emptyWaterEnergyPreference();
|
: emptyWaterEnergyPreference();
|
||||||
this._pickedDisplayUnit = getDisplayUnit(
|
|
||||||
this.hass,
|
|
||||||
params.source?.stat_energy_from,
|
|
||||||
params.metadata
|
|
||||||
);
|
|
||||||
this._costs = this._source.entity_energy_price
|
this._costs = this._source.entity_energy_price
|
||||||
? "entity"
|
? "entity"
|
||||||
: this._source.number_energy_price
|
: this._source.number_energy_price
|
||||||
@@ -79,7 +69,6 @@ export class DialogEnergyWaterSettings
|
|||||||
this._params = undefined;
|
this._params = undefined;
|
||||||
this._source = undefined;
|
this._source = undefined;
|
||||||
this._error = undefined;
|
this._error = undefined;
|
||||||
this._pickedDisplayUnit = undefined;
|
|
||||||
this._excludeList = undefined;
|
this._excludeList = undefined;
|
||||||
fireEvent(this, "dialog-closed", { dialog: this.localName });
|
fireEvent(this, "dialog-closed", { dialog: this.localName });
|
||||||
return true;
|
return true;
|
||||||
@@ -92,10 +81,6 @@ export class DialogEnergyWaterSettings
|
|||||||
|
|
||||||
const pickableUnit = this._water_units?.join(", ") || "";
|
const pickableUnit = this._water_units?.join(", ") || "";
|
||||||
|
|
||||||
const unitPriceSensor = this._pickedDisplayUnit
|
|
||||||
? `${this.hass.config.currency}/${this._pickedDisplayUnit}`
|
|
||||||
: undefined;
|
|
||||||
|
|
||||||
const unitPriceFixed = `${this.hass.config.currency}/${
|
const unitPriceFixed = `${this.hass.config.currency}/${
|
||||||
this.hass.config.unit_system.volume === "gal" ? "gal" : "m³"
|
this.hass.config.unit_system.volume === "gal" ? "gal" : "m³"
|
||||||
}`;
|
}`;
|
||||||
@@ -202,9 +187,15 @@ export class DialogEnergyWaterSettings
|
|||||||
.hass=${this.hass}
|
.hass=${this.hass}
|
||||||
include-domains='["sensor", "input_number"]'
|
include-domains='["sensor", "input_number"]'
|
||||||
.value=${this._source.entity_energy_price}
|
.value=${this._source.entity_energy_price}
|
||||||
.label=${`${this.hass.localize(
|
.label=${this.hass.localize(
|
||||||
"ui.panel.config.energy.water.dialog.cost_entity_input"
|
"ui.panel.config.energy.water.dialog.cost_entity_input"
|
||||||
)}${unitPriceSensor ? ` (${unitPriceSensor})` : ""}`}
|
)}
|
||||||
|
.helper=${html`<ha-markdown
|
||||||
|
.content=${this.hass.localize(
|
||||||
|
"ui.panel.config.energy.water.dialog.cost_entity_helper",
|
||||||
|
{ currency: this.hass.config.currency }
|
||||||
|
)}
|
||||||
|
></ha-markdown>`}
|
||||||
@value-changed=${this._priceEntityChanged}
|
@value-changed=${this._priceEntityChanged}
|
||||||
></ha-entity-picker>`
|
></ha-entity-picker>`
|
||||||
: ""}
|
: ""}
|
||||||
@@ -287,16 +278,6 @@ export class DialogEnergyWaterSettings
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async _statisticChanged(ev: CustomEvent<{ value: string }>) {
|
private async _statisticChanged(ev: CustomEvent<{ value: string }>) {
|
||||||
if (ev.detail.value) {
|
|
||||||
const metadata = await getStatisticMetadata(this.hass, [ev.detail.value]);
|
|
||||||
this._pickedDisplayUnit = getDisplayUnit(
|
|
||||||
this.hass,
|
|
||||||
ev.detail.value,
|
|
||||||
metadata[0]
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
this._pickedDisplayUnit = undefined;
|
|
||||||
}
|
|
||||||
if (isExternalStatistic(ev.detail.value) && this._costs !== "statistic") {
|
if (isExternalStatistic(ev.detail.value) && this._costs !== "statistic") {
|
||||||
this._costs = "no-costs";
|
this._costs = "no-costs";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3206,6 +3206,9 @@
|
|||||||
"cost_stat_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_stat_input%]",
|
"cost_stat_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_stat_input%]",
|
||||||
"cost_entity": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_entity%]",
|
"cost_entity": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_entity%]",
|
||||||
"cost_entity_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_entity_input%]",
|
"cost_entity_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_entity_input%]",
|
||||||
|
"cost_entity_helper": "Any entity with a unit of `{currency}/(valid {class} unit)` (e.g. `{currency}/{unit1}` or `{currency}/{unit2}`) may be used and will be automatically converted.",
|
||||||
|
"cost_entity_helper_energy": "energy",
|
||||||
|
"cost_entity_helper_volume": "volume",
|
||||||
"cost_number": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_number%]",
|
"cost_number": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_number%]",
|
||||||
"cost_number_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_number%]",
|
"cost_number_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_number%]",
|
||||||
"gas_usage": "Gas usage"
|
"gas_usage": "Gas usage"
|
||||||
@@ -3229,6 +3232,7 @@
|
|||||||
"cost_stat_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_stat_input%]",
|
"cost_stat_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_stat_input%]",
|
||||||
"cost_entity": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_entity%]",
|
"cost_entity": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_entity%]",
|
||||||
"cost_entity_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_entity_input%]",
|
"cost_entity_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_entity_input%]",
|
||||||
|
"cost_entity_helper": "Any entity with a unit of `{currency}/(valid water unit)` (e.g. `{currency}/gal` or `{currency}/m³`) may be used and will be automatically converted.",
|
||||||
"cost_number": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_number%]",
|
"cost_number": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_number%]",
|
||||||
"cost_number_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_number%]",
|
"cost_number_input": "[%key:ui::panel::config::energy::grid::flow_dialog::from::cost_number%]",
|
||||||
"water_usage": "Water usage"
|
"water_usage": "Water usage"
|
||||||
|
|||||||
Reference in New Issue
Block a user