import { useState } from "react"; import { useRouter } from "next/navigation"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Skeleton } from "@/components/ui/skeleton"; import { formatDistanceToNow } from "date-fns"; interface ControllerTableProps { data: any[]; loading: boolean; } export function ControllerTable({ data, loading }: ControllerTableProps) { const router = useRouter(); const handleControllerClick = (cid: string) => { router.push(`/controllers/${cid}`); }; if (loading) { return ; } return ( Name CID Current Position Airport Frequency Rating Last Seen Session Duration {data.map((controller) => ( handleControllerClick(controller.cid)} > {controller.name} {controller.cid} {controller.callsign} {controller.airport} {controller.frequency} {controller.rating} {formatDistanceToNow(new Date(controller.lastSeen), { addSuffix: true })} {formatSessionDuration(controller.logonTime, controller.lastSeen)} ))}
); } function formatSessionDuration(start: string, end: string) { const duration = new Date(end).getTime() - new Date(start).getTime(); const hours = Math.floor(duration / (1000 * 60 * 60)); const minutes = Math.floor((duration % (1000 * 60 * 60)) / (1000 * 60)); return `${hours}h ${minutes}m`; } function LoadingSkeleton() { return (
{Array.from({ length: 5 }).map((_, i) => (
))}
); }