import { h, Fragment } from 'preact'; import ActivityIndicator from '../components/ActivityIndicator'; import Heading from '../components/Heading'; import { useWs } from '../api/ws'; import useSWR from 'swr'; import { Table, Tbody, Thead, Tr, Th, Td } from '../components/Table'; import Link from '../components/Link'; import Button from '../components/Button'; import { About } from '../icons/About'; const emptyObject = Object.freeze({}); export default function Storage() { const { data: storage } = useSWR('recordings/storage'); const { value: { payload: stats }, } = useWs('stats'); const { data: initialStats } = useSWR('stats'); const { service } = stats || initialStats || emptyObject; if (!service || !storage) { return ; } const getUnitSize = (MB) => { if (isNaN(MB) || MB < 0) return 'Invalid number'; if (MB < 1024) return `${MB} MiB`; return `${(MB / 1024).toFixed(2)} GiB`; }; let storage_usage; if ( service && service['storage']['/media/frigate/recordings']['total'] != service['storage']['/media/frigate/clips']['total'] ) { storage_usage = ( Recordings {getUnitSize(service['storage']['/media/frigate/recordings']['used'])} {getUnitSize(service['storage']['/media/frigate/recordings']['total'])} Snapshots {getUnitSize(service['storage']['/media/frigate/clips']['used'])} {getUnitSize(service['storage']['/media/frigate/clips']['total'])} ); } else { storage_usage = ( Recordings & Snapshots {getUnitSize(service['storage']['/media/frigate/recordings']['used'])} {getUnitSize(service['storage']['/media/frigate/recordings']['total'])} ); } return (
Storage Overview
Data
{storage_usage}
Location Used Total
Memory
Location Used Total
/dev/shm {getUnitSize(service['storage']['/dev/shm']['used'])} {getUnitSize(service['storage']['/dev/shm']['total'])}
/tmp/cache {getUnitSize(service['storage']['/tmp/cache']['used'])} {getUnitSize(service['storage']['/tmp/cache']['total'])}
Cameras
{Object.entries(storage).map(([name, camera]) => (
{name.replaceAll('_', ' ')}
Usage Stream Bandwidth
{Math.round(camera['usage_percent'] ?? 0)}% {camera['bandwidth'] ? `${getUnitSize(camera['bandwidth'])}/hr` : 'Calculating...'}
))}
); }