summaryrefslogtreecommitdiff
path: root/lib/evaluation-criteria/table
diff options
context:
space:
mode:
Diffstat (limited to 'lib/evaluation-criteria/table')
-rw-r--r--lib/evaluation-criteria/table/reg-eval-criteria-columns.tsx29
-rw-r--r--lib/evaluation-criteria/table/reg-eval-criteria-table-toolbar-actions.tsx29
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>
);
}