'use client'; import { useState } from 'react'; import { GenericCrudTable } from '@/components/admin/reference/generic-crud-table'; import { ColumnDef } from '@tanstack/react-table'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Loader2 } from 'lucide-react'; import { useProjects } from '@/hooks/use-master-data'; import { drawingMasterDataService } from '@/lib/services/drawing-master-data.service'; import { Badge } from '@/components/ui/badge'; interface Volume { id: number; volumeCode: string; volumeName: string; description?: string; sortOrder: number; } export default function ContractVolumesPage() { const [selectedProjectId, setSelectedProjectId] = useState(undefined); const { data: projects = [], isLoading: isLoadingProjects } = useProjects(); const columns: ColumnDef[] = [ { accessorKey: 'volumeCode', header: 'Code', cell: ({ row }) => ( {row.getValue('volumeCode')} ), }, { accessorKey: 'volumeName', header: 'Volume Name', }, { accessorKey: 'description', header: 'Description', cell: ({ row }) => {row.getValue('description') || '-'}, }, { accessorKey: 'sortOrder', header: 'Order', cell: ({ row }) => {row.getValue('sortOrder')}, }, ]; const projectFilter = (
Project:
); if (!selectedProjectId) { return (

Contract Drawing Volumes

Manage drawing volumes (เล่ม) for contract drawings

{projectFilter}
Please select a project to manage volumes.
); } return (
drawingMasterDataService.getContractVolumes(selectedProjectId)} createFn={(data: Record) => drawingMasterDataService.createContractVolume({ ...(data as unknown as Parameters[0]), projectId: selectedProjectId, }) } updateFn={(id, data) => drawingMasterDataService.updateContractVolume(id, data)} deleteFn={(id) => drawingMasterDataService.deleteContractVolume(id)} columns={columns} fields={[ { name: 'volumeCode', label: 'Volume Code', type: 'text', required: true }, { name: 'volumeName', label: 'Volume Name', type: 'text', required: true }, { name: 'description', label: 'Description', type: 'textarea' }, { name: 'sortOrder', label: 'Sort Order', type: 'text', required: true }, ]} filters={projectFilter} />
); }