import React, { useState } from "react"; import { useTableOptions } from "@/contexts/TableOptionsContext"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; import { ScrollArea } from "@/components/ui/scroll-area"; import { ArrowRight } from "lucide-react"; interface Props { tableId: string; open: boolean; onOpenChange: (open: boolean) => void; } export const GroupingPanel: React.FC = ({ tableId, open, onOpenChange, }) => { const { getTable } = useTableOptions(); const table = getTable(tableId); const [selectedColumns, setSelectedColumns] = useState([]); const toggleColumn = (columnName: string) => { if (selectedColumns.includes(columnName)) { setSelectedColumns(selectedColumns.filter((c) => c !== columnName)); } else { setSelectedColumns([...selectedColumns, columnName]); } }; const applyGrouping = () => { table?.onGroupChange(selectedColumns); onOpenChange(false); }; const clearGrouping = () => { setSelectedColumns([]); table?.onGroupChange([]); }; return ( 그룹 설정 데이터를 그룹화할 컬럼을 선택하세요
{/* 상태 표시 */}
{selectedColumns.length}개 컬럼으로 그룹화
{/* 컬럼 리스트 */}
{table?.columns.map((col) => { const isSelected = selectedColumns.includes(col.columnName); const order = selectedColumns.indexOf(col.columnName) + 1; return (
toggleColumn(col.columnName)} />
{col.columnLabel}
{col.columnName}
{isSelected && (
{order}번째
)}
); })}
{/* 그룹 순서 미리보기 */} {selectedColumns.length > 0 && (
그룹화 순서
{selectedColumns.map((colName, index) => { const col = table?.columns.find( (c) => c.columnName === colName ); return (
{col?.columnLabel}
{index < selectedColumns.length - 1 && ( )}
); })}
)}
); };