/* ================================================ Settings — manage Sorten, default map style + list layout ================================================ */ function SettingsView({ sorten, setSorten, mapStyle, setMapStyle, listLayout, setListLayout, persistTweak, }) { const [editing, setEditing] = React.useState(null); // {index, name, farbe} | "new" const [draft, setDraft] = React.useState({ name: "", farbe: "#6B1F2E" }); function openNew() { setDraft({ name: "", farbe: "#6B1F2E" }); setEditing("new"); } function openEdit(i) { setDraft({ name: sorten[i].name, farbe: sorten[i].farbe }); setEditing(i); } function closeEditor() { setEditing(null); } function saveDraft() { const name = draft.name.trim(); if (!name) return; if (editing === "new") { if (sorten.some(s => s.name.toLowerCase() === name.toLowerCase())) return; setSorten([...sorten, { name, farbe: draft.farbe }]); } else { const next = sorten.slice(); next[editing] = { ...next[editing], name, farbe: draft.farbe }; setSorten(next); } setEditing(null); } function removeSorte(i) { if (!confirm(`Sorte „${sorten[i].name}“ wirklich löschen?`)) return; const next = sorten.slice(); next.splice(i, 1); setSorten(next); } return (
Administration

Einstellungen

Stammdaten für Rebsorten sowie die Standardvorgaben für Karten- und Listendarstellung dieses Betriebs.

Rebsorten

Sorten, die im Wizard und als Legende verwendet werden. Die Farbe färbt Polygone, Punkte und Badges.

{sorten.map((s, i) => (
{s.name}
{s.farbe.toUpperCase()}
))} {sorten.length === 0 && (
Noch keine Sorten angelegt.
)}

Standard-Darstellung

Voreinstellungen beim Öffnen der Kartenansicht und der Flächenliste.

Kartenstil
Kachel-Material, das bei jeder Karte geladen wird.
Listen-Layout
Tabellen- oder Kachel­darstellung der Flächenübersicht.
{editing !== null && ( )}
); } const SORTE_PRESETS = [ ["#6B1F2E", "Burgund tief"], ["#8B2F42", "Kirsche"], ["#A8445B", "Rosé dunkel"], ["#C47B5A", "Kupfer"], ["#D99A6C", "Terrakotta"], ["#8B6F47", "Eiche"], ["#B58556", "Karamell"], ["#C9A961", "Gold"], ["#D4B76A", "Honig"], ["#E8DCC4", "Sand"], ["#D4C896", "Stroh"], ["#B5C47A", "Blattgrün"], ["#8EA564", "Weinlaub"], ["#6A8548", "Moos"], ["#3F4B3A", "Tann"], ]; function SorteEditor({ draft, setDraft, isNew, onCancel, onSave }) { const valid = draft.name.trim().length > 0; return (
e.target === e.currentTarget && onCancel()}>
e.stopPropagation()} >
{isNew ? "Neue Sorte anlegen" : "Sorte bearbeiten"}
Diese Farbe erscheint als Polygon-Füllung auf der Karte, als Punkt in Listen und als Legenden-Marker.
{/* Live preview */}
Vorschau
{draft.name.trim() || "Sortenname"}
{draft.farbe.toUpperCase()}
{/* Form */}
setDraft({ ...draft, name: e.target.value })} placeholder="z. B. Spätburgunder" autoFocus />
# { const v = e.target.value.replace(/[^0-9a-fA-F]/g, "").slice(0, 6); setDraft({ ...draft, farbe: "#" + v.padEnd(6, "0") }); }} maxLength={6} />
Voreinstellungen
{SORTE_PRESETS.map(([hex, name]) => ( ))}
); } window.SettingsView = SettingsView;