diff --git a/display/frontend/src/pages/Dashboard.tsx b/display/frontend/src/pages/Dashboard.tsx index d8d20fc..4b08231 100644 --- a/display/frontend/src/pages/Dashboard.tsx +++ b/display/frontend/src/pages/Dashboard.tsx @@ -12,7 +12,7 @@ export default function Dashboard() { const [displays, setDisplays] = useState([]); const [error, setError] = useState(''); - useEffect(() => { + function loadAll() { Promise.all([ api.get('/api/mqtt/brokers'), api.get('/api/datapoints'), @@ -23,7 +23,14 @@ export default function Dashboard() { setDatapoints(d); setDisplays(disp); }) - .catch((err) => setError((err as Error).message)); + .catch((e) => setError((e as Error).message)); + } + + useEffect(() => { + loadAll(); + const interval = setInterval(loadAll, 10000); + return () => clearInterval(interval); + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const lastUpdate = datapoints diff --git a/display/frontend/src/pages/Datapoints.tsx b/display/frontend/src/pages/Datapoints.tsx index a941fda..a0cfc34 100644 --- a/display/frontend/src/pages/Datapoints.tsx +++ b/display/frontend/src/pages/Datapoints.tsx @@ -30,7 +30,12 @@ export default function Datapoints() { } } - useEffect(() => { load(); }, []); + useEffect(() => { + load(); + const interval = setInterval(load, 10000); + return () => clearInterval(interval); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); async function handleBlur(id: number, field: 'label' | 'unit') { try {