diff --git a/src/data/recorder.ts b/src/data/recorder.ts index ca00fbff67..c13e8bc210 100644 --- a/src/data/recorder.ts +++ b/src/data/recorder.ts @@ -37,6 +37,7 @@ export type StatisticsValidationResult = | StatisticsValidationResultUnitsChanged | StatisticsValidationResultUnitsChangedCanConvert | StatisticsValidationResultUnsupportedUnitMetadata + | StatisticsValidationResultUnsupportedUnitMetadataCanConvert | StatisticsValidationResultUnsupportedUnitState; 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 { energy?: "Wh" | "kWh" | "MWh"; power?: "W" | "kW"; diff --git a/src/panels/developer-tools/statistics/developer-tools-statistics.ts b/src/panels/developer-tools/statistics/developer-tools-statistics.ts index 50f0452b3b..8ea66e1083 100644 --- a/src/panels/developer-tools/statistics/developer-tools-statistics.ts +++ b/src/panels/developer-tools/statistics/developer-tools-statistics.ts @@ -35,7 +35,8 @@ const FIX_ISSUES_ORDER = { unsupported_state_class: 3, units_changed_can_convert: 4, units_changed: 5, - unsupported_unit_metadata: 6, + unsupported_unit_metadata_can_convert: 6, + unsupported_unit_metadata: 7, }; @customElement("developer-tools-statistics") class HaPanelDevStatistics extends SubscribeMixin(LitElement) { @@ -323,6 +324,14 @@ class HaPanelDevStatistics extends SubscribeMixin(LitElement) { }, }); break; + case "unsupported_unit_metadata_can_convert": + showFixStatisticsUnsupportedUnitMetadataDialog(this, { + issue, + fixedCallback: () => { + this._validateStatistics(); + }, + }); + break; case "unsupported_unit_state": showAlertDialog(this, { title: "Unsupported unit", diff --git a/src/panels/developer-tools/statistics/dialog-statistics-fix-unsupported-unit-meta.ts b/src/panels/developer-tools/statistics/dialog-statistics-fix-unsupported-unit-meta.ts index 0058fa49d2..084aa81577 100644 --- a/src/panels/developer-tools/statistics/dialog-statistics-fix-unsupported-unit-meta.ts +++ b/src/panels/developer-tools/statistics/dialog-statistics-fix-unsupported-unit-meta.ts @@ -5,7 +5,10 @@ import "../../../components/ha-dialog"; import { fireEvent } from "../../../common/dom/fire_event"; import { haStyle, haStyleDialog } from "../../../resources/styles"; import { HomeAssistant } from "../../../types"; -import { updateStatisticsMetadata } from "../../../data/recorder"; +import { + changeStatisticUnit, + updateStatisticsMetadata, +} from "../../../data/recorder"; import "../../../components/ha-formfield"; import "../../../components/ha-radio"; 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}.
- Do you want to update the unit of the history statistics to - ${this._params.issue.data.supported_unit}? + ${this._params.issue.type === "unsupported_unit_metadata_can_convert" + ? `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?`}