import { Charge } from "@/lib/db"; const WEEKDAYS = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"]; function parts(iso: string) { // erwartet "YYYY-MM-DDTHH:MM:SS" (lokale Zeit vom Collector) const [date = "", time = ""] = iso.split("T"); const [y, m, d] = date.split("-"); return { y, m, d, hm: time.slice(0, 5) }; } function formatDate(iso: string): string { const { y, m, d } = parts(iso); return y && m && d ? `${d}.${m}.${y}` : iso; } function weekday(iso: string): string { const { y, m, d } = parts(iso); if (!y || !m || !d) return "-"; return WEEKDAYS[new Date(Number(y), Number(m) - 1, Number(d)).getDay()]; } function formatTime(iso: string): string { return parts(iso).hm || "-"; } function formatDuration(seconds: number): string { const h = Math.floor(seconds / 3600); const min = Math.floor((seconds % 3600) / 60); return `${h}:${String(min).padStart(2, "0")}`; } export default function ChargesTable({ charges }: { charges: Charge[] }) { if (charges.length === 0) { return (
| Datum | Tag | Start | Ende |
Dauer h:mm |
Energie kWh |
|---|---|---|---|---|---|
| {formatDate(c.start_time)} | {weekday(c.start_time)} | {formatTime(c.start_time)} | {formatTime(c.end_time)} | {formatDuration(c.duration_s)} | {(c.energy_wh / 1000).toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: 2, })} |