git.iko.soy/parseable-macos
on master help sign in
Auto-refresh query when time range selection changes (#21)

Selecting a preset time range (e.g. "Last 5 minutes") now immediately re-executes the current query. For custom time ranges, the query runs when the user confirms by pressing "Done" in the popover. https://claude.ai/code/session_01UPu7Rp1musBfhrCPaJ42sf Co-authored-by: Claude <noreply@anthropic.com>

commit04345a894069811752b47637685f4dbec4bff1e2 authoriko <mail@iko.soy> dateSun 15 Feb 2026, 18:32 (8 months ago) parente94b455
2 files changed+21−1
ParseableViewer/Views/QueryView.swift+19−1 ParseableViewer/Views/TimeRangePicker.swift+2
ParseableViewer/Views/QueryView.swift+19−1
@@ -20,7 +20,16 @@ struct QueryView: View {
2020 TimeRangePicker(
2121 option: $vm.timeRangeOption,
2222 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+ }
2433 )
2534
2635 Spacer()
@@ -247,6 +256,15 @@ struct QueryView: View {
247256 }
248257 }
249258 }
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+ }
250268 .onAppear {
251269 if let stream = appState.selectedStream {
252270 if viewModel.schemaFields.isEmpty {
ParseableViewer/Views/TimeRangePicker.swift+2
@@ -4,6 +4,7 @@ struct TimeRangePicker: View {
44 @Binding var option: QueryViewModel.TimeRangeOption
55 @Binding var customStart: Date
66 @Binding var customEnd: Date
7+ var onCommit: (() -> Void)?
78 @State private var showCustomPicker = false
89
910 var body: some View {
@@ -78,6 +79,7 @@ struct TimeRangePicker: View {
7879
7980 Button("Done") {
8081 showCustomPicker = false
82+ onCommit?()
8183 }
8284 .buttonStyle(.borderedProminent)
8385 .disabled(customEnd < customStart)