fix: Querverbindungen gepunktet — zurückhaltender (D41-Nachtrag)
Nutzer-Feedback: Die durchgezogene Kurve konkurrierte trotz Blässe noch mit dem Baum. Basis-Kanten jetzt gepunktet (runde Punkte, .1/5) — damit dreifach von den Baumlinien unterschieden (Krümmung, Blässe, Punktierung). Der D29-Einwand gegen einen dritten Linienstil galt den Baum-Abzweigen im kompakten Modus, nicht der eigenen gekrümmten Ebene. Die Fokus-Hervorhebung bleibt durchgezogen in Tinte; Export identisch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
d2ab30b63d
commit
1cd1d30d1b
@@ -1986,6 +1986,18 @@ auf dem DOM; headless getestet sind die `data-id`/`data-deps`-Attribute des
|
|||||||
Renderers, geprüft wurde im Browser (alle drei Modi, Fokus- und
|
Renderers, geprüft wurde im Browser (alle drei Modi, Fokus- und
|
||||||
Cursor-Hervorhebung, Export).
|
Cursor-Hervorhebung, Export).
|
||||||
|
|
||||||
|
**Nachtrag — die Basis-Kanten sind jetzt gepunktet.** „Zurückhaltender“
|
||||||
|
(Nutzer): Die durchgezogene Kurve konkurrierte trotz Blässe noch mit dem
|
||||||
|
Baum. Punktiert (runde Punkte, `stroke-dasharray: .1 5`) tritt sie weiter
|
||||||
|
zurück und ist zugleich **dreifach** von den Baumlinien unterschieden —
|
||||||
|
Krümmung, Blässe, Punktierung; durchgezogen gehört „und“, gestrichelt „oder“.
|
||||||
|
Der D29-Einwand gegen einen dritten Linienstil greift hier nicht: Er galt den
|
||||||
|
**Baum-Abzweigen**, die sich im kompakten Modus allein über den Stil
|
||||||
|
unterscheiden müssen — die Querverbindungen liegen auf ihrer eigenen,
|
||||||
|
gekrümmten Ebene und begegnen den Rahmenkanten nie. Die **Hervorhebung**
|
||||||
|
(fokussierter Knoten) bleibt durchgezogen in Tinte: Sie ist ausdrücklich
|
||||||
|
angefordert und soll sich nach vorn drängen. Export identisch nachgezogen.
|
||||||
|
|
||||||
## D42 — Closure-Pfad: erschöpfend über die gekoppelten Gruppen, gierig nur benannt
|
## D42 — Closure-Pfad: erschöpfend über die gekoppelten Gruppen, gierig nur benannt
|
||||||
Die letzte Baustelle aus D34: Mit Abhängigkeiten zählt der günstigste Pfad
|
Die letzte Baustelle aus D34: Mit Abhängigkeiten zählt der günstigste Pfad
|
||||||
nicht mehr den gewählten Teilbaum, sondern die **Hülle** — jeder nötige Knoten
|
nicht mehr den gewählten Teilbaum, sondern die **Hülle** — jeder nötige Knoten
|
||||||
|
|||||||
+3
-2
@@ -640,8 +640,9 @@ Siehe D38.
|
|||||||
|
|
||||||
### Querverbindungen der Abhängigkeiten (`:#…`, §1)
|
### Querverbindungen der Abhängigkeiten (`:#…`, §1)
|
||||||
Abhängigkeiten werden als **optisch sekundäre** Kanten gezeichnet: dünn,
|
Abhängigkeiten werden als **optisch sekundäre** Kanten gezeichnet: dünn,
|
||||||
blassgrau (`#6B7A8C`), **geschwungen** — die Krümmung unterscheidet sie von
|
blassgrau (`#6B7A8C`), **gepunktet** und **geschwungen** — Punktierung und
|
||||||
den orthogonalen Baumlinien (dasselbe Mittel wie beim Pfad-Spline) — auf einer
|
Krümmung unterscheiden sie doppelt von den Baumlinien (durchgezogen bzw.
|
||||||
|
gestrichelt, immer orthogonal) und halten sie zurückhaltend — auf einer
|
||||||
eigenen Zeichenebene **hinter** den Knoten, mit einer kleinen **Pfeilspitze
|
eigenen Zeichenebene **hinter** den Knoten, mit einer kleinen **Pfeilspitze
|
||||||
auf das Gebrauchte** („braucht“-Richtung). Der Baum trägt weiterhin die
|
auf das Gebrauchte** („braucht“-Richtung). Der Baum trägt weiterhin die
|
||||||
Hauptaussage.
|
Hauptaussage.
|
||||||
|
|||||||
+2
-2
@@ -295,8 +295,8 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der
|
|||||||
- Querverbindungen (SPEC §9, D41): `drawDepLinks()` zeichnet die
|
- Querverbindungen (SPEC §9, D41): `drawDepLinks()` zeichnet die
|
||||||
Abhängigkeits-Kanten als Overlay-SVGs (wie `drawCheapPath`, `/zoom`
|
Abhängigkeits-Kanten als Overlay-SVGs (wie `drawCheapPath`, `/zoom`
|
||||||
umrechnen) aus den Renderer-Attributen `data-id`/`data-deps` — gekrümmt
|
umrechnen) aus den Renderer-Attributen `data-id`/`data-deps` — gekrümmt
|
||||||
(Merkmal gegenüber den orthogonalen Baumlinien), blassgrau hinter den
|
und GEPUNKTET (doppelt unterschieden von den orthogonalen Baumlinien,
|
||||||
Knoten, Pfeil aufs Gebrauchte; Hervorhebung (Fokus bzw. Cursor-Zeile,
|
D41-Nachtrag), blassgrau hinter den Knoten, Pfeil aufs Gebrauchte; Hervorhebung (Fokus bzw. Cursor-Zeile,
|
||||||
`activeDepNode()`) in Tinte auf der vorderen Ebene. Aufgerufen aus
|
`activeDepNode()`) in Tinte auf der vorderen Ebene. Aufgerufen aus
|
||||||
`highlightCurrentNode()` (läuft in jedem `render()`), `applyLayout()` und
|
`highlightCurrentNode()` (läuft in jedem `render()`), `applyLayout()` und
|
||||||
den focusin/focusout-Handlern — NICHT doppelt in `render()` einhängen.
|
den focusin/focusout-Handlern — NICHT doppelt in `render()` einhängen.
|
||||||
|
|||||||
+2
-2
@@ -486,8 +486,8 @@ function diagramToSvg(){
|
|||||||
Knoten; die Fokus-Hervorhebung ist Interaktion und wird nicht exportiert. */
|
Knoten; die Fokus-Hervorhebung ist Interaktion und wird nicht exportiert. */
|
||||||
depEdges().forEach(([from, to]) => {
|
depEdges().forEach(([from, to]) => {
|
||||||
const c = depCurve(R(from), R(to));
|
const c = depCurve(R(from), R(to));
|
||||||
parts.push(`<path d="${c.d}" fill="none" stroke="#6B7A8C" stroke-width="1.5" opacity="0.35" stroke-linecap="round"/>`);
|
parts.push(`<path d="${c.d}" fill="none" stroke="#6B7A8C" stroke-width="1.5" opacity="0.4" stroke-linecap="round" stroke-dasharray="0.1 5"/>`);
|
||||||
parts.push(`<path d="${depArrow(c.end, c.ctrl)}" fill="#6B7A8C" opacity="0.35"/>`);
|
parts.push(`<path d="${depArrow(c.end, c.ctrl)}" fill="#6B7A8C" opacity="0.4"/>`);
|
||||||
});
|
});
|
||||||
|
|
||||||
/* 1b) Günstigster-Pfad: kräftige Linie hinter den Knoten */
|
/* 1b) Günstigster-Pfad: kräftige Linie hinter den Knoten */
|
||||||
|
|||||||
@@ -702,13 +702,16 @@
|
|||||||
Blättern zeigen, welche Knoten wirklich auf dem Pfad enden — durchquerte
|
Blättern zeigen, welche Knoten wirklich auf dem Pfad enden — durchquerte
|
||||||
Fremdknoten tragen keinen Punkt. Reihenfolge im DOM steuert vorn/hinten. */
|
Fremdknoten tragen keinen Punkt. Reihenfolge im DOM steuert vorn/hinten. */
|
||||||
.cheap-overlay{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
|
.cheap-overlay{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
|
||||||
/* Querverbindungen der Abhängigkeiten (SPEC §9, D41): dünn, blassgrau,
|
/* Querverbindungen der Abhängigkeiten (SPEC §9, D41): blassgrau GEPUNKTET
|
||||||
gekrümmt — die Krümmung unterscheidet sie von den orthogonalen Baumlinien.
|
und gekrümmt — Punktierung und Krümmung unterscheiden sie doppelt von den
|
||||||
Hervorgehobene Kanten (fokussierter Knoten/Cursor-Zeile) in Tinte. */
|
Baumlinien (durchgezogen/gestrichelt, orthogonal) und halten sie leise
|
||||||
|
(D41-Nachtrag). Hervorgehobene Kanten (fokussierter Knoten/Cursor-Zeile)
|
||||||
|
durchgezogen in Tinte. */
|
||||||
.dep-overlay{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
|
.dep-overlay{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
|
||||||
.dep-edge{fill:none;stroke:var(--muted);stroke-width:1.5;opacity:.35;stroke-linecap:round}
|
.dep-edge{fill:none;stroke:var(--muted);stroke-width:1.5;opacity:.4;
|
||||||
.dep-arrow{fill:var(--muted);opacity:.35}
|
stroke-linecap:round;stroke-dasharray:.1 5}
|
||||||
.dep-edge.hl{stroke:var(--line);stroke-width:2;opacity:.9}
|
.dep-arrow{fill:var(--muted);opacity:.4}
|
||||||
|
.dep-edge.hl{stroke:var(--line);stroke-width:2;opacity:.9;stroke-dasharray:none}
|
||||||
.dep-arrow.hl{fill:var(--line);opacity:.9}
|
.dep-arrow.hl{fill:var(--line);opacity:.9}
|
||||||
.cheap-path{fill:none;stroke:var(--or);stroke-width:2.5;stroke-linecap:round;
|
.cheap-path{fill:none;stroke:var(--or);stroke-width:2.5;stroke-linecap:round;
|
||||||
stroke-dasharray:8 6;opacity:.9}
|
stroke-dasharray:8 6;opacity:.9}
|
||||||
|
|||||||
Reference in New Issue
Block a user