Ebene-Add: Code = activeCode + nächste freie Nummer + Debug-Logs

Feature: neue Ebenen kriegen jetzt einen Code direkt nach dem
aktuell angewaehlten (z.B. active="20" → "21" oder naechste freie
darunter). Vorher war's Max+1 → sprang auf "100", neue Ebene landet
am Listen-Ende und wirkte „unsichtbar" weil weit unten.

Debug-Logs eingebaut um zu diagnostizieren warum Anlegen aus User-
Sicht nicht funktioniert:
- [EBENEN-UI] addNew → bei jedem Click + im Ebenen-Panel
- [ZEICHNUNGSEBENEN-UI] addQuick → bei jedem Click + im Z-Panel
- [EBENEN-UI/ZEICHNUNGSEBENEN-UI] structureKey diff → wenn der
  Auto-Apply-useEffect feuert
- [EBENEN-UI/ZEICHNUNGSEBENEN-UI] applyAll firing now → wenn der
  Debounce-Timer am Ende den Backend-Call macht
- [EBENEN-BE] APPLY from mode=X → Backend-Receiver
- [EBENEN-BE] mode=X: y from doc.Strings n=N → was aus doc.Strings
  als Fallback geladen wurde

So sehen wir wo's stockt — UI feuert nicht, Debounce klemmt,
Backend kriegt's nicht, oder build_layers schmeisst still.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-19 00:29:46 +02:00
parent 10690f4514
commit d63bca1ad8
5 changed files with 33 additions and 18 deletions
+6 -4
View File
@@ -160,19 +160,21 @@ class EbenenBridge(panel_base.BaseBridge):
if t == "READY":
self._on_ready()
elif t == "APPLY":
# Jedes Panel ist autoritativ fuer SEINE Slice; die andere kommt
# aus doc.Strings (Fallback) damit build_layers nicht mit leerer
# Liste arbeitet. So ueberschreiben wir nicht versehentlich die
# andere Panel-Slice mit "[]" bei Split-APPLYs.
print("[EBENEN-BE] APPLY from mode={} payload-z={} payload-e={}".format(
self._mode,
len(p.get("zeichnungsebenen") or []),
len(p.get("ebenen") or [])))
if self._mode == "zeichnungsebenen":
z_payload = p.get("zeichnungsebenen") or []
e_raw = doc.Strings.GetValue("dossier_ebenen")
e_payload = json.loads(e_raw) if e_raw else []
print("[EBENEN-BE] mode=zeichnungsebenen: e from doc.Strings n={}".format(len(e_payload)))
self._apply(z_payload, e_payload, save_z=True, save_e=False)
else:
e_payload = p.get("ebenen") or []
z_raw = doc.Strings.GetValue("dossier_zeichnungsebenen")
z_payload = json.loads(z_raw) if z_raw else []
print("[EBENEN-BE] mode=ebenen: z from doc.Strings n={}".format(len(z_payload)))
self._apply(z_payload, e_payload, save_z=False, save_e=True)
elif t == "LAYER_STYLE":
layer_builder.update_layer_style(doc, p["code"], p.get("color"), p.get("lw"))