mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-25 18:26:35 +00:00
Energy device settings fixes (#24801)
This commit is contained in:
parent
b009d71e8f
commit
94ee99160b
@ -152,12 +152,14 @@ export class EnergyDeviceSettings extends LitElement {
|
|||||||
device_consumptions: this.preferences
|
device_consumptions: this.preferences
|
||||||
.device_consumption as DeviceConsumptionEnergyPreference[],
|
.device_consumption as DeviceConsumptionEnergyPreference[],
|
||||||
saveCallback: async (newDevice) => {
|
saveCallback: async (newDevice) => {
|
||||||
await this._savePreferences({
|
const newPrefs = {
|
||||||
...this.preferences,
|
...this.preferences,
|
||||||
device_consumption: this.preferences.device_consumption.map((d) =>
|
device_consumption: this.preferences.device_consumption.map((d) =>
|
||||||
d === origDevice ? newDevice : d
|
d === origDevice ? newDevice : d
|
||||||
),
|
),
|
||||||
});
|
};
|
||||||
|
this._sanitizeParents(newPrefs);
|
||||||
|
await this._savePreferences(newPrefs);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -177,6 +179,15 @@ export class EnergyDeviceSettings extends LitElement {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _sanitizeParents(prefs: EnergyPreferences) {
|
||||||
|
const statIds = prefs.device_consumption.map((d) => d.stat_consumption);
|
||||||
|
prefs.device_consumption.forEach((d) => {
|
||||||
|
if (d.included_in_stat && !statIds.includes(d.included_in_stat)) {
|
||||||
|
delete d.included_in_stat;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private async _deleteDevice(ev) {
|
private async _deleteDevice(ev) {
|
||||||
const deviceToDelete: DeviceConsumptionEnergyPreference =
|
const deviceToDelete: DeviceConsumptionEnergyPreference =
|
||||||
ev.currentTarget.device;
|
ev.currentTarget.device;
|
||||||
@ -196,14 +207,7 @@ export class EnergyDeviceSettings extends LitElement {
|
|||||||
(device) => device !== deviceToDelete
|
(device) => device !== deviceToDelete
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
newPrefs.device_consumption.forEach((d, idx) => {
|
this._sanitizeParents(newPrefs);
|
||||||
if (d.included_in_stat === deviceToDelete.stat_consumption) {
|
|
||||||
newPrefs.device_consumption[idx] = {
|
|
||||||
...newPrefs.device_consumption[idx],
|
|
||||||
};
|
|
||||||
delete newPrefs.device_consumption[idx].included_in_stat;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
await this._savePreferences(newPrefs);
|
await this._savePreferences(newPrefs);
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
showAlertDialog(this, { title: `Failed to save config: ${err.message}` });
|
showAlertDialog(this, { title: `Failed to save config: ${err.message}` });
|
||||||
|
@ -74,6 +74,7 @@ export class DialogEnergyDeviceSettings
|
|||||||
this._possibleParents = this._params.device_consumptions.filter(
|
this._possibleParents = this._params.device_consumptions.filter(
|
||||||
(d) =>
|
(d) =>
|
||||||
d.stat_consumption !== this._device!.stat_consumption &&
|
d.stat_consumption !== this._device!.stat_consumption &&
|
||||||
|
d.stat_consumption !== this._params?.device?.stat_consumption &&
|
||||||
!children.includes(d.stat_consumption)
|
!children.includes(d.stat_consumption)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -160,18 +161,26 @@ export class DialogEnergyDeviceSettings
|
|||||||
naturalMenuWidth
|
naturalMenuWidth
|
||||||
clearable
|
clearable
|
||||||
>
|
>
|
||||||
${this._possibleParents.map(
|
${!this._possibleParents.length
|
||||||
(stat) => html`
|
? html`
|
||||||
<mwc-list-item .value=${stat.stat_consumption}
|
<mwc-list-item disabled value="-"
|
||||||
>${stat.name ||
|
>${this.hass.localize(
|
||||||
getStatisticLabel(
|
"ui.panel.config.energy.device_consumption.dialog.no_upstream_devices"
|
||||||
this.hass,
|
)}</mwc-list-item
|
||||||
stat.stat_consumption,
|
>
|
||||||
this._params?.statsMetadata?.[stat.stat_consumption]
|
`
|
||||||
)}</mwc-list-item
|
: this._possibleParents.map(
|
||||||
>
|
(stat) => html`
|
||||||
`
|
<mwc-list-item .value=${stat.stat_consumption}
|
||||||
)}
|
>${stat.name ||
|
||||||
|
getStatisticLabel(
|
||||||
|
this.hass,
|
||||||
|
stat.stat_consumption,
|
||||||
|
this._params?.statsMetadata?.[stat.stat_consumption]
|
||||||
|
)}</mwc-list-item
|
||||||
|
>
|
||||||
|
`
|
||||||
|
)}
|
||||||
</ha-select>
|
</ha-select>
|
||||||
|
|
||||||
<mwc-button @click=${this.closeDialog} slot="secondaryAction">
|
<mwc-button @click=${this.closeDialog} slot="secondaryAction">
|
||||||
|
@ -2902,7 +2902,8 @@
|
|||||||
"device_consumption_energy": "Device energy consumption",
|
"device_consumption_energy": "Device energy consumption",
|
||||||
"selected_stat_intro": "Select the energy sensor that measures the device's energy usage in either of {unit}.",
|
"selected_stat_intro": "Select the energy sensor that measures the device's energy usage in either of {unit}.",
|
||||||
"included_in_device": "Upstream device",
|
"included_in_device": "Upstream device",
|
||||||
"included_in_device_helper": "If this device is already counted by another device (such as a smart switch measured by a smart breaker), selecting the upstream device prevents duplicate energy tracking."
|
"included_in_device_helper": "If this device is already counted by another device (such as a smart switch measured by a smart breaker), selecting the upstream device prevents duplicate energy tracking.",
|
||||||
|
"no_upstream_devices": "No eligible upstream devices"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user