diff --git a/RouterOSAssistant/Features/Overview/OverviewView.swift b/RouterOSAssistant/Features/Overview/OverviewView.swift index 4208cb7..6ef6448 100644 --- a/RouterOSAssistant/Features/Overview/OverviewView.swift +++ b/RouterOSAssistant/Features/Overview/OverviewView.swift @@ -371,6 +371,16 @@ struct OverviewView: View { ) .frame(width: subLayout.canvasSize.width, height: subLayout.canvasSize.height) + ForEach(Array(OverviewLayout.columnOrder.enumerated()), id: \.offset) { index, category in + Text(L10n.t(category.rawValue, appLanguage)) + .appFont(.headline) + .foregroundStyle(.secondary) + .position( + x: OverviewLayout.leftInset + CGFloat(index) * OverviewLayout.columnWidth + OverviewLayout.nodeWidth / 2, + y: 14 + ) + } + ForEach(subGraph.nodes) { node in if let point = subLayout.positions[node.id] { NodeCardView( diff --git a/found.md b/found.md index acc95b8..d7eb11a 100644 --- a/found.md +++ b/found.md @@ -157,6 +157,15 @@ Nachbesserung 4 (Log zeigte nach Tastendruck: `script,error executing script But Mode-Taste (Fund #6) ist damit vollständig live verifiziert: Anlegen über App → Skript korrekt zugewiesen → Speichern ohne Fehler → Tastendruck löst Skript korrekt aus. +### 9. Übersicht: Spaltenüberschriften fehlten im Fokus-Popup +**Status:** fixed (live bestätigt) + +Wunsch: Fokus-Popup (Klick auf Knoten in der Übersicht) soll dieselben Spaltenüberschriften (Interfaces, IP-Adressen, Pools & DHCP, Routen, Firewall & NAT) über den Knoten zeigen wie das Hauptdiagramm. + +Ursache: `focusPanel(subGraph:subLayout:)` in `OverviewView.swift` rendert Kanten+Knoten der Kette per `OverviewLayout.layout(for:)` (gleiche Spalten-Logik wie oben), hatte aber nie den Header-`ForEach` über `OverviewLayout.columnOrder` übernommen, der im Hauptdiagramm dafür sorgt. `OverviewLayout.topInset` (44pt) reserviert bereits ausreichend Platz oberhalb der Knoten — Header-Block 1:1 aus dem Hauptdiagramm übernommen, keine Größenanpassung nötig. + +Build+alle 99 Unit-Tests grün, live bestätigt. + ### 7. Manual direkt in die App integrieren **Status:** offen