From 27ba01458b2e2c1113559e39e95565b63ad5ddb6 Mon Sep 17 00:00:00 2001 From: Vansh Kalra Date: Sat, 13 Sep 2025 00:53:05 +0530 Subject: [PATCH 1/4] feat: add auto-refresh frequency dropdown to dashboard - Added dropdown for user to select refresh intervals - Added options: Off, 5s, 10s, 30s, 1min - Implemented auto-refresh functionality Fixes #371 --- dashboard/src/components/RunsTable.tsx | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/dashboard/src/components/RunsTable.tsx b/dashboard/src/components/RunsTable.tsx index 70c2409d..cb892986 100644 --- a/dashboard/src/components/RunsTable.tsx +++ b/dashboard/src/components/RunsTable.tsx @@ -23,6 +23,14 @@ interface RunsTableProps { namespace: string; } +const REFRESH_OPTIONS = [ + { label: "Off", value: 0 }, + { label: "5 seconds", value: 5000 }, + { label: "10 seconds", value: 10000 }, + { label: "30 seconds", value: 30000 }, + { label: "1 minute", value: 60000 }, +]; + export const RunsTable: React.FC = ({ namespace }) => { @@ -33,6 +41,7 @@ export const RunsTable: React.FC = ({ const [error, setError] = useState(null); const [selectedRunId, setSelectedRunId] = useState(null); const [showGraph, setShowGraph] = useState(false); + const [refreshInterval, setRefreshInterval] = useState(0); const loadRuns = useCallback(async (page: number, size: number) => { setIsLoading(true); @@ -54,6 +63,16 @@ export const RunsTable: React.FC = ({ } }, [namespace, currentPage, pageSize, loadRuns]); + useEffect(() => { + if (refreshInterval === 0) return; + + const interval = setInterval(() => { + loadRuns(currentPage, pageSize); + }, refreshInterval); + + return () => clearInterval(interval); + }, [refreshInterval, currentPage, pageSize, loadRuns]); + const handlePageChange = (newPage: number) => { setCurrentPage(newPage); setSelectedRunId(null); @@ -144,6 +163,22 @@ export const RunsTable: React.FC = ({

Monitor and visualize workflow executions

+ +
+ + +
+ + + + {/* Graph Visualization */} {showGraph && selectedRunId && (