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) <noreply@anthropic.com>
This commit is contained in:
2026-06-28 15:53:14 +02:00
parent a3a8743998
commit d711c14b59
+12 -1
View File
@@ -110,7 +110,18 @@ function ChartCard({ range, every, title, color, selector }: ChartCardProps) {
if (!res.ok) throw new Error(`HTTP ${res.status}`); if (!res.ok) throw new Error(`HTTP ${res.status}`);
const json = await res.json(); const json = await res.json();
if (json.success) { 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 { } else {
setError(json.error || 'Fehler beim Laden der Daten.'); setError(json.error || 'Fehler beim Laden der Daten.');
} }