git.iko.soy/parseable-macos
on master help sign in
Auto-refresh query when time range selection changes (#21)
04345a8iko
ParseableViewer/Views/QueryView.swift+19−1
@@ -20,7 +20,16 @@ struct QueryView: View {
20 TimeRangePicker(
20 TimeRangePicker(
21 option: $vm.timeRangeOption,
21 option: $vm.timeRangeOption,
22 customStart: $vm.customStartDate,
22 customStart: $vm.customStartDate,
23− customEnd: $vm.customEndDate
23+ customEnd: $vm.customEndDate,
24+ onCommit: {
25+ guard appState.selectedStream != nil else { return }
26+ Task {
27+ await viewModel.executeQuery(
28+ client: appState.client,
29+ stream: appState.selectedStream
30+ )
31+ }
32+ }
24 )
33 )
25
34
26 Spacer()
35 Spacer()
@@ -247,6 +256,15 @@ struct QueryView: View {
247 }
256 }
248 }
257 }
249 }
258 }
259+ .onChange(of: viewModel.timeRangeOption) { _, newValue in
260+ guard newValue != .custom, appState.selectedStream != nil else { return }
261+ Task {
262+ await viewModel.executeQuery(
263+ client: appState.client,
264+ stream: appState.selectedStream
265+ )
266+ }
267+ }
250 .onAppear {
268 .onAppear {
251 if let stream = appState.selectedStream {
269 if let stream = appState.selectedStream {
252 if viewModel.schemaFields.isEmpty {
270 if viewModel.schemaFields.isEmpty {
ParseableViewer/Views/TimeRangePicker.swift+2
@@ -4,6 +4,7 @@ struct TimeRangePicker: View {
4 @Binding var option: QueryViewModel.TimeRangeOption
4 @Binding var option: QueryViewModel.TimeRangeOption
5 @Binding var customStart: Date
5 @Binding var customStart: Date
6 @Binding var customEnd: Date
6 @Binding var customEnd: Date
7+ var onCommit: (() -> Void)?
7 @State private var showCustomPicker = false
8 @State private var showCustomPicker = false
8
9
9 var body: some View {
10 var body: some View {
@@ -78,6 +79,7 @@ struct TimeRangePicker: View {
78
79
79 Button("Done") {
80 Button("Done") {
80 showCustomPicker = false
81 showCustomPicker = false
82+ onCommit?()
81 }
83 }
82 .buttonStyle(.borderedProminent)
84 .buttonStyle(.borderedProminent)
83 .disabled(customEnd < customStart)
85 .disabled(customEnd < customStart)