"use client"; import React from "react"; /** * Legende als eigene Komponente statt Recharts-Legend: * Recharts platziert die Legende im SVG und kostet damit Chartfläche. * Carbon setzt sie über den Chart, linksbündig, 12 px, 12 px Marker. * * **Der Marker zeigt, was das Diagramm zeichnet.** Eine gefüllte Reihe bekommt * einen Punkt, eine gestrichelte Vergleichsreihe ein gestricheltes * Linienstück mit demselben Strichmuster wie im Chart. * * Vorher war auch die gestrichelte Reihe ein 10 px großes Kästchen, nur mit * gestricheltem Rand. Auf zehn Pixel bleiben von einem gestrichelten Rechteck * ein paar Eckstriche übrig; das sah aus wie ein Zeichenfehler und nicht wie * eine Linie. Und es stimmte auch nicht: Im Diagramm ist „Vorjahr" kein * Kästchen, sondern eine Linie. */ /** Muss zur Vergleichsreihe in AreaVerlauf.tsx passen: 1,5 px, Muster 4/4. */ const STRICH = { breite: 18, staerke: 1.5, muster: "4 4" } as const; export function ChartLegende({ eintraege, /** Ausgeblendete Reihen erscheinen ausgegraut: Klick schaltet um. */ inaktiv = [], onToggle, }: { eintraege: { name: string; farbe: string; wert?: string; gestrichelt?: boolean }[]; inaktiv?: string[]; onToggle?: (name: string) => void; }) { return (
{eintraege.map((eintrag) => { const aus = inaktiv.includes(eintrag.name); const Inhalt = ( <> {eintrag.gestrichelt ? ( ) : ( )} {eintrag.name} {eintrag.wert ? ( {eintrag.wert} ) : null} ); return onToggle ? ( ) : ( {Inhalt} ); })}
); }