@@ -53,6 +53,7 @@ struct LogTableView: View {
5353 let records: [LogRecord]
5454 let columns: [String]
5555 @Binding var selectedRecord: LogRecord?
56+ var isLoading: Bool = false
5657 var onCellFilter: ((_ column: String, _ value: JSONValue?, _ exclude: Bool) -> Void)?
5758 var onMoveColumn: ((String, String) -> Void)?
5859 @State private var sortColumn: String?
@@ -63,7 +64,15 @@ struct LogTableView: View {
6364 @State private var columnWidths: [String: CGFloat] = [:]
6465
6566 var body: some View {
66− if records.isEmpty {
67+ if records.isEmpty && isLoading {
68+ VStack(spacing: 8) {
69+ ProgressView()
70+ .controlSize(.large)
71+ Text("Loading results...")
72+ .foregroundStyle(.secondary)
73+ }
74+ .frame(maxWidth: .infinity, maxHeight: .infinity)
75+ } else if records.isEmpty {
6776 VStack(spacing: 8) {
6877 Image(systemName: "doc.text.magnifyingglass")
6978 .font(.system(size: 32))
@@ -116,6 +125,13 @@ struct LogTableView: View {
116125 .frame(minWidth: 300, idealWidth: 350)
117126 }
118127 }
128+ .opacity(isLoading ? 0.5 : 1.0)
129+ .overlay {
130+ if isLoading {
131+ ProgressView()
132+ .controlSize(.large)
133+ }
134+ }
119135 .onChange(of: records) { _, _ in
120136 columnWidths = computeColumnWidths(columns: columns, records: records)
121137 debouncedRebuildSort()