diff options
Diffstat (limited to 'lib/evaluation-criteria/table')
| -rw-r--r-- | lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx | 29 | ||||
| -rw-r--r-- | lib/evaluation-criteria/table/reg-eval-criteria-table-toolbar-actions.tsx | 29 |
2 files changed, 35 insertions, 23 deletions
diff --git a/lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx b/lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx index 77e6118d..bdf583bc 100644 --- a/lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx +++ b/lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx @@ -12,7 +12,7 @@ import { DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; -import { PenToolIcon, TrashIcon } from 'lucide-react'; +import { Ellipsis } from 'lucide-react'; import { REG_EVAL_CRITERIA_CATEGORY, REG_EVAL_CRITERIA_CATEGORY2, @@ -361,28 +361,25 @@ function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<RegEvalCriteri // [6] ACTIONS COLUMN - DROPDOWN MENU const actionsColumn: ColumnDef<RegEvalCriteriaView> = { id: 'actions', - header: '작업', enableHiding: false, cell: function Cell({ row }) { return ( <DropdownMenu> <DropdownMenuTrigger asChild> <Button variant="ghost" size="icon"> - <PenToolIcon className="h-4 w-4" /> + <Ellipsis className="size-4" aria-hidden="true" /> </Button> </DropdownMenuTrigger> <DropdownMenuContent align="end"> <DropdownMenuItem onClick={() => setRowAction({ row, type: 'update' })} > - <PenToolIcon className="mr-2 h-4 w-4" /> Modify Criteria </DropdownMenuItem> <DropdownMenuItem onClick={() => setRowAction({ row, type: 'delete' })} className="text-destructive" > - <TrashIcon className="mr-2 h-4 w-4" /> Delete Criteria </DropdownMenuItem> </DropdownMenuContent> @@ -396,20 +393,14 @@ function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<RegEvalCriteri selectColumn, ...criteriaColumns, { - id: 'score', - header: '배점', - columns: [ - { - id: 'scoreEquip', - header: '기자재', - columns: scoreEquipColumns, - }, - { - id: 'scoreBulk', - header: '벌크', - columns: scoreBulkColumns, - }, - ], + id: 'scoreEquip', + header: '기자재', + columns: scoreEquipColumns, + }, + { + id: 'scoreBulk', + header: '벌크', + columns: scoreBulkColumns, }, ...hiddenColumns, remarksColumn, diff --git a/lib/evaluation-criteria/table/reg-eval-criteria-table-toolbar-actions.tsx b/lib/evaluation-criteria/table/reg-eval-criteria-table-toolbar-actions.tsx index b14cb22f..f066fa92 100644 --- a/lib/evaluation-criteria/table/reg-eval-criteria-table-toolbar-actions.tsx +++ b/lib/evaluation-criteria/table/reg-eval-criteria-table-toolbar-actions.tsx @@ -14,8 +14,9 @@ import { } from '@/components/ui/alert-dialog'; import { Button } from '@/components/ui/button'; import { Download, Plus, Trash2, Upload } from 'lucide-react'; -import { exportTableToExcel } from '@/lib/export'; -import { importRegEvalCriteriaExcel, removeRegEvalCriteria } from '../service'; +import { exportRegEvalCriteriaToExcel, exportRegEvalCriteriaTemplate } from '../excel/reg-eval-criteria-excel-export'; +import { importRegEvalCriteriaExcel } from '../excel/reg-eval-criteria-excel-import'; +import { removeRegEvalCriteria } from '../service'; import { toast } from 'sonner'; import { type RegEvalCriteriaView } from '@/db/schema'; import { type Table } from '@tanstack/react-table'; @@ -117,9 +118,9 @@ function RegEvalCriteriaTableToolbarActions(props: RegEvalCriteriaTableToolbarAc }; // Excel Export - const handleExport = () => { + const handleExport = async () => { try { - exportTableToExcel(table, { + await exportRegEvalCriteriaToExcel(table, { filename: 'Regular_Evaluation_Criteria', excludeColumns: ['select', 'actions'], }); @@ -130,6 +131,17 @@ function RegEvalCriteriaTableToolbarActions(props: RegEvalCriteriaTableToolbarAc } }; + // Excel Template Download + const handleTemplateDownload = async () => { + try { + await exportRegEvalCriteriaTemplate(); + toast.success('템플릿 파일이 다운로드되었습니다.'); + } catch (error) { + console.error('Error in Template Download: ', error); + toast.error('템플릿 다운로드 중 오류가 발생했습니다.'); + } + }; + return ( <div className="flex items-center gap-2"> <Button @@ -201,6 +213,15 @@ function RegEvalCriteriaTableToolbarActions(props: RegEvalCriteriaTableToolbarAc <Download className="size-4" aria-hidden="true" /> <span className="hidden sm:inline">Export</span> </Button> + <Button + variant="outline" + size="sm" + onClick={handleTemplateDownload} + className="gap-2" + > + <Download className="size-4" aria-hidden="true" /> + <span className="hidden sm:inline">Template</span> + </Button> </div> ); } |
