fix: Erledigte Knoten treten nie zurück (D46-Nachtrag)
Gemeldet: manche Knoten in Produktion werden grau dargestellt, etwa `#ed.fresh`. Ursache war nicht der Status, sondern die Pfad-Inversion: Der Knoten ist eine Zugabe (`+`) und liegt damit per D29 nie auf dem günstigsten Pfad — `.cheap-on .node:not(.cheap)` blasste ihn aus (Deckkraft 0,32, Sättigung 0,4; Pastellblau liest sich so als Grau). D46 hatte „erledigt tritt nicht zurück" bereits entschieden, die Regel hing aber an `cheapCls()` und griff nur für Knoten AUF dem Pfad. Durch das Raster fielen die fertige Zugabe und die fertige, nicht gewählte Alternative. Jetzt gilt sie unabhängig vom Pfad; Blässe heißt damit einheitlich „hier ist nichts getan und wird auch nichts getan". Umgesetzt als eigene Klasse `done` per `isDone(n)` in render.js, nicht über `st-fertig`/`st-prod`: Die Statusklasse trägt den EFFEKTIVEN Status (D39), die Ausnahme muss dem intrinsischen folgen — dieselbe Linie wie bei D35, D28 und der Kostenrechnung aus D46. Gefärbt wird unverändert nach dem effektiven Status. Nachgemessen (Werkbaum-Plan, 149 sichtbare Knoten, Pfad an): vorher blass und fertig waren genau drei Knoten (#ed.fresh, #ed.export.print, #ed.closure.greedy) — jetzt alle drei opacity 1, filter none, Füllung rgb(219,234,248) wie die fertigen Knoten auf dem Pfad. Weiterhin blass: 31 Knoten, darunter kein einziger fertiger. Der Grafikexport hatte den Fehler nie (er liest backgroundColor, nicht opacity). 240 Tests grün (4 neue in tests/frontier.test.js). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
4619ce7a0b
commit
b6e83b4f2a
+9
-1
@@ -62,13 +62,21 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der
|
||||
`app.js` (DOM/Events/i18n/Persistenz/Export). Modell/Renderer bekommen UI-State
|
||||
(verworfene einblenden, Pfad an/aus) als **Parameter** — keine Globals; nur
|
||||
`cheapPathOn` lebt als UI-State in `app.js`. Tests: `tests/*.test.js`.
|
||||
- Günstigster Pfad: `markCheapest()`/`cheapestCost()` (in `model.js`) markieren
|
||||
- Günstigster Pfad: `computeCheapPlan()`/`cheapestCost()`/`cheapCls()` (in
|
||||
`model.js`) markieren
|
||||
die nötigen Knoten (Klassen `cheap`, `cheap-leaf`); `drawCheapPath()` (app.js)
|
||||
zeichnet nach jedem
|
||||
`render()` **und** nach `applyLayout()` zwei Overlay-SVGs in `#out` (hinten
|
||||
kräftige Linie, vorne abgetönte Kopie + Stationspunkte). Overlays erben den
|
||||
CSS-`zoom` von `#out`, Punkte in unskalierte `#out`-Koordinaten umrechnen
|
||||
(`/zoom`). `diagramToSvg()` zeichnet dieselbe Linie/Punkte nach (SPEC §9, D18).
|
||||
**Die Inversion `.cheap-on .node:not(.cheap)` hat vier Ausnahmen** — `.fresh`
|
||||
(D28), `.focusmark` (D32), `.current` (D25) und `.done` (D46-Nachtrag: `[x]`
|
||||
oder `[^]`, gesetzt in `render.js` per `isDone()`). Wer eine fünfte Aussage an
|
||||
einen Knoten hängt, prüft, ob sie ausgeblasst noch etwas sagt; die ersten drei
|
||||
sind je einzeln nachgereicht worden, nachdem sie unsichtbar waren. Der
|
||||
**Grafikexport** blasst ohnehin nie aus (er liest `backgroundColor`, nicht
|
||||
`opacity`) — er war damit schon immer die Ansicht ohne Inversion.
|
||||
- Zerlegt eine any-of-Alternative selbst all-of, wird der Teilbaum **nur
|
||||
horizontal** schmal transponiert (`ul.or>li.has-and>ul.and`, siehe D18) —
|
||||
sonst schiebt der breite Fächer den Elternbaum nach rechts. Bei Layout-
|
||||
|
||||
Reference in New Issue
Block a user