Übersicht: Interface-Klick hebt transitiv alle zusammenhängenden Linien hervor
OverviewGraph.highlightedNodeIDs(startingAt:) macht für Interface-Knoten eine BFS über alle Kanten statt nur 1-Hop-Matching, damit z.B. "DHCP-Server -> Pool" oder "IP-Adresse -> DHCP-Netzwerk" mit sichtbar werden. Andere Knotentypen bleiben unverändert bei 1-Hop. Logik isoliert unit-getestet (GUI selbst nicht automatisiert klickbar). 61 Tests grün. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YDmUd93KxsYGr2kLTotWnG
This commit is contained in:
+29
@@ -1160,6 +1160,35 @@ Unit-Tests grün (inkl. neuer `ExpertViewModelTests` und
|
||||
Knoten zusammen, kein 1:1-Bezug zu einem Router-Item, bräuchte eine
|
||||
andere UI (Liste statt Formular).
|
||||
|
||||
12. **Übersicht-Tab: Interface-Klick hebt jetzt transitiv alle
|
||||
zusammenhängenden Linien hervor, nicht nur die direkt anliegenden**
|
||||
— Nutzeridee: "wenn ich einen Interface-Button klicke, möchte ich
|
||||
ALLE Linien sehen, die mit dem Interface irgendwie zusammenhängen".
|
||||
Bisher galt für jeden Knotentyp dieselbe 1-Hop-Regel (nur Kanten, die
|
||||
den geklickten Knoten selbst berühren) — bei einem Interface reißt
|
||||
das z.B. die Kette "DHCP-Server → sein Pool" oder "IP-Adresse →
|
||||
DHCP-Netzwerk-Optionen" ab, da diese Kanten nicht am Interface selbst
|
||||
hängen. Fix: `OverviewGraph.highlightedNodeIDs(startingAt:)` — für
|
||||
jeden Knotentyp außer Interface unverändert nur der eine Knoten
|
||||
selbst, für ein Interface eine Breitensuche (BFS) über alle Kanten in
|
||||
beide Richtungen, die den kompletten zusammenhängenden Ast einsammelt
|
||||
(Interface → Adresse/DHCP-Server/Route/Firewall-Regel, und von dort
|
||||
weiter → Pool bzw. DHCP-Netzwerk). Ausdrücklich nur für Interfaces so
|
||||
gewollt — alle anderen Knotentypen bleiben bei der bisherigen 1-Hop-
|
||||
Regel. Da ich die laufende App-GUI nicht selbst anklicken kann, die
|
||||
BFS-Logik stattdessen isoliert in `OverviewGraphTests.swift` getestet
|
||||
(`testHighlightedNodeIDsExpandsTransitivelyOnlyForInterfaces`):
|
||||
baut einen Graphen mit Interface→Adresse→DHCP-Netzwerk und
|
||||
Interface→DHCP-Server→Pool auf, bestätigt zunächst per Sanity-Check,
|
||||
dass Pool und DHCP-Netzwerk tatsächlich zwei Hops entfernt sind (kein
|
||||
direkter Edge zum Interface), und prüft dann, dass
|
||||
`highlightedNodeIDs(startingAt:)` vom Interface aus alle fünf Knoten
|
||||
liefert, aber vom Pool oder von der Adresse aus nur sich selbst. 61
|
||||
Tests grün (60 + 1 neu). **Visuelle Live-Prüfung im laufenden
|
||||
Diagramm steht noch aus** — vom Nutzer noch nicht bestätigt, nur die
|
||||
Logik selbst ist getestet; auf Nutzerwunsch trotzdem bereits
|
||||
committed+gepusht ("alles speichern bitte").
|
||||
|
||||
Gitea-Remote `origin` ist eingerichtet und wird laufend gepusht (siehe
|
||||
oben) — dieser Hinweis war veraltet, korrigiert am 2026-09-15.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user