diff --git a/WorkbenchReplacement/MainView.swift b/WorkbenchReplacement/MainView.swift index 6a496d1..b199865 100644 --- a/WorkbenchReplacement/MainView.swift +++ b/WorkbenchReplacement/MainView.swift @@ -2552,7 +2552,17 @@ struct WorkbenchAdministrationView: View { @ViewBuilder private var resultContent: some View { switch page { - case .serverStatus, .serverCounters, .connectionStatistics, .innodbMetrics: + case .serverStatus, .dashboard: + // Both destinations are genuine charts-only dashboards. No KPI tile + // view can appear in either route. + ScrollView(.vertical) { + WorkbenchInlinePerformanceDashboard(samples: diagnosticSamples) + .frame(maxWidth: .infinity, alignment: .topLeading) + .padding(18) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .accessibilityIdentifier("real-live-charts-phase48") + case .serverCounters, .connectionStatistics, .innodbMetrics: WorkbenchLiveMonitorScreen( page: page, samples: diagnosticSamples, @@ -2560,16 +2570,6 @@ struct WorkbenchAdministrationView: View { allRowCount: result.rows.count ) .frame(maxWidth: .infinity, maxHeight: .infinity) - case .dashboard: - // The Dashboard is a graph dashboard, not a selectable set of KPI cards. - // Keep six real Swift Charts visible; do not replace them with overview tiles. - ScrollView(.vertical) { - WorkbenchInlinePerformanceDashboard(samples: diagnosticSamples) - .frame(maxWidth: .infinity, alignment: .topLeading) - .padding(18) - } - .frame(maxWidth: .infinity, maxHeight: .infinity) - .accessibilityIdentifier("dashboard-live-line-charts") default: // Status and System Variables is deliberately a distinct variable // inspector, never replaced by the monitoring screen. @@ -4137,7 +4137,7 @@ private struct WorkbenchInlinePerformanceDashboard: View { .foregroundStyle(tint) } .chartYAxis { AxisMarks(position: .leading) } - .frame(height: 175) + .frame(height: 205) .accessibilityLabel("Live time-series graph for \(title)") } .padding(14) @@ -4149,7 +4149,7 @@ private struct WorkbenchInlinePerformanceDashboard: View { var body: some View { VStack(alignment: .leading, spacing: 12) { HStack { - Label("Live server performance", systemImage: "waveform.path.ecg") + Label("Live MySQL Line Graphs · Phase 48", systemImage: "waveform.path.ecg") .font(.title2.bold()) Spacer() Text("\(samples.count) samples · refreshes every 5 seconds") diff --git a/docs/PHASE48-ROUTING.md b/docs/PHASE48-ROUTING.md new file mode 100644 index 0000000..0163a0b --- /dev/null +++ b/docs/PHASE48-ROUTING.md @@ -0,0 +1,9 @@ +# Phase 48: explicit charts-only routes + +Server Status and Dashboard both route directly to `WorkbenchInlinePerformanceDashboard`. +The KPI `WorkbenchServerOverview` cards are no longer reachable from those two pages. +Look for the heading `Live MySQL Line Graphs · Phase 48` to confirm that the newly built app is running. +The charts sample the current page every five seconds when Auto-refresh is enabled. +Rate charts need at least two successful samples; active connections and threads are gauges. + +This archive was edited and syntax-parsed in a Linux environment; it was not compiled or visually tested on macOS.