E-Auto-Lade-Erkennung im 31d-Diagramm
Markiert im 31d-Diagramm die Tage rot, an denen das E-Auto geladen wurde: Leistung (Feld 'leistung', W) lag laenger als LADEN_MIN_HOURS (Default 2h) ununterbrochen ueber LADEN_THRESHOLD_KW (Default 11 kW). - Erkennung serverseitig per Flux stateDuration auf den Sekundendaten (24h Vorlauf fuer ueber Mitternacht laufende Ladungen an der Monatsgrenze) - /api/laden?month=YYYY-MM, Ergebnis gecacht (abgeschlossene Monate dauerhaft, laufender Monat 5 min) -> ~15s nur beim ersten Aufruf - Markierung wird asynchron nachgeladen, Balken erscheinen sofort - Schwelle/Dauer per Env (LADEN_THRESHOLD_KW, LADEN_MIN_HOURS) einstellbar - BarChart: optionales highlight-Set faerbt passende Balken Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+20
-2
@@ -13,12 +13,24 @@ interface BarChartProps {
|
||||
// Optionale feste Achsengrenzen (z.B. komplettes Jahr -> immer 12 Monate sichtbar)
|
||||
xMin?: number;
|
||||
xMax?: number;
|
||||
// Hervorzuhebende Balken (Zeitstempel-Set, z.B. E-Auto-Ladetage) + Farbe
|
||||
highlight?: Set<number>;
|
||||
highlightColor?: string;
|
||||
}
|
||||
|
||||
const HOUR_MS = 60 * 60 * 1000;
|
||||
const DAY_MS = 24 * HOUR_MS;
|
||||
|
||||
export default function BarChart({ title, data, every, color, xMin, xMax }: BarChartProps) {
|
||||
export default function BarChart({
|
||||
title,
|
||||
data,
|
||||
every,
|
||||
color,
|
||||
xMin,
|
||||
xMax,
|
||||
highlight,
|
||||
highlightColor = '#c0392b',
|
||||
}: BarChartProps) {
|
||||
const isHourly = every === '1h';
|
||||
const isMonthly = every === '1mo';
|
||||
const tooltipDateFormat = isHourly ? '%d.%m.%Y %H:%M' : isMonthly ? '%B %Y' : '%d.%m.%Y';
|
||||
@@ -76,7 +88,13 @@ export default function BarChart({ title, data, every, color, xMin, xMax }: BarC
|
||||
{
|
||||
type: 'column',
|
||||
name: 'Verbrauch',
|
||||
data,
|
||||
// markierte Balken (z.B. Ladetage) bekommen eine eigene Farbe
|
||||
data:
|
||||
highlight && highlight.size
|
||||
? data.map(([x, y]) =>
|
||||
highlight.has(x) ? { x, y, color: highlightColor } : { x, y }
|
||||
)
|
||||
: data,
|
||||
color,
|
||||
},
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user