change values when unsupported_unit_metadata_can_convert (#13903)

This commit is contained in:
Bram Kragten 2022-09-29 04:52:40 +02:00 committed by GitHub
parent 8ccd0426dd
commit b88317f1d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 52 additions and 11 deletions

View File

@ -37,6 +37,7 @@ export type StatisticsValidationResult =
| StatisticsValidationResultUnitsChanged | StatisticsValidationResultUnitsChanged
| StatisticsValidationResultUnitsChangedCanConvert | StatisticsValidationResultUnitsChangedCanConvert
| StatisticsValidationResultUnsupportedUnitMetadata | StatisticsValidationResultUnsupportedUnitMetadata
| StatisticsValidationResultUnsupportedUnitMetadataCanConvert
| StatisticsValidationResultUnsupportedUnitState; | StatisticsValidationResultUnsupportedUnitState;
export interface StatisticsValidationResultNoState { export interface StatisticsValidationResultNoState {
@ -79,6 +80,16 @@ export interface StatisticsValidationResultUnsupportedUnitMetadata {
}; };
} }
export interface StatisticsValidationResultUnsupportedUnitMetadataCanConvert {
type: "unsupported_unit_metadata_can_convert";
data: {
statistic_id: string;
device_class: string;
metadata_unit: string;
supported_unit: string;
};
}
export interface StatisticsUnitConfiguration { export interface StatisticsUnitConfiguration {
energy?: "Wh" | "kWh" | "MWh"; energy?: "Wh" | "kWh" | "MWh";
power?: "W" | "kW"; power?: "W" | "kW";

View File

@ -35,7 +35,8 @@ const FIX_ISSUES_ORDER = {
unsupported_state_class: 3, unsupported_state_class: 3,
units_changed_can_convert: 4, units_changed_can_convert: 4,
units_changed: 5, units_changed: 5,
unsupported_unit_metadata: 6, unsupported_unit_metadata_can_convert: 6,
unsupported_unit_metadata: 7,
}; };
@customElement("developer-tools-statistics") @customElement("developer-tools-statistics")
class HaPanelDevStatistics extends SubscribeMixin(LitElement) { class HaPanelDevStatistics extends SubscribeMixin(LitElement) {
@ -323,6 +324,14 @@ class HaPanelDevStatistics extends SubscribeMixin(LitElement) {
}, },
}); });
break; break;
case "unsupported_unit_metadata_can_convert":
showFixStatisticsUnsupportedUnitMetadataDialog(this, {
issue,
fixedCallback: () => {
this._validateStatistics();
},
});
break;
case "unsupported_unit_state": case "unsupported_unit_state":
showAlertDialog(this, { showAlertDialog(this, {
title: "Unsupported unit", title: "Unsupported unit",

View File

@ -5,7 +5,10 @@ import "../../../components/ha-dialog";
import { fireEvent } from "../../../common/dom/fire_event"; import { fireEvent } from "../../../common/dom/fire_event";
import { haStyle, haStyleDialog } from "../../../resources/styles"; import { haStyle, haStyleDialog } from "../../../resources/styles";
import { HomeAssistant } from "../../../types"; import { HomeAssistant } from "../../../types";
import { updateStatisticsMetadata } from "../../../data/recorder"; import {
changeStatisticUnit,
updateStatisticsMetadata,
} from "../../../data/recorder";
import "../../../components/ha-formfield"; import "../../../components/ha-formfield";
import "../../../components/ha-radio"; import "../../../components/ha-radio";
import type { DialogStatisticsUnsupportedUnitMetaParams } from "./show-dialog-statistics-fix-unsupported-unit-meta"; import type { DialogStatisticsUnsupportedUnitMetaParams } from "./show-dialog-statistics-fix-unsupported-unit-meta";
@ -43,8 +46,12 @@ export class DialogStatisticsFixUnsupportedUnitMetadata extends LitElement {
should be ${this._params.issue.data.supported_unit}. should be ${this._params.issue.data.supported_unit}.
</p> </p>
<p> <p>
Do you want to update the unit of the history statistics to ${this._params.issue.type === "unsupported_unit_metadata_can_convert"
${this._params.issue.data.supported_unit}? ? `Do you want to convert all the historic statistic values to
${this._params.issue.data.supported_unit}?`
: `Do you want to update the unit of the history statistics to
${this._params.issue.data.supported_unit} without converting the
values?`}
</p> </p>
<mwc-button <mwc-button
@ -62,11 +69,20 @@ export class DialogStatisticsFixUnsupportedUnitMetadata extends LitElement {
} }
private async _fixIssue(): Promise<void> { private async _fixIssue(): Promise<void> {
await updateStatisticsMetadata( if (this._params!.issue.type === "unsupported_unit_metadata_can_convert") {
this.hass, await changeStatisticUnit(
this._params!.issue.data.statistic_id, this.hass,
this._params!.issue.data.supported_unit this._params!.issue.data.statistic_id,
); this._params!.issue.data.metadata_unit,
this._params!.issue.data.supported_unit
);
} else {
await updateStatisticsMetadata(
this.hass,
this._params!.issue.data.statistic_id,
this._params!.issue.data.supported_unit
);
}
this._params?.fixedCallback(); this._params?.fixedCallback();
this.closeDialog(); this.closeDialog();
} }

View File

@ -1,11 +1,16 @@
import { fireEvent } from "../../../common/dom/fire_event"; import { fireEvent } from "../../../common/dom/fire_event";
import { StatisticsValidationResultUnsupportedUnitMetadata } from "../../../data/recorder"; import {
StatisticsValidationResultUnsupportedUnitMetadata,
StatisticsValidationResultUnsupportedUnitMetadataCanConvert,
} from "../../../data/recorder";
export const loadFixUnsupportedUnitMetaDialog = () => export const loadFixUnsupportedUnitMetaDialog = () =>
import("./dialog-statistics-fix-unsupported-unit-meta"); import("./dialog-statistics-fix-unsupported-unit-meta");
export interface DialogStatisticsUnsupportedUnitMetaParams { export interface DialogStatisticsUnsupportedUnitMetaParams {
issue: StatisticsValidationResultUnsupportedUnitMetadata; issue:
| StatisticsValidationResultUnsupportedUnitMetadata
| StatisticsValidationResultUnsupportedUnitMetadataCanConvert;
fixedCallback: () => void; fixedCallback: () => void;
} }