import { Edit, Trash2, HardDrive, FileText, Users } from "lucide-react";
import { Company } from "@/types/company";
import { Button } from "@/components/ui/button";
import { ResponsiveDataView, RDVColumn, RDVCardField } from "@/components/common/ResponsiveDataView";
import { useRouter } from "next/navigation";
interface CompanyTableProps {
companies: Company[];
isLoading: boolean;
onEdit: (company: Company) => void;
onDelete: (company: Company) => void;
}
/**
* 회사 목록 테이블 컴포넌트
*/
export function CompanyTable({ companies, isLoading, onEdit, onDelete }: CompanyTableProps) {
const router = useRouter();
// 부서 관리 페이지로 이동
const handleManageDepartments = (company: Company) => {
router.push(`/admin/userMng/companyList/${company.company_code}/departments`);
};
// 디스크 사용량 포맷팅 함수
const formatDiskUsage = (company: Company) => {
if (!company.diskUsage) {
return (
정보 없음
);
}
const { fileCount, totalSizeMB } = company.diskUsage;
return (
{fileCount}개 파일
{totalSizeMB.toFixed(1)} MB
);
};
// 데스크톱 테이블 컬럼 정의
const columns: RDVColumn[] = [
{
key: "company_code",
label: "회사코드",
width: "150px",
render: (value) => {value},
},
{
key: "company_name",
label: "회사명",
render: (value) => {value},
},
{
key: "writer",
label: "등록자",
width: "200px",
},
{
key: "diskUsage",
label: "디스크 사용량",
hideOnMobile: true,
render: (_value, row) => formatDiskUsage(row),
},
];
// 모바일 카드 필드 정의
const cardFields: RDVCardField[] = [
{
label: "작성자",
render: (company) => {company.writer},
},
{
label: "디스크 사용량",
render: (company) => formatDiskUsage(company),
},
];
return (
data={companies}
columns={columns}
keyExtractor={(c) => c.regdate + c.company_code}
isLoading={isLoading}
emptyMessage="등록된 회사가 없습니다."
skeletonCount={10}
cardTitle={(c) => c.company_name}
cardSubtitle={(c) => {c.company_code}}
cardFields={cardFields}
actionsLabel="작업"
actionsWidth="180px"
renderActions={(company) => (
<>
>
)}
/>
);
}