M15: Übersicht-Tab — Diagramm-Fixes + Direktes Bearbeiten
Diagramm-Fixes: echter Geometrie-Bug behoben (VLAN-/Bridge-Port-Kanten laufen innerhalb derselben Spalte, eine Firewall/NAT-Kante rückwärts — die Kurven-Berechnung nahm immer "rechts raus, links rein" an und schoss dabei über den Canvas hinaus, links abgeschnitten). Hover-Flackern durch Trägheit + Beschränkung auf hervorgehobene Kanten behoben. Klick-vs- Hover-Priorität vertauscht (Klick gewinnt jetzt über Hover, vorher verdrängte das Streifen fremder Karten beim Nachfahren einer Linie die Auswahl). Linien-Klick zeigt jetzt volle Erklärung im rechten Panel (EdgeDetailView) statt nur Hover-Tooltip. Ein Auto-Fit-Versuch (GeometryReader) brach das Scroll-Verhalten und wurde wieder zurückgezogen. Neue Fähigkeit: ein Knoten (IP-Adresse, Pool, DHCP-Server/-Netzwerk/ -Client, Route, Firewall-Filter-/NAT-Regel, WireGuard-Peer) lässt sich direkt über denselben Dialog wie im Experte-Tab bearbeiten und zurückschreiben (OverviewNode.EditTarget + wiederverwendete ExpertItemEditView). Live bestätigt: Kommentar-Änderung an einer Firewall-Regel. 59 Unit-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:
+89
-5
@@ -752,6 +752,70 @@ beim Ändern die RouterOS-Suffix-Form zurück) — angewendet auf DHCP-Server
|
||||
"Lease-Zeit" und Adress-Listen "Ablaufzeit". Nutzer bestätigte danach:
|
||||
"funktioniert".
|
||||
|
||||
## M15: Übersicht-Tab — Diagramm-Fixes + Direktes Bearbeiten
|
||||
|
||||
Auf Nutzerwunsch zwei Themen in einer Session: erst mehrere echte Bugs im
|
||||
bestehenden Übersicht-Diagramm gefunden und gefixt, danach eine neue
|
||||
Fähigkeit ergänzt — ein Knoten direkt anklicken und bearbeiten, statt nur
|
||||
anzusehen.
|
||||
|
||||
**Diagramm-Fixes** (alle live an "Verbindungslinien werden links
|
||||
abgeschnitten" / "Hover springt ständig" diagnostiziert):
|
||||
|
||||
- Erst versucht, das Diagramm beim Öffnen automatisch ans Fenster
|
||||
anzupassen (`GeometryReader` + einmalig gesetzter Scale) — hat den
|
||||
ScrollView-Scrollzustand durcheinandergebracht (Inhalt verschob sich
|
||||
nach dem ersten Layout, oberer Teil nicht mehr erreichbar). **Wieder
|
||||
komplett zurückgezogen**, zurück zur ursprünglichen manuellen
|
||||
Zoom-Steuerung (`-`/`100%`/`+`).
|
||||
- **Echter Geometrie-Bug in `EdgesCanvas`:** VLAN-/Bridge-Port-Kanten
|
||||
laufen innerhalb derselben Spalte (Interface → Interface), eine
|
||||
Firewall/NAT-Kante läuft rückwärts (rechts nach links) — die
|
||||
Kurven-Berechnung nahm aber immer "rechts aus dem Start-, links in den
|
||||
Zielknoten" an, wodurch die Kontrollpunkte bei diesen Fällen weit über
|
||||
den Canvas hinausschossen (auch ins Negative) und am linken Rand
|
||||
abgeschnitten wurden. Fix: Kurvenaufbau jetzt richtungsabhängig
|
||||
(gleiche Spalte → kleine Ausbuchtung rechts, rückwärts → gespiegelte
|
||||
S-Kurve).
|
||||
- **Hover-Instabilität:** Mehrere Kanten verlassen denselben Knotenpunkt
|
||||
am selben Punkt — dort sind sie fast gleich nah am Cursor, kleinste
|
||||
Mausbewegung ließ die Auswahl ständig springen. Fix in zwei Schritten:
|
||||
(1) Trägheit — einmal gehoverte Kante bleibt aktiv, solange der Cursor
|
||||
nah genug bleibt, statt bei jedem Event neu die global nächste zu
|
||||
wählen; (2) Hover-Kandidaten auf die gerade hervorgehobenen
|
||||
(verbundenen) Kanten beschränkt, statt gegen alle Kanten im Diagramm zu
|
||||
prüfen.
|
||||
- **Klick-vs-Hover-Priorität vertauscht:** `highlightNodeID` ließ Hover
|
||||
über Klick gewinnen — beim Nachfahren einer Linie zu ihrem Ziel
|
||||
streifte der Cursor oft andere, unbeteiligte Karten, deren Hover dann
|
||||
die Hervorhebung des angeklickten Knotens verdrängte. Fix: Klick-
|
||||
Auswahl gewinnt jetzt über Hover (Hover dient nur noch als Vorschau,
|
||||
solange nichts ausgewählt ist).
|
||||
- Verbindungslinie anklicken zeigt jetzt ausführliche, verständliche
|
||||
Infos im rechten Panel (`EdgeDetailView`: Klartext-Erklärung pro
|
||||
Verbindungsart, "Von"/"Nach" mit Sprung zum jeweiligen Knoten) — vorher
|
||||
gab es nur den kleinen Hover-Tooltip mit den bloßen Rohdaten.
|
||||
|
||||
**Direktes Bearbeiten:** `OverviewNode.EditTarget` (Menüpfad, REST-Pfad,
|
||||
RouterOS-eigene `.id`) an jedem Knoten, der sich sauber auf genau ein
|
||||
Router-Item abbildet — IP-Adressen, Pools, DHCP-Server/-Netzwerke/
|
||||
-Clients, Routen, Firewall-Filter-/NAT-Regeln, WireGuard-Peers. Klick auf
|
||||
"Bearbeiten" im Detailpanel öffnet dieselbe `ExpertItemEditView`-Sheet
|
||||
wie der Experte-Tab (dafür `private` entfernt, jetzt modulweit
|
||||
sichtbar), über eine eigene `ExpertViewModel`-Instanz — gleiche Felder/
|
||||
Tooltips, gleicher Bestätigungsdialog, gleicher Schreibpfad, keine
|
||||
Duplikation der Schema-/Write-Logik. Nach dem Speichern lädt die
|
||||
Übersicht automatisch neu. Bewusst nicht abgedeckt: physische/VLAN/
|
||||
Bridge-Interfaces (Felder über mehrere typ-spezifische Menüs verteilt)
|
||||
und Adress-Listen-Knoten (fassen mehrere Einträge zusammen, kein 1:1-
|
||||
Bezug zu einem Router-Item).
|
||||
|
||||
**Live gegen Hardware verifiziert** — Nutzer bestätigte Kommentar-
|
||||
Änderung an einer Firewall-Regel über den neuen Bearbeiten-Weg
|
||||
("funktioniert"). Alle 59 Unit-Tests grün, inkl. neuer Tests für
|
||||
`editTarget` (`OverviewGraphTests.
|
||||
testEditableNodesCarryTheirRouterOSMenuAndItemID`).
|
||||
|
||||
## Stand der Milestones
|
||||
|
||||
- ✅ M1–M4: Projektgerüst, Connect, Backup, WAN/LAN/DHCP, VLAN — gegen
|
||||
@@ -795,11 +859,12 @@ beim Ändern die RouterOS-Suffix-Form zurück) — angewendet auf DHCP-Server
|
||||
WAN-Ausfall).
|
||||
- ✅ M11: Übersicht-Tab (Diagramm: Interfaces→IP→DHCP/Pools→Routen→
|
||||
Firewall/NAT, echte Referenz-Kanten, nach Verbindungsart eingefärbt,
|
||||
Hover/Klick-Hervorhebung) — **live gegen Hardware verifiziert**, rein
|
||||
lesend (kein `apply()`), vom Nutzer bestätigt ("das gefällt mir schon
|
||||
sehr gut"). Deckt bewusst nicht ab: VPN/WLAN-Sicherheitsprofile/Queues/
|
||||
System/Werkzeuge/Mangle/Raw (siehe `OverviewGraph.unmappedAreas`),
|
||||
weiterhin nur über den Experte-Tab erreichbar.
|
||||
Hover/Klick-Hervorhebung) — **live gegen Hardware verifiziert**, vom
|
||||
Nutzer bestätigt ("das gefällt mir schon sehr gut"). War anfangs rein
|
||||
lesend, seit M15 kann ein Knoten direkt bearbeitet werden (siehe
|
||||
unten) — deckt weiterhin bewusst nicht ab: VPN/WLAN-Sicherheitsprofile/
|
||||
Queues/System/Werkzeuge/Mangle/Raw (siehe `OverviewGraph.
|
||||
unmappedAreas`), weiterhin nur über den Experte-Tab erreichbar.
|
||||
- ✅ M12: Geräte-Tab (LAN-Scanner: DHCP-Leases+ARP+Bridge-Host, eine
|
||||
Tabelle pro physischem Port, "Feste IP zuweisen" für dynamische Leases,
|
||||
"Feste Zuweisung entfernen" für den Rückweg) — **live gegen Hardware
|
||||
@@ -844,6 +909,15 @@ beim Ändern die RouterOS-Suffix-Form zurück) — angewendet auf DHCP-Server
|
||||
Wizard/Experte-Tab. Dark Mode auf Nachfrage geprüft und ohne
|
||||
Codeänderung bestätigt funktionierend (keine feste Farbwerte/
|
||||
Appearance-Überschreibung im Code).
|
||||
- ✅ M15: Übersicht-Tab — mehrere Diagramm-Bugs gefixt (Verbindungslinien
|
||||
am linken Rand abgeschnitten bei gleicher-Spalte-/Rückwärts-Kanten,
|
||||
nervöses Hover, Klick-Auswahl wurde von Hover unbeteiligter Karten
|
||||
verdrängt) plus neue Fähigkeit: Knoten (IP-Adresse, Pool, DHCP-Server/
|
||||
-Netzwerk/-Client, Route, Firewall-Filter-/NAT-Regel, WireGuard-Peer)
|
||||
direkt über dieselbe Sheet wie im Experte-Tab bearbeiten und
|
||||
zurückschreiben. **Live gegen Hardware verifiziert** — Nutzer
|
||||
bestätigte Kommentar-Änderung an einer Firewall-Regel über den neuen
|
||||
Weg ("funktioniert").
|
||||
|
||||
## Nächste Schritte
|
||||
|
||||
@@ -912,6 +986,16 @@ beim Ändern die RouterOS-Suffix-Form zurück) — angewendet auf DHCP-Server
|
||||
Hintergrund direkt am Zeileninhalt (`Text` in `RoundedRectangle`-
|
||||
Fill) gesetzt. Alles vom Nutzer live in Xcode bestätigt ("passt
|
||||
gut").
|
||||
11. **M15-Bearbeiten-Funktion deckt Interfaces und Adress-Listen bewusst
|
||||
nicht ab** — physische/VLAN/Bridge-Interfaces verteilen ihre Felder
|
||||
über mehrere typ-spezifische RouterOS-Menüs (`/interface ethernet`,
|
||||
`/interface bridge`, `/interface vlan`, ...), ein sauberes
|
||||
`OverviewNode.EditTarget` bräuchte pro Interface-Typ eine eigene
|
||||
Zuordnung statt der generischen `/interface`. Adress-Listen-Knoten
|
||||
fassen mehrere Einträge in einem Knoten zusammen, kein 1:1-Bezug zu
|
||||
einem Router-Item — bräuchte eine andere UI (Liste statt Formular).
|
||||
Beides bei Bedarf nachrüstbar, für diese Session bewusst
|
||||
zurückgestellt.
|
||||
|
||||
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