import { h } from 'preact'; import Box from './components/Box'; import Button from './components/Button'; import Heading from './components/Heading'; import Link from './components/Link'; import { ApiHost, Config } from './context'; import { Table, Tbody, Thead, Tr, Th, Td } from './components/Table'; import { useCallback, useContext, useEffect, useState } from 'preact/hooks'; export default function Debug() { const apiHost = useContext(ApiHost); const config = useContext(Config); const [stats, setStats] = useState({}); const [timeoutId, setTimeoutId] = useState(null); const fetchStats = useCallback(async () => { const statsResponse = await fetch(`${apiHost}/api/stats`); const stats = statsResponse.ok ? await statsResponse.json() : {}; setStats(stats); setTimeoutId(setTimeout(fetchStats, 1000)); }, [setStats]); useEffect(() => { fetchStats(); }, []); useEffect(() => { return () => { clearTimeout(timeoutId); }; }, [timeoutId]); const { detectors, detection_fps, service, ...cameras } = stats; if (!service) { return 'loading…'; } const detectorNames = Object.keys(detectors); const detectorDataKeys = Object.keys(detectors[detectorNames[0]]); const cameraNames = Object.keys(cameras); const cameraDataKeys = Object.keys(cameras[cameraNames[0]]); const handleCopyConfig = useCallback(async () => { await window.navigator.clipboard.writeText(JSON.stringify(config, null, 2)); }, [config]); return (
Debug {service.version} {detectorDataKeys.map((name) => ( ))} {detectorNames.map((detector, i) => ( {detectorDataKeys.map((name) => ( ))} ))}
detector{name.replace('_', ' ')}
{detector}{detectors[detector][name]}
{cameraDataKeys.map((name) => ( ))} {cameraNames.map((camera, i) => ( {cameraDataKeys.map((name) => ( ))} ))}
camera{name.replace('_', ' ')}
{camera} {cameras[camera][name]}
Config
          {JSON.stringify(config, null, 2)}
        
); }