import { useMemo } from 'react'; import { useSession } from '../context/SessionContext.jsx'; import { useTelemetryFrame } from '../context/TelemetryContext.jsx'; function formatEntries(sensors = {}) { return Object.entries(sensors).map(([key, value]) => ({ key, value: typeof value === 'object' ? JSON.stringify(value) : value, })); } export default function TelemetryPanel() { const { session } = useSession(); const roverId = session?.assignment?.roverId; const frame = useTelemetryFrame(roverId); const entries = useMemo(() => formatEntries(frame?.sensors), [frame?.sensors]); return (

Telemetry

{roverId ? `Rover ${roverId}` : 'No rover assigned'}

{frame?.receivedAt ? `Updated ${new Date(frame.receivedAt).toLocaleTimeString()}` : 'Waiting…'}

{entries.length === 0 ? (

{roverId ? 'No sensor frames yet.' : 'Assignment required to view sensors.'}

) : (
{entries.map(({ key, value }) => (
{key}
{value}
))}
)} {frame?.raw && (

Raw frame

            {frame.raw}
          
)}
); }