From 4149d67faf5e104f1d2e80bb74dad5aab57ab9b0 Mon Sep 17 00:00:00 2001 From: Michael Geers Date: Wed, 10 Jun 2026 14:03:20 +0200 Subject: [PATCH] History UI: fix consumption with no ext/aux meters (#30697) --- assets/js/views/History.vue | 5 +++-- tests/energy-history.spec.ts | 11 +++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/assets/js/views/History.vue b/assets/js/views/History.vue index 15a92c990..5d7be6722 100644 --- a/assets/js/views/History.vue +++ b/assets/js/views/History.vue @@ -282,7 +282,7 @@ export default defineComponent({ const activeMeters = meters .map((s, i) => ({ ...s, paletteIndex: i })) .filter(hasEnergy); - if (!home || activeMeters.length === 0) return activeMeters; + if (!home) return activeMeters; const meterTotals = new Map(); // Net per slot is computed from all meters (incl. inactive ones), so // dropping inactive entries from the display doesn't shift the @@ -394,7 +394,8 @@ export default defineComponent({ hasEntityLegend(group: string): boolean { const list = this.displaySeries(group); if (!list.length) return false; - if (group === "loadpoint" || group === "meter") return true; + // Without explicit consumers an "Others"-only legend is meaningless. + if (group === "loadpoint" || group === "meter") return list.some((s) => !s.virtual); if (group === "pv" || group === "battery") return list.length > 1; return false; }, diff --git a/tests/energy-history.spec.ts b/tests/energy-history.spec.ts index d4a48f2a8..c728b30b3 100644 --- a/tests/energy-history.spec.ts +++ b/tests/energy-history.spec.ts @@ -190,6 +190,17 @@ test.describe("consumption breakdown", () => { await expect(consumption.getByRole("button", { name: "Office 300 Wh" })).toBeVisible(); }); + // 2026-03-24: home = 0.4 kWh, no meter entities with data. + test("home without meters shows chart without legend", async ({ page }) => { + await gotoDay(page, 2026, 3, 24); + const consumption = section(page, "meter"); + await expect(consumption).toBeVisible(); + + await expect(consumption.getByRole("heading")).toContainText("0.4 kWh"); + // No explicit consumers, no entity legend. + await expect(consumption.getByRole("button")).toHaveCount(0); + }); + test("entity focus rescales axis and resets on unfocus", async ({ page }) => { await gotoDay(page, 2026, 4, 7); const consumption = section(page, "meter");