'use client'; import { useMemo, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { Icon } from '@iconify/react'; import { ColumnDef } from '@tanstack/react-table'; import Button from '@/components/Button'; import DrawerHeader from '@/components/helper/drawer/DrawerHeader'; import Table from '@/components/Table'; import Badge from '@/components/Badge'; import Tooltip from '@/components/Tooltip'; import RequirePermission from '@/components/helper/RequirePermission'; import { UniformityDetail as UniformityDetailType } from '@/types/api/uniformity/uniformity'; import { formatDate } from '@/lib/helper'; import { useUiStore } from '@/stores/ui/ui.store'; import UniformityDetailsPreview from './UniformityDetailsPreview'; import { getStatusColor, getStatusIndicatorColor, getStatusText, } from '@/components/pages/uniformity/uniformity-utils'; import { DetailOptionType } from '@/types/api/uniformity/uniformity'; interface UniformityDetailProps { initialValues: UniformityDetailType; } const UniformityDetail: React.FC = ({ initialValues, }) => { const router = useRouter(); const setExpandedDrawerOpen = useUiStore((s) => s.setExpandedDrawerOpen); const setExpandedDrawerContent = useUiStore( (s) => s.setExpandedDrawerContent ); const handleApprove = () => { router.push(`/uniformity?action=approve&id=${initialValues.id}`); }; const handleReject = () => { router.push(`/uniformity?action=reject&id=${initialValues.id}`); }; const handleViewUniformityDetails = () => { setExpandedDrawerContent( ); setTimeout(() => { setExpandedDrawerOpen(true); }, 0); }; useEffect(() => { return () => { setExpandedDrawerOpen(false); setExpandedDrawerContent(null); }; }, []); const infoUmumTableData: DetailOptionType[] = useMemo(() => { if (!initialValues) return []; return [ { id: 'tanggal', value: 'tanggal', label: 'Tanggal', }, { id: 'lokasi-farm', value: 'lokasi-farm', label: 'Lokasi Farm', }, { id: 'project-flock', value: 'project-flock', label: 'Project Flock', }, { id: 'kandang', value: 'kandang', label: 'Kandang', }, { id: 'file-name', value: 'file-name', label: 'File Uniformity', }, { id: 'approval-status', value: 'approval-status', label: 'Status', }, ]; }, [initialValues]); const columnsInfoUmum: ColumnDef[] = useMemo( () => [ { accessorKey: 'label', header: 'Label', cell: (props) => props.row.original.label, }, { accessorKey: 'value', header: 'Value', cell: (props) => { const id = props.row.original.id; const { info_umum, latest_approval } = initialValues!; const statusValue = latest_approval?.action ?? '-'; const valueMap: Record = { tanggal: formatDate(info_umum.tanggal, 'DD MMMM YYYY'), 'lokasi-farm': info_umum.lokasi_farm, 'project-flock': info_umum.project_flock, kandang: info_umum.kandang, 'file-name': info_umum.file_name, 'approval-status': statusValue, }; if (id === 'approval-status') { const status = latest_approval?.action; if (status) { return (
{getStatusText(status)}
); } return -; } if (id === 'file-name') { return (
{valueMap[id]}
); } return {valueMap[id] || '-'}; }, }, ], [initialValues] ); return (
{/* Header */} {/* Form Section */}
{initialValues ? (
{/* Info Umum */}

Informasi Umum

data={infoUmumTableData} columns={columnsInfoUmum} pageSize={6} className={{ containerClassName: 'mb-0', paginationClassName: 'hidden', }} />
{/* Approve/Reject Buttons */} {initialValues.result && (
)}
) : (

No data available

Uniformity detail not found

)}
); }; export default UniformityDetail;