"use client"; import React, { useState, useEffect } from "react"; import { Label } from "@/components/ui/label"; import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { RackStructureComponentConfig, FieldMapping } from "./types"; interface RackStructureConfigPanelProps { config: RackStructureComponentConfig; onChange: (config: RackStructureComponentConfig) => void; // 화면관리에서 전달하는 테이블 컬럼 정보 tables?: Array<{ tableName: string; tableLabel?: string; columns: Array<{ columnName: string; columnLabel?: string; dataType?: string; }>; }>; } export const RackStructureConfigPanel: React.FC = ({ config, onChange, tables = [], }) => { // 사용 가능한 컬럼 목록 추출 const [availableColumns, setAvailableColumns] = useState< Array<{ value: string; label: string }> >([]); useEffect(() => { // 모든 테이블의 컬럼을 플랫하게 추출 const columns: Array<{ value: string; label: string }> = []; tables.forEach((table) => { table.columns.forEach((col) => { columns.push({ value: col.columnName, label: col.columnLabel || col.columnName, }); }); }); setAvailableColumns(columns); }, [tables]); const handleChange = (key: keyof RackStructureComponentConfig, value: any) => { onChange({ ...config, [key]: value }); }; const handleFieldMappingChange = (field: keyof FieldMapping, value: string) => { const currentMapping = config.fieldMapping || {}; onChange({ ...config, fieldMapping: { ...currentMapping, [field]: value === "__none__" ? undefined : value, }, }); }; const fieldMapping = config.fieldMapping || {}; return (
{/* 필드 매핑 섹션 */}
필드 매핑

상위 폼에 배치된 필드 중 어떤 필드를 사용할지 선택하세요

{/* 창고 코드 필드 */}
{/* 창고명 필드 */}
{/* 층 필드 */}
{/* 구역 필드 */}
{/* 위치 유형 필드 */}
{/* 사용 여부 필드 */}
{/* 제한 설정 */}
제한 설정
handleChange("maxConditions", parseInt(e.target.value) || 10)} className="h-8" />
handleChange("maxRows", parseInt(e.target.value) || 99)} className="h-8" />
handleChange("maxLevels", parseInt(e.target.value) || 20)} className="h-8" />
{/* UI 설정 */}
UI 설정
handleChange("showTemplates", checked)} />
handleChange("showPreview", checked)} />
handleChange("showStatistics", checked)} />
handleChange("readonly", checked)} />
); };