import { useState, useEffect, useRef, useCallback, useMemo, memo, startTransition } from 'react' import { visionApi, type SystemStatus, type CameraStatus, type MachineStatus, type StorageStats, type RecordingInfo, type MqttStatus, type MqttEventsResponse, type MqttEvent, formatBytes, formatDuration, formatUptime } from '../lib/visionApi' import { useAuth } from '../hooks/useAuth' import { CameraConfigModal } from './CameraConfigModal' import { CameraPreviewModal } from './CameraPreviewModal' // Memoized components to prevent unnecessary re-renders const SystemOverview = memo(({ systemStatus }: { systemStatus: SystemStatus }) => (
Storage usage and file statistics
Current status of all cameras in the system
Latest recording sessions
| Camera | Filename | Status | Duration | Size | Started |
|---|---|---|---|---|---|
|
{displayName}
{camera?.device_info?.friendly_name && (
({recording.camera_name})
)}
|
{recording.filename} | {recording.status} | {recording.duration_seconds ? formatDuration(recording.duration_seconds) : '-'} | {recording.file_size_bytes ? formatBytes(recording.file_size_bytes) : '-'} | {new Date(recording.start_time).toLocaleString()} |
Loading vision system data...
{error}
Monitor cameras, machines, and recording status
{lastUpdateTime && (Last updated: {lastUpdateTime.toLocaleTimeString()} {refreshing && ( Updating... )} {autoRefreshEnabled && !refreshing && ( Auto-refresh: {refreshInterval / 1000}s )}
)}Current status of all machines in the system
{notification.message}