From 95bbf6e0d2fdb99e272aef9197d1d7d64f57ea48 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 22 Sep 2022 16:09:33 +0200 Subject: [PATCH] prevent fetching stats twice --- .../lovelace/cards/hui-statistics-graph-card.ts | 10 ++-------- .../hui-statistics-graph-card-editor.ts | 15 ++++++++------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/panels/lovelace/cards/hui-statistics-graph-card.ts b/src/panels/lovelace/cards/hui-statistics-graph-card.ts index 4a6f4d39c7..e1410e6511 100644 --- a/src/panels/lovelace/cards/hui-statistics-graph-card.ts +++ b/src/panels/lovelace/cards/hui-statistics-graph-card.ts @@ -38,8 +38,6 @@ export class HuiStatisticsGraphCard extends LitElement implements LovelaceCard { private _names: Record = {}; - private _fetching = false; - private _interval?: number; public disconnectedCallback() { @@ -156,15 +154,11 @@ export class HuiStatisticsGraphCard extends LitElement implements LovelaceCard { } private async _getStatistics(): Promise { - if (this._fetching) { - return; - } const startDate = new Date(); startDate.setTime( startDate.getTime() - 1000 * 60 * 60 * (24 * (this._config!.days_to_show || 30) + 1) ); - this._fetching = true; try { this._statistics = await fetchStatistics( this.hass!, @@ -173,8 +167,8 @@ export class HuiStatisticsGraphCard extends LitElement implements LovelaceCard { this._entities, this._config!.period ); - } finally { - this._fetching = false; + } catch (err) { + this._statistics = undefined; } } diff --git a/src/panels/lovelace/editor/config-elements/hui-statistics-graph-card-editor.ts b/src/panels/lovelace/editor/config-elements/hui-statistics-graph-card-editor.ts index 33613af59f..19ae4fe15f 100644 --- a/src/panels/lovelace/editor/config-elements/hui-statistics-graph-card-editor.ts +++ b/src/panels/lovelace/editor/config-elements/hui-statistics-graph-card-editor.ts @@ -94,12 +94,6 @@ export class HuiStatisticsGraphCardEditor this.hass!, statisticIds || [] ); - if (statisticIds?.some((statistic_id) => statistic_id.includes(":"))) { - const { period, ...config } = this._config!; - fireEvent(this, "config-changed", { - config: config, - }); - } }; public willUpdate(changedProps: PropertyValues) { @@ -239,8 +233,15 @@ export class HuiStatisticsGraphCardEditor } private _entitiesChanged(ev: CustomEvent): void { + const config = { ...this._config!, entities: ev.detail.value }; + if ( + config.entities?.some((statistic_id) => statistic_id.includes(":")) && + config.period === "5minute" + ) { + delete config.period; + } fireEvent(this, "config-changed", { - config: { ...this._config!, entities: ev.detail.value }, + config, }); }