From c48dffaef2a18456628f8f9262f6f86a1bd563f3 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Fri, 3 Apr 2026 14:01:47 +0200 Subject: [PATCH] feat(global-filter): add refreshTimeRange() for manual refresh in paused mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert auto-sliding when paused — time range only advances with auto-refresh on. Add refreshTimeRange() to useGlobalFilters for on-demand recomputation from the active preset. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../providers/GlobalFilterProvider.tsx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/design-system/providers/GlobalFilterProvider.tsx b/src/design-system/providers/GlobalFilterProvider.tsx index 618f6a8..ba22d15 100644 --- a/src/design-system/providers/GlobalFilterProvider.tsx +++ b/src/design-system/providers/GlobalFilterProvider.tsx @@ -12,6 +12,7 @@ export type ExchangeStatus = 'completed' | 'failed' | 'running' | 'warning' interface GlobalFilterContextValue { timeRange: TimeRange setTimeRange: (range: TimeRange) => void + refreshTimeRange: () => void statusFilters: Set toggleStatus: (status: ExchangeStatus) => void clearStatusFilters: () => void @@ -66,16 +67,22 @@ export function GlobalFilterProvider({ children }: { children: ReactNode }) { try { localStorage.setItem('cameleer:auto-refresh', String(enabled)) } catch {} }, []) - // Keep the time range sliding forward whenever a preset is active. - // PAUSED mode only stops query polling — the time window still advances - // so that manual refreshes and sidebar-triggered queries see current data. + // Keep the time range sliding forward when a preset is active and live useEffect(() => { - if (!timeRange.preset) return + if (!autoRefresh || !timeRange.preset) return const id = setInterval(() => { const { start, end } = computePresetRange(timeRange.preset!) setTimeRangeState({ start, end, preset: timeRange.preset }) }, 10_000) return () => clearInterval(id) + }, [autoRefresh, timeRange.preset]) + + // Recompute time range from preset on demand (for manual refresh in PAUSED mode) + const refreshTimeRange = useCallback(() => { + if (timeRange.preset) { + const { start, end } = computePresetRange(timeRange.preset) + setTimeRangeState({ start, end, preset: timeRange.preset }) + } }, [timeRange.preset]) const isInTimeRange = useCallback( @@ -92,7 +99,7 @@ export function GlobalFilterProvider({ children }: { children: ReactNode }) { return ( {children}