"use client"; import { DriverInfo, DriverManagementConfig } from "../types"; import { getStatusColor, getStatusLabel, formatTime, COLUMN_LABELS } from "./driverUtils"; import { Progress } from "@/components/ui/progress"; interface DriverListViewProps { drivers: DriverInfo[]; config: DriverManagementConfig; isCompact?: boolean; // 작은 크기 (2x2 등) } export function DriverListView({ drivers, config, isCompact = false }: DriverListViewProps) { const { visibleColumns } = config; // 컴팩트 모드: 요약 정보만 표시 if (isCompact) { const stats = { driving: drivers.filter((d) => d.status === "driving").length, standby: drivers.filter((d) => d.status === "standby").length, resting: drivers.filter((d) => d.status === "resting").length, maintenance: drivers.filter((d) => d.status === "maintenance").length, }; return (
{drivers.length}
전체 기사
{stats.driving}
운행중
{stats.standby}
대기중
{stats.resting}
휴식중
{stats.maintenance}
점검중
); } // 빈 데이터 처리 if (drivers.length === 0) { return (
조회된 기사 정보가 없습니다
); } return (
{visibleColumns.includes("status") && ( )} {visibleColumns.includes("name") && ( )} {visibleColumns.includes("vehicleNumber") && ( )} {visibleColumns.includes("vehicleType") && ( )} {visibleColumns.includes("departure") && ( )} {visibleColumns.includes("destination") && ( )} {visibleColumns.includes("departureTime") && ( )} {visibleColumns.includes("estimatedArrival") && ( )} {visibleColumns.includes("phone") && ( )} {visibleColumns.includes("progress") && ( )} {drivers.map((driver) => { const statusColors = getStatusColor(driver.status); return ( {visibleColumns.includes("status") && ( )} {visibleColumns.includes("name") && ( )} {visibleColumns.includes("vehicleNumber") && ( )} {visibleColumns.includes("vehicleType") && ( )} {visibleColumns.includes("departure") && ( )} {visibleColumns.includes("destination") && ( )} {visibleColumns.includes("departureTime") && ( )} {visibleColumns.includes("estimatedArrival") && ( )} {visibleColumns.includes("phone") && ( )} {visibleColumns.includes("progress") && ( )} ); })}
{COLUMN_LABELS.status}{COLUMN_LABELS.name}{COLUMN_LABELS.vehicleNumber}{COLUMN_LABELS.vehicleType}{COLUMN_LABELS.departure}{COLUMN_LABELS.destination}{COLUMN_LABELS.departureTime} {COLUMN_LABELS.estimatedArrival} {COLUMN_LABELS.phone}{COLUMN_LABELS.progress}
{getStatusLabel(driver.status)} {driver.name}{driver.vehicleNumber}{driver.vehicleType} {driver.departure || -} {driver.destination || -} {formatTime(driver.departureTime)}{formatTime(driver.estimatedArrival)}{driver.phone} {driver.progress !== undefined ? (
{driver.progress}%
) : ( - )}
); }