frontend: Renderer + Modell headless auslagern (src/model.js, src/render.js)
TASKS Phase 1. Baum-/Kostenlogik -> model.js (gateOf, needsBreakdown, visibleChildren, computeCheapSet, cheapCls), HTML-Erzeugung -> render.js (renderTreeHtml). Beide sind headless: UI-State (verworfene einblenden, günstigster Pfad) kommt als Parameter herein statt aus Globals; nur cheapPathOn bleibt UI-State in app.js. render() in app.js ist jetzt die dünne DOM-Anbindung. Snapshot-Tests (tests/render.test.js): Grundzustand, günstigster Pfad, verworfene einblenden, Geister-Knoten („Untergliederung fehlt"), plus die Zusicherung, dass der Renderer nie eine Modus-Klasse erzeugt (Modus = CSS-Container-Klasse in app.js -> ein Snapshot deckt alle drei Modi). 24 Tests grün. Byte-identisches Rendering im Browser verifiziert (18 Knoten, 6 Blätter, 3 Geister, Toggles ok, keine Konsolenfehler). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
7c8f216589
commit
5905712aa5
+6
-1
@@ -17,8 +17,13 @@ Abhaken beim Erledigen; neue Aufgaben unten anfügen.
|
||||
als Fixture; Randfälle: gemischte Gates, Tabs/ungleichmäßige Einrückung,
|
||||
URL mit `@`, mehrere Wurzeln, leere Labels, `%%` am Zeilenanfang/-ende.
|
||||
→ `tests/parser.test.js` (18 Tests).
|
||||
- [ ] Renderer extrahieren (HTML-String-Erzeugung), Snapshot-Tests für
|
||||
- [x] Renderer extrahieren (HTML-String-Erzeugung), Snapshot-Tests für
|
||||
Normal- und Vertikalmodus sowie „Untergliederung fehlt“.
|
||||
→ `src/model.js` (Baum-/Kostenlogik) + `src/render.js` (`renderTreeHtml`,
|
||||
headless); `app.js` reicht UI-State als Parameter herein.
|
||||
`tests/render.test.js` (6 Tests, Snapshots). Anm.: der Modus
|
||||
(horizontal/vertikal/kompakt) ist reine CSS-Container-Klasse und ändert
|
||||
den Renderer-String nicht — ein Snapshot deckt alle drei Modi ab.
|
||||
- [ ] Warnungs-Modell vereinheitlichen (Zeilennummern, Typen).
|
||||
|
||||
## Phase 2 — Qualität
|
||||
|
||||
Reference in New Issue
Block a user