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
Last Seen
Session Duration
{data.map((controller) => (
handleControllerClick(controller.cid)}
>
{controller.name}
{controller.cid}
{controller.callsign}
{controller.airport}
{controller.frequency}
{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) => (
))}
);
}