import { TableCell, TableRow } from "@/components/ui/table"; import { Progress } from "@/components/ui/progress"; import { DockerContainer } from "@/types/docker.types"; import { DockerStatusBadge } from "../DockerStatusBadge"; import { DockerRowActions } from "./DockerRowActions"; import { dockerService } from "@/services/dockerService"; interface DockerTableRowProps { container: DockerContainer; onRowClick: (container: DockerContainer) => void; onContainerAction: (action: string, containerId: string, containerName: string) => void; onViewMetrics: (container: DockerContainer) => void; } export const DockerTableRow = ({ container, onRowClick, onContainerAction, onViewMetrics }: DockerTableRowProps) => { const cpuPercentage = container.cpu_usage; const memoryPercentage = Math.round((container.ram_used / container.ram_total) * 100); const diskPercentage = Math.round((container.disk_used / container.disk_total) * 100); const containerStatus = dockerService.getStatusFromDockerStatus(container.status); const formatPercentage = (used: number, total: number) => { if (total === 0) return "0%"; return `${Math.round((used / total) * 100)}%`; }; const getUsageColor = (percentage: number) => { if (percentage >= 90) return "text-red-500"; if (percentage >= 70) return "text-amber-500"; return "text-emerald-500"; }; const getProgressColor = (percentage: number) => { if (percentage >= 90) return "bg-red-500"; if (percentage >= 70) return "bg-amber-500"; return "bg-emerald-500"; }; return ( onRowClick(container)} >
{container.name}
{container.docker_id}
{cpuPercentage}%
{formatPercentage(container.ram_used, container.ram_total)}
{dockerService.formatBytes(container.ram_used)} / {dockerService.formatBytes(container.ram_total)}
{formatPercentage(container.disk_used, container.disk_total)}
{dockerService.formatBytes(container.disk_used)} / {dockerService.formatBytes(container.disk_total)}
{dockerService.formatUptime(container.uptime)} {new Date(container.last_checked).toLocaleString()} e.stopPropagation()}>
); };