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 745a9d2e19..cff27590b9 100644 --- a/src/panels/lovelace/cards/energy/common/energy-chart-options.ts +++ b/src/panels/lovelace/cards/energy/common/energy-chart-options.ts @@ -382,6 +382,21 @@ export function fillLineGaps(datasets: LineSeriesOption[]) { return datasets; } +export function computeStatMidpoint( + start: number, + end: number, + compareTransform?: (ts: Date) => Date +): number { + if (compareTransform) { + return ( + (compareTransform(new Date(start)).getTime() + + compareTransform(new Date(end)).getTime()) / + 2 + ); + } + return (start + end) / 2; +} + export function getCompareTransform(start: Date, compareStart?: Date) { if (!compareStart) { return (ts: Date) => ts; diff --git a/src/panels/lovelace/cards/energy/hui-energy-devices-detail-graph-card.ts b/src/panels/lovelace/cards/energy/hui-energy-devices-detail-graph-card.ts index ca98878f44..3cac642b13 100644 --- a/src/panels/lovelace/cards/energy/hui-energy-devices-detail-graph-card.ts +++ b/src/panels/lovelace/cards/energy/hui-energy-devices-detail-graph-card.ts @@ -32,6 +32,7 @@ import type { LovelaceCard } from "../../types"; import type { EnergyDevicesDetailGraphCardConfig } from "../types"; import { hasConfigChanged } from "../../common/has-changed"; import { + computeStatMidpoint, fillDataGapsAndRoundCaps, getCommonOptions, getCompareTransform, @@ -502,15 +503,14 @@ export class HuiEnergyDevicesDetailGraphCard }); const dataPoint = [ - (point.start + point.end) / 2, + computeStatMidpoint( + point.start, + point.end, + compare ? compareTransform : undefined + ), point.change - sumChildren, point.start, ]; - if (compare) { - const s = compareTransform(new Date(point.start)); - const e = compareTransform(new Date(point.end)); - dataPoint[0] = (s.getTime() + e.getTime()) / 2; - } consumptionData.push(dataPoint); prevStart = point.start; } diff --git a/src/panels/lovelace/cards/energy/hui-energy-gas-graph-card.ts b/src/panels/lovelace/cards/energy/hui-energy-gas-graph-card.ts index 8235814ebb..210f76163a 100644 --- a/src/panels/lovelace/cards/energy/hui-energy-gas-graph-card.ts +++ b/src/panels/lovelace/cards/energy/hui-energy-gas-graph-card.ts @@ -27,6 +27,7 @@ import type { LovelaceCard } from "../../types"; import type { EnergyGasGraphCardConfig } from "../types"; import { hasConfigChanged } from "../../common/has-changed"; import { + computeStatMidpoint, fillDataGapsAndRoundCaps, getCommonOptions, getCompareTransform, @@ -286,15 +287,14 @@ export class HuiEnergyGasGraphCard continue; } const dataPoint: (Date | string | number)[] = [ - (point.start + point.end) / 2, + computeStatMidpoint( + point.start, + point.end, + compare ? compareTransform : undefined + ), point.change, point.start, ]; - if (compare) { - const s = compareTransform(new Date(point.start)); - const e = compareTransform(new Date(point.end)); - dataPoint[0] = (s.getTime() + e.getTime()) / 2; - } gasConsumptionData.push(dataPoint); prevStart = point.start; } diff --git a/src/panels/lovelace/cards/energy/hui-energy-solar-graph-card.ts b/src/panels/lovelace/cards/energy/hui-energy-solar-graph-card.ts index 4f26e4404a..80d6a2d22f 100644 --- a/src/panels/lovelace/cards/energy/hui-energy-solar-graph-card.ts +++ b/src/panels/lovelace/cards/energy/hui-energy-solar-graph-card.ts @@ -30,6 +30,7 @@ import type { LovelaceCard } from "../../types"; import type { EnergySolarGraphCardConfig } from "../types"; import { hasConfigChanged } from "../../common/has-changed"; import { + computeStatMidpoint, fillDataGapsAndRoundCaps, getCommonOptions, getCompareTransform, @@ -309,15 +310,14 @@ export class HuiEnergySolarGraphCard continue; } const dataPoint: (Date | string | number)[] = [ - (point.start + point.end) / 2, + computeStatMidpoint( + point.start, + point.end, + compare ? compareTransform : undefined + ), point.change, point.start, ]; - if (compare) { - const s = compareTransform(new Date(point.start)); - const e = compareTransform(new Date(point.end)); - dataPoint[0] = (s.getTime() + e.getTime()) / 2; - } solarProductionData.push(dataPoint); prevStart = point.start; } diff --git a/src/panels/lovelace/cards/energy/hui-energy-water-graph-card.ts b/src/panels/lovelace/cards/energy/hui-energy-water-graph-card.ts index ab5a818bb5..a8b21374d7 100644 --- a/src/panels/lovelace/cards/energy/hui-energy-water-graph-card.ts +++ b/src/panels/lovelace/cards/energy/hui-energy-water-graph-card.ts @@ -26,6 +26,7 @@ import type { LovelaceCard } from "../../types"; import type { EnergyWaterGraphCardConfig } from "../types"; import { hasConfigChanged } from "../../common/has-changed"; import { + computeStatMidpoint, fillDataGapsAndRoundCaps, getCommonOptions, getCompareTransform, @@ -286,15 +287,14 @@ export class HuiEnergyWaterGraphCard continue; } const dataPoint: (Date | string | number)[] = [ - (point.start + point.end) / 2, + computeStatMidpoint( + point.start, + point.end, + compare ? compareTransform : undefined + ), point.change, point.start, ]; - if (compare) { - const s = compareTransform(new Date(point.start)); - const e = compareTransform(new Date(point.end)); - dataPoint[0] = (s.getTime() + e.getTime()) / 2; - } waterConsumptionData.push(dataPoint); prevStart = point.start; }