import { StorageGraph } from "@/components/graph/SystemGraph"; import { FrigateStats } from "@/types/stats"; import { useMemo } from "react"; import useSWR from "swr"; type CameraStorage = { [key: string]: { bandwidth: number; usage: number; usage_percent: number; }; }; type StorageMetricsProps = { setLastUpdated: (last: number) => void; }; export default function StorageMetrics({ setLastUpdated, }: StorageMetricsProps) { const { data: cameraStorage } = useSWR("recordings/storage"); const { data: stats } = useSWR("stats"); const totalStorage = useMemo(() => { if (!cameraStorage || !stats) { return undefined; } const totalStorage = { used: 0, total: stats.service.storage["/media/frigate/recordings"]["total"], }; Object.values(cameraStorage).forEach( (cam) => (totalStorage.used += cam.usage), ); setLastUpdated(Date.now() / 1000); return totalStorage; }, [cameraStorage, stats, setLastUpdated]); if (!cameraStorage || !stats || !totalStorage) { return; } return (
Overview
Recordings
/tmp/cache
/dev/shm
Camera Storage
{Object.keys(cameraStorage).map((camera) => (
{camera.replaceAll("_", " ")}
))}
); }