From b9a109073d11262dd7ed84e25ff3cd0144c0c391 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Fri, 4 Jul 2025 00:21:05 +0000 Subject: (최겸) 0703 평가기준표 대표님 작업사항 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../table/reg-eval-criteria-columns.tsx | 221 ++++++++++----------- 1 file changed, 107 insertions(+), 114 deletions(-) (limited to 'lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx') diff --git a/lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx b/lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx index bdf583bc..88c8107b 100644 --- a/lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx +++ b/lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx @@ -10,14 +10,16 @@ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, + DropdownMenuShortcut, + DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; -import { Ellipsis } from 'lucide-react'; +import { Ellipsis, Eye, Edit, Trash2 } from 'lucide-react'; import { REG_EVAL_CRITERIA_CATEGORY, REG_EVAL_CRITERIA_CATEGORY2, REG_EVAL_CRITERIA_ITEM, - type RegEvalCriteriaView, + type RegEvalCriteria, // RegEvalCriteriaView 대신 RegEvalCriteria 사용 } from '@/db/schema'; import { type ColumnDef } from '@tanstack/react-table'; import { type DataTableRowAction } from '@/types/table'; @@ -26,16 +28,16 @@ import { type DataTableRowAction } from '@/types/table'; /* TYPES */ interface GetColumnsProps { - setRowAction: Dispatch | null>>, + setRowAction: Dispatch | null>>, }; // ---------------------------------------------------------------------------------------------------- /* FUNCTION FOR GETTING COLUMNS SETTING */ -function getColumns({ setRowAction }: GetColumnsProps): ColumnDef[] { +function getColumns({ setRowAction }: GetColumnsProps): ColumnDef[] { // [1] SELECT COLUMN - CHECKBOX - const selectColumn: ColumnDef = { + const selectColumn: ColumnDef = { id: 'select', header: ({ table }) => ( [] = [ + const criteriaColumns: ColumnDef[] = [ { accessorKey: 'category', header: ({ column }) => ( @@ -146,149 +148,129 @@ function getColumns({ setRowAction }: GetColumnsProps): ColumnDef ( - + ), cell: ({ row }) => ( -
+
{row.getValue('range') || '-'}
), enableSorting: true, enableHiding: false, meta: { - excelHeader: 'Range', + excelHeader: 'Evaluation Name', type: 'text', }, }, { - accessorKey: 'detail', + accessorKey: 'scoreType', header: ({ column }) => ( - - ), - cell: ({ row }) => ( -
- {row.getValue('detail')} -
- ), - enableSorting: true, - enableHiding: false, - meta: { - excelHeader: 'Detail', - type: 'text', - }, - }, - ]; - - // [3] SCORE COLUMNS - const scoreEquipColumns: ColumnDef[] = [ - { - accessorKey: 'scoreEquipShip', - header: ({ column }) => ( - + ), cell: ({ row }) => { - const value = row.getValue('scoreEquipShip'); - const displayValue = typeof value === 'string' - ? parseFloat(parseFloat(value).toFixed(2)).toString() - : '-'; + const value = row.getValue('scoreType'); return ( -
- {displayValue} -
+ + {value === 'fixed' ? '고정점수' : '변동점수'} + ); }, enableSorting: true, enableHiding: false, meta: { - excelHeader: 'Equipment-Shipbuilding Score', - group: 'Equipment Score', - type: 'number', + excelHeader: 'Score Type', + type: 'select', }, }, + ]; + + // [3] VARIABLE SCORE COLUMNS (변동점수 관련 컬럼들) + const variableScoreColumns: ColumnDef[] = [ { - accessorKey: 'scoreEquipMarine', + accessorKey: 'variableScoreMin', header: ({ column }) => ( - + ), cell: ({ row }) => { - const value = row.getValue('scoreEquipMarine'); + const value = row.getValue('variableScoreMin'); + const scoreType = row.getValue('scoreType'); + if (scoreType !== 'variable') return
-
; + const displayValue = typeof value === 'string' ? parseFloat(parseFloat(value).toFixed(2)).toString() : '-'; return ( -
+
{displayValue}
); }, enableSorting: true, - enableHiding: false, + enableHiding: true, meta: { - excelHeader: 'Equipment-Marine Engineering Score', - group: 'Equipment Score', + excelHeader: 'Min Score', type: 'number', }, }, - ]; - const scoreBulkColumns: ColumnDef[] = [ { - accessorKey: 'scoreBulkShip', + accessorKey: 'variableScoreMax', header: ({ column }) => ( - + ), cell: ({ row }) => { - const value = row.getValue('scoreBulkShip'); + const value = row.getValue('variableScoreMax'); + const scoreType = row.getValue('scoreType'); + if (scoreType !== 'variable') return
-
; + const displayValue = typeof value === 'string' ? parseFloat(parseFloat(value).toFixed(2)).toString() : '-'; return ( -
+
{displayValue}
); }, enableSorting: true, - enableHiding: false, + enableHiding: true, meta: { - excelHeader: 'Bulk-Shipbuilding Score', - group: 'Bulk Score', + excelHeader: 'Max Score', type: 'number', }, }, { - accessorKey: 'scoreBulkMarine', + accessorKey: 'variableScoreUnit', header: ({ column }) => ( - + ), cell: ({ row }) => { - const value = row.getValue('scoreBulkMarine'); - const displayValue = typeof value === 'string' - ? parseFloat(parseFloat(value).toFixed(2)).toString() - : '-'; + const value = row.getValue('variableScoreUnit'); + const scoreType = row.getValue('scoreType'); + if (scoreType !== 'variable') return
-
; + return ( -
- {displayValue} +
+ {value || '-'}
); }, enableSorting: true, - enableHiding: false, + enableHiding: true, meta: { - excelHeader: 'Bulk-Marine Engineering Score', - group: 'Bulk Score', - type: 'number', + excelHeader: 'Score Unit', + type: 'text', }, }, ]; // [4] REMARKS COLUMN - const remarksColumn: ColumnDef = { + const remarksColumn: ColumnDef = { accessorKey: 'remarks', header: ({ column }) => ( ), cell: ({ row }) => ( -
+
{row.getValue('remarks') || '-'}
), @@ -300,8 +282,8 @@ function getColumns({ setRowAction }: GetColumnsProps): ColumnDef