From 6cae11f0a67f1d7bb4ffe2fff522ef62b92e0c6a Mon Sep 17 00:00:00 2001 From: karwosts <32912880+karwosts@users.noreply.github.com> Date: Mon, 23 Oct 2023 07:03:42 -0700 Subject: [PATCH] Update statistics chart to respect entity display precision, fix precision bug in history chart (#18334) --- src/components/chart/state-history-chart-line.ts | 14 ++++---------- src/components/chart/statistics-chart.ts | 12 +++++++++++- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/components/chart/state-history-chart-line.ts b/src/components/chart/state-history-chart-line.ts index e869ffadfe..d73faaf9e7 100644 --- a/src/components/chart/state-history-chart-line.ts +++ b/src/components/chart/state-history-chart-line.ts @@ -141,16 +141,10 @@ export class StateHistoryChartLine extends LitElement { `${context.dataset.label}: ${formatNumber( context.parsed.y, this.hass.locale, - this.data[context.datasetIndex]?.entity_id - ? getNumberFormatOptions( - this.hass.states[ - this.data[context.datasetIndex].entity_id - ], - this.hass.entities[ - this.data[context.datasetIndex].entity_id - ] - ) - : undefined + getNumberFormatOptions( + undefined, + this.hass.entities[this._entityIds[context.datasetIndex]] + ) )} ${this.unit}`, }, }, diff --git a/src/components/chart/statistics-chart.ts b/src/components/chart/statistics-chart.ts index 2e674a51f6..f518d0db73 100644 --- a/src/components/chart/statistics-chart.ts +++ b/src/components/chart/statistics-chart.ts @@ -19,6 +19,7 @@ import { isComponentLoaded } from "../../common/config/is_component_loaded"; import { formatNumber, numberFormatToLocale, + getNumberFormatOptions, } from "../../common/number/format_number"; import { getDisplayUnit, @@ -74,6 +75,8 @@ export class StatisticsChart extends LitElement { @state() private _chartData: ChartData = { datasets: [] }; + @state() private _statisticIds: string[] = []; + @state() private _chartOptions?: ChartOptions; @query("ha-chart-base") private _chart?: HaChartBase; @@ -189,7 +192,11 @@ export class StatisticsChart extends LitElement { label: (context) => `${context.dataset.label}: ${formatNumber( context.parsed.y, - this.hass.locale + this.hass.locale, + getNumberFormatOptions( + undefined, + this.hass.entities[this._statisticIds[context.datasetIndex]] + ) )} ${ // @ts-ignore context.dataset.unit || "" @@ -248,6 +255,7 @@ export class StatisticsChart extends LitElement { let colorIndex = 0; const statisticsData = Object.entries(this.statisticsData); const totalDataSets: ChartDataset<"line">[] = []; + const statisticIds: string[] = []; let endTime: Date; if (statisticsData.length === 0) { @@ -386,6 +394,7 @@ export class StatisticsChart extends LitElement { unit: meta?.unit_of_measurement, band, }); + statisticIds.push(statistic_id); } }); @@ -427,6 +436,7 @@ export class StatisticsChart extends LitElement { this._chartData = { datasets: totalDataSets, }; + this._statisticIds = statisticIds; } static get styles(): CSSResultGroup {