From d711c14b59f1cd9625a1ea34677e7ad1e5ebde57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20X=2E=20F=C3=BCrst?= Date: Sun, 28 Jun 2026 15:53:14 +0200 Subject: [PATCH] Fix: Darstellung robust gegen unerwartete Datenelemente TypeError "(destructured parameter) is not iterable" bei der Summenberechnung (data.reduce mit [, v]) konnte die Seite crashen, wenn data ein Element enthielt, das kein [number, number]-Tupel ist. Loesung: Daten beim Laden in fetchData validieren (nur valide Tupel werden uebernommen). Damit sind sowohl die Summenzeile als auch BarChart robust. Co-Authored-By: Claude Opus 4.8 (1M context) --- components/VerbrauchCharts.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/components/VerbrauchCharts.tsx b/components/VerbrauchCharts.tsx index fe07d1f..d842591 100644 --- a/components/VerbrauchCharts.tsx +++ b/components/VerbrauchCharts.tsx @@ -110,7 +110,18 @@ function ChartCard({ range, every, title, color, selector }: ChartCardProps) { if (!res.ok) throw new Error(`HTTP ${res.status}`); const json = await res.json(); if (json.success) { - setData(json.data); + // nur valide [number, number]-Tupel uebernehmen (robust gegen + // unerwartete Elemente, damit die Darstellung nie crasht) + const clean: VerbrauchPoint[] = Array.isArray(json.data) + ? (json.data as unknown[]).filter( + (p): p is VerbrauchPoint => + Array.isArray(p) && + p.length >= 2 && + typeof p[0] === 'number' && + typeof p[1] === 'number' + ) + : []; + setData(clean); } else { setError(json.error || 'Fehler beim Laden der Daten.'); }