From 10690f451416f7bbaa0589a85e1958991f991941 Mon Sep 17 00:00:00 2001 From: karim Date: Tue, 19 May 2026 00:16:36 +0200 Subject: [PATCH] Ebene + Zeichnungsebene Erzeugen: Dialog mit Name-Input (wie Kombi) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UX-Beschwerde: addNew/addQuick haben still im Hintergrund eine Ebene am Listenende hinzugefuegt. User sah das Ergebnis nicht weil scroll- abhaengig oder ueberhaupt — "kann gar nicht erstellen". Bei Ebenen- Kombinationen geht's via window.prompt, das ist klar. Beide auf gleiche Prompt-UX umgebaut: EbenenManager.addNew: - Prompt "Name für neue Ebene:" mit Default "NEU" - Bei Cancel/leer: kein Add - Bei OK: Ebene mit UPPERCASE-Name + auto-generiertem Code, Code- Feld bekommt sofort den Edit-Mode (User kann ihn schnell anpassen). GeschossManager.addQuick: - Prompt "Name für neue Zeichnungsebene (Geschoss):" mit Default basiert auf Anzahl Geschosse (z.B. "3OG" wenn 2 vorhanden). - Bei OK: neuer Eintrag als Geschoss (isGeschoss=true) mit hoehe=3.0 und schnitthoehe=1.0 — die Default-Werte. Wegen recalcOkff zeigt er automatisch das richtige OKFF. Vorher war addQuick auf `isGeschoss=false` (= Beschriftungs-Eintrag, kein Geschoss), das war ein Konventions-Mismatch zur User-Erwartung. Co-Authored-By: Claude Opus 4.7 --- src/components/EbenenManager.jsx | 10 ++++++++-- src/components/GeschossManager.jsx | 14 ++++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/components/EbenenManager.jsx b/src/components/EbenenManager.jsx index c411d9e..4cc81de 100644 --- a/src/components/EbenenManager.jsx +++ b/src/components/EbenenManager.jsx @@ -359,12 +359,18 @@ export default function EbenenManager({ } const addNew = () => { + // Modal-Dialog via window.prompt fuer expliziten Name-Input — selbe UX + // wie bei Ebenenkombinationen. Code wird automatisch generiert. + const name = (window.prompt('Name für neue Ebene:', 'NEU') || '').trim() + if (!name) return + // Doppel-Namen erlauben (gibt's auch bisher), aber doppel-Codes vermeiden. const code = nextFreeCode() onChange([...ebenen, { - code, name: 'NEU', + code, name: name.toUpperCase(), color: '#888888', lw: 0.18, visible: true, locked: false, }]) - // Code-Feld der neuen Ebene fokussieren + // Direkt in den Edit-Mode fuer Code-Feld — User kann Code anpassen + // falls die Auto-Vergabe nicht passt. setAutoEdit({ code, field: 'code', token: Date.now() }) } diff --git a/src/components/GeschossManager.jsx b/src/components/GeschossManager.jsx index 81a4f93..7571a77 100644 --- a/src/components/GeschossManager.jsx +++ b/src/components/GeschossManager.jsx @@ -94,10 +94,20 @@ export default function GeschossManager({ .reduce((s, z) => s + (z.hoehe ?? 0), 0) const addQuick = () => { + // Modal-Dialog via window.prompt fuer expliziten Name-Input — selbe UX + // wie bei Ebenenkombinationen / neuer Ebene. + const defaultName = `${zeichnungsebenen.filter(z => z.isGeschoss).length + 1}OG` + const name = (window.prompt( + 'Name für neue Zeichnungsebene (Geschoss):', + defaultName + ) || '').trim() + if (!name) return const newZ = { id: `z_${Date.now()}`, - name: `Neu ${zeichnungsebenen.length + 1}`, - isGeschoss: false, + name, + isGeschoss: true, + hoehe: 3.0, + schnitthoehe: 1.0, visible: true, } onChange([...zeichnungsebenen, newZ])