Improved progress display

Previously, the progress bar updated only after completing an entire table.

For large tables such as LIBARC, this could make the application appear to have stopped responding.

Phase 10 updates the interface while rows are being exported.
This commit is contained in:
Mark Gregory
2026-10-18 11:20:21 +01:00
parent 3635999f47
commit b3cc8b7463
2 changed files with 22 additions and 13 deletions
+13 -13
View File
@@ -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")