From 7b9683df89ab84fd32dc26d7d57a3f34c96a4071 Mon Sep 17 00:00:00 2001 From: Petar Petrov Date: Tue, 10 Jun 2025 11:28:51 +0300 Subject: [PATCH] Fix period boundaries in Energy dashboard (#25728) --- src/data/energy.ts | 4 +++- .../cards/energy/common/energy-chart-options.ts | 6 ++++++ .../lovelace/components/hui-energy-period-selector.ts | 11 ++--------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/data/energy.ts b/src/data/energy.ts index 904e39728d..0ee60fde90 100644 --- a/src/data/energy.ts +++ b/src/data/energy.ts @@ -679,7 +679,9 @@ export const getEnergyDataCollection = ( const period = preferredPeriod === "today" && hour === "0" ? "yesterday" : preferredPeriod; - [collection.start, collection.end] = calcDateRange(hass, period); + const [start, end] = calcDateRange(hass, period); + collection.start = calcDate(start, startOfDay, hass.locale, hass.config); + collection.end = calcDate(end, endOfDay, hass.locale, hass.config); const scheduleUpdatePeriod = () => { collection._updatePeriodTimeout = window.setTimeout( diff --git a/src/panels/lovelace/cards/energy/common/energy-chart-options.ts b/src/panels/lovelace/cards/energy/common/energy-chart-options.ts index d26d47f96d..ff423acec7 100644 --- a/src/panels/lovelace/cards/energy/common/energy-chart-options.ts +++ b/src/panels/lovelace/cards/energy/common/energy-chart-options.ts @@ -10,6 +10,8 @@ import { addYears, addMonths, addHours, + startOfDay, + addDays, } from "date-fns"; import type { BarSeriesOption, @@ -282,6 +284,10 @@ export function getCompareTransform(start: Date, compareStart?: Date) { ) { return (ts: Date) => addMonths(ts, compareMonthDiff); } + const compareDayDiff = differenceInDays(start, compareStart); + if (compareDayDiff !== 0 && start.getTime() === startOfDay(start).getTime()) { + return (ts: Date) => addDays(ts, compareDayDiff); + } const compareOffset = start.getTime() - compareStart.getTime(); return (ts: Date) => addMilliseconds(ts, compareOffset); } diff --git a/src/panels/lovelace/components/hui-energy-period-selector.ts b/src/panels/lovelace/components/hui-energy-period-selector.ts index 6f1742d031..22bf863e34 100644 --- a/src/panels/lovelace/components/hui-energy-period-selector.ts +++ b/src/panels/lovelace/components/hui-energy-period-selector.ts @@ -297,24 +297,17 @@ export class HuiEnergyPeriodSelector extends SubscribeMixin(LitElement) { } private _dateRangeChanged(ev) { - const weekStartsOn = firstWeekdayIndex(this.hass.locale); this._startDate = calcDate( ev.detail.value.startDate, startOfDay, this.hass.locale, - this.hass.config, - { - weekStartsOn, - } + this.hass.config ); this._endDate = calcDate( ev.detail.value.endDate, endOfDay, this.hass.locale, - this.hass.config, - { - weekStartsOn, - } + this.hass.config ); this._updateCollectionPeriod();