From cf5f7ef9af835edf6b997f6b4d2f667ea45507bd Mon Sep 17 00:00:00 2001 From: johngreen Date: Fri, 22 May 2026 12:31:59 +0900 Subject: [PATCH] =?UTF-8?q?fix(=ED=85=8C=EC=9D=B4=EB=B8=94=ED=83=80?= =?UTF-8?q?=EC=9E=85):=20=EC=BB=AC=EB=9F=BC=20=ED=83=AD=20=EA=B7=B8?= =?UTF-8?q?=EB=A3=B9=20=ED=97=A4=EB=8D=94=20=EC=82=AC=EC=9A=A9=EC=9E=90/?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C=202=EA=B7=B8=EB=A3=B9=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=A0=95=EB=A6=AC=20=E2=80=94=20=EC=B0=B8=EC=A1=B0?= =?UTF-8?q?=20=ED=83=AD=EA=B3=BC=20=EC=A4=91=EB=B3=B5=20=ED=95=B4=EC=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #24 에서 컬럼/참조 탭은 분리했지만 ColumnGrid 의 기존 3그룹 (기본/참조/메타) 헤더가 그대로 남아있어 "참조 정보" 그룹이 컬럼 탭에서도 보이고 참조 탭에서도 보이는 시각적 중복 발생. DBeaver 의 Columns 탭처럼 모든 컬럼은 컬럼 탭에서 보여야 함 (참조 컬럼 포함). 단, "참조 정보" 그룹 헤더는 참조 탭이 같은 역할을 하므로 제거. - "기본 정보" + "참조 정보" → "사용자 컬럼" 으로 합침 - "메타 정보" → "시스템 컬럼" 으로 이름만 평이하게 - 참조 컬럼은 평범한 한 행으로 표시 (타입 칩으로 종류는 식별) - 미사용 Layers 아이콘 import 제거 Co-Authored-By: Claude Opus 4.7 (1M context) --- .../admin/table-type/ColumnGrid.tsx | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/frontend/components/admin/table-type/ColumnGrid.tsx b/frontend/components/admin/table-type/ColumnGrid.tsx index bbd76f4b..fa8e1131 100644 --- a/frontend/components/admin/table-type/ColumnGrid.tsx +++ b/frontend/components/admin/table-type/ColumnGrid.tsx @@ -1,7 +1,7 @@ "use client"; import React, { useMemo } from "react"; -import { MoreHorizontal, Database, Layers, FileStack, Trash2 } from "lucide-react"; +import { MoreHorizontal, Database, FileStack, Trash2 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { @@ -47,11 +47,10 @@ function getIndexState( return { isPk, hasIndex }; } -/** 그룹 헤더 라벨 */ -const GROUP_LABELS: Record; label: string }> = { - basic: { icon: FileStack, label: "기본 정보" }, - reference: { icon: Layers, label: "참조 정보" }, - meta: { icon: Database, label: "메타 정보" }, +/** 그룹 헤더 라벨 — 참조 컬럼은 별도 "참조" 탭에서 보여주므로 컬럼 탭에서는 사용자/시스템 2그룹으로만 분류 */ +const GROUP_LABELS: Record<"user" | "system", { icon: React.FC<{ className?: string }>; label: string }> = { + user: { icon: FileStack, label: "사용자 컬럼" }, + system: { icon: Database, label: "시스템 컬럼" }, }; export function ColumnGrid({ @@ -73,20 +72,19 @@ export function ColumnGrid({ [constraints, externalGetIndexState], ); - /** typeFilter 적용 후 그룹별로 정렬 */ + /** typeFilter 적용 후 사용자/시스템 그룹으로 분류 (참조 컬럼은 참조 탭으로 분리됐으므로 사용자 컬럼에 합침) */ const filteredAndGrouped = useMemo(() => { const filtered = typeFilter != null ? columns.filter((c) => (c.input_type || "text") === typeFilter) : columns; - const groups = { basic: [] as ColumnTypeInfo[], reference: [] as ColumnTypeInfo[], meta: [] as ColumnTypeInfo[] }; + const groups = { user: [] as ColumnTypeInfo[], system: [] as ColumnTypeInfo[] }; for (const col of filtered) { - const group = getColumnGroup(col); - groups[group].push(col); + const g = getColumnGroup(col) === "meta" ? "system" : "user"; + groups[g].push(col); } return groups; }, [columns, typeFilter]); - const totalFiltered = - filteredAndGrouped.basic.length + filteredAndGrouped.reference.length + filteredAndGrouped.meta.length; + const totalFiltered = filteredAndGrouped.user.length + filteredAndGrouped.system.length; return (
@@ -107,7 +105,7 @@ export function ColumnGrid({ {typeFilter ? "해당 타입의 컬럼이 없습니다." : "컬럼이 없습니다."}
) : ( - (["basic", "reference", "meta"] as const).map((groupKey) => { + (["user", "system"] as const).map((groupKey) => { const list = filteredAndGrouped[groupKey]; if (list.length === 0) return null; const { icon: Icon, label } = GROUP_LABELS[groupKey]; -- 2.52.0