"use client"; import React from "react"; import { Handle, Position } from "@xyflow/react"; interface ScreenField { name: string; type: string; description: string; } interface Screen { screenId: string; screenName: string; screenCode: string; tableName: string; fields: ScreenField[]; } interface ScreenNodeData { screen: Screen; onFieldClick: (screenId: string, fieldName: string) => void; } export const ScreenNode: React.FC<{ data: ScreenNodeData }> = ({ data }) => { const { screen, onFieldClick } = data; // 필드 타입에 따른 색상 반환 const getFieldTypeColor = (type: string) => { if (type.includes("INTEGER") || type.includes("NUMERIC")) return "text-blue-600 bg-blue-50"; if (type.includes("VARCHAR") || type.includes("TEXT")) return "text-green-600 bg-green-50"; if (type.includes("TIMESTAMP") || type.includes("DATE")) return "text-purple-600 bg-purple-50"; if (type.includes("BOOLEAN")) return "text-orange-600 bg-orange-50"; return "text-gray-600 bg-gray-50"; }; return (
{/* 노드 헤더 */}
{screen.screenName}
ID: {screen.screenCode}
🗃️ 테이블: {screen.tableName}
{/* 필드 목록 */}
필드 목록
{screen.fields.length}개
{screen.fields.map((field, index) => (
onFieldClick(screen.screenId, field.name)} >
{field.name}
{index === 0 && ( PK )}
{field.description}
{field.type}
))}
{/* React Flow 핸들 */} {/* 추가 핸들들 (상하) */}
); };