"use client"; import { CartesianGrid, Legend, Line, LineChart, ResponsiveContainer, Tooltip, XAxis, YAxis, } from "recharts"; import { formatChf } from "@/lib/format"; import type { PlanComputed } from "@/lib/calculations"; export interface TimelineSeries { label: string; color: string; computed: PlanComputed; } // Liniendiagramm: Endvermoegen (nominal + real) je Lebensphase. Unterstuetzt mehrere // ueberlagerte Plaene fuer den Szenario-Vergleich. export function WealthChart({ series }: { series: TimelineSeries[] }) { if (series.length === 0 || series[0].computed.phases.length === 0) { return

Noch keine Phasen vorhanden.

; } // Datenpunkte je Phasen-Index; X-Achse = Phasenname des Hauptplans. const maxLen = Math.max(...series.map((s) => s.computed.phases.length)); const data = Array.from({ length: maxLen }, (_, i) => { const row: Record = { phase: series[0].computed.phases[i]?.name ?? `Phase ${i + 1}`, }; for (const s of series) { const p = s.computed.phases[i]; if (p) { row[`${s.label} (nominal)`] = Math.round(p.endWealthNominal); row[`${s.label} (real)`] = Math.round(p.endWealthReal); } } return row; }); return (
Intl.NumberFormat("de-CH", { notation: "compact" }).format(v)} /> (typeof v === "number" ? formatChf(v) : v)} /> {series.map((s) => ( ))} {series.map((s) => ( ))}
); }