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'; 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 ; } let storage_usage; if ( service && service['storage']['/media/frigate/recordings']['total'] != service['storage']['/media/frigate/clips']['total'] ) { storage_usage = ( Recordings {service['storage']['/media/frigate/recordings']['used']} {service['storage']['/media/frigate/recordings']['total']} Snapshots {service['storage']['/media/frigate/clips']['used']} {service['storage']['/media/frigate/clips']['total']} ); } else { storage_usage = ( Recordings & Snapshots {service['storage']['/media/frigate/recordings']['used']} {service['storage']['/media/frigate/recordings']['total']} ); } return (
Storage Overview
Data
{storage_usage}
Location Used MB Total MB
Memory
Location Used MB Total MB
/dev/shm {service['storage']['/dev/shm']['used']} {service['storage']['/dev/shm']['total']}
/tmp/cache {service['storage']['/tmp/cache']['used']} {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'] ? camera['bandwidth'] : 'Calculating...'} MB/hr
))}
); }