diff --git a/src/components/pages/uniformity/UniformityChart.tsx b/src/components/pages/uniformity/UniformityChart.tsx index 06db65d7..f41c59db 100644 --- a/src/components/pages/uniformity/UniformityChart.tsx +++ b/src/components/pages/uniformity/UniformityChart.tsx @@ -1,7 +1,7 @@ import React from 'react'; import Card from '@/components/Card'; -import UniformityBarChart from './chart/UniformityBarChart'; -import UniformityGaugeChart from './chart/UniformityGaugeChart'; +import UniformityBarChart from '@/components/pages/uniformity/chart/UniformityBarChart'; +import UniformityGaugeChart from '@/components/pages/uniformity/chart/UniformityGaugeChart'; interface BarChartData { name: string; diff --git a/src/components/pages/uniformity/UniformityTable.tsx b/src/components/pages/uniformity/UniformityTable.tsx index 1914b307..f4ea1bb4 100644 --- a/src/components/pages/uniformity/UniformityTable.tsx +++ b/src/components/pages/uniformity/UniformityTable.tsx @@ -1,6 +1,6 @@ 'use client'; -import React, { useCallback, useState, useEffect } from 'react'; +import React, { useCallback, useState, useEffect, useMemo } from 'react'; import useSWR from 'swr'; import { Icon } from '@iconify/react'; import { CellContext, ColumnDef, SortingState } from '@tanstack/react-table'; @@ -22,16 +22,60 @@ import { useModal } from '@/components/Modal'; import ConfirmationModal from '@/components/modal/ConfirmationModal'; import toast from 'react-hot-toast'; import Card from '@/components/Card'; +import { Color } from '@/types/theme'; + +const statusColorMap: Record = { + APPROVED: 'success', + REJECTED: 'error', + CREATED: 'none', +}; + +const statusIndicatorColorMap: Record = { + APPROVED: 'bg-success', + REJECTED: 'bg-error', + CREATED: 'bg-[#D9D9D9]', +}; + +const statusTextMap: Record = { + APPROVED: 'Disetujui', + REJECTED: 'Ditolak', + CREATED: 'Pengajuan', +}; + +const getStatusColor = (status: string): Color => { + return statusColorMap[status] || 'info'; +}; + +const getStatusIndicatorColor = (status: string): string => { + return statusIndicatorColorMap[status] || 'bg-info'; +}; + +const getStatusText = (status: string): string => { + return statusTextMap[status] || status; +}; + +const isUniformityLocked = (uniformity: Uniformity): boolean => { + return uniformity.status === 'APPROVED' || uniformity.status === 'REJECTED'; +}; const RowOptionsMenu = ({ type = 'dropdown', props, deleteClickHandler, + setSelectedUniformity, + openModal, }: { type: 'dropdown' | 'collapse'; props: CellContext; deleteClickHandler: () => void; + setSelectedUniformity: (uniformity: Uniformity) => void; + openModal: () => void; }) => { + const handleDeleteClick = useCallback(() => { + setSelectedUniformity(props.row.original); + openModal(); + }, [props.row.original, setSelectedUniformity, openModal]); + return (