[agent-pipeline] pipe-20260330021427-v9fb round-1
This commit is contained in:
@@ -1308,7 +1308,7 @@ export default function ScreenDesigner({
|
||||
columnName: col.columnName,
|
||||
columnLabel: col.columnLabel,
|
||||
dataType: col.dataType === "string" ? "varchar" : col.dataType === "number" ? "numeric" : col.dataType,
|
||||
webType: col.dataType === "number" ? "number" : "text",
|
||||
web_type: col.dataType === "number" ? "number" : "text",
|
||||
input_type: "text",
|
||||
widgetType: col.dataType === "number" ? "number" : "text",
|
||||
isNullable: "YES",
|
||||
@@ -1399,7 +1399,7 @@ export default function ScreenDesigner({
|
||||
columnName: col.column_name,
|
||||
columnLabel: col.display_name || col.column_label || col.column_name,
|
||||
dataType: col.data_type || col.db_type,
|
||||
webType: col.web_type,
|
||||
web_type: col.web_type,
|
||||
input_type: inputType,
|
||||
inputType: inputType,
|
||||
widgetType,
|
||||
@@ -1484,7 +1484,7 @@ export default function ScreenDesigner({
|
||||
columnName: col.column_name,
|
||||
columnLabel: col.display_name || col.column_label || col.column_name,
|
||||
dataType: col.data_type || col.db_type,
|
||||
webType: col.web_type,
|
||||
web_type: col.web_type,
|
||||
input_type: inputType,
|
||||
inputType: inputType,
|
||||
widgetType,
|
||||
@@ -3279,7 +3279,7 @@ export default function ScreenDesigner({
|
||||
|
||||
console.log("🧩 컴포넌트 드롭:", {
|
||||
componentName: component.name,
|
||||
webType: component.webType,
|
||||
web_type: component.webType,
|
||||
rawPosition: { x: dropX, y: dropY },
|
||||
boundedPosition: { x: boundedX, y: boundedY },
|
||||
snappedPosition,
|
||||
@@ -3289,10 +3289,10 @@ export default function ScreenDesigner({
|
||||
console.log("🔍 ScreenDesigner handleComponentDrop:", {
|
||||
componentName: component.name,
|
||||
componentId: component.id,
|
||||
webType: component.webType,
|
||||
web_type: component.webType,
|
||||
category: component.category,
|
||||
defaultConfig: component.defaultConfig,
|
||||
defaultSize: component.defaultSize,
|
||||
default_config: component.defaultConfig,
|
||||
default_size: component.defaultSize,
|
||||
});
|
||||
|
||||
// 컴포넌트별 gridColumns 설정 및 크기 계산
|
||||
@@ -3395,7 +3395,7 @@ export default function ScreenDesigner({
|
||||
console.log("🎨 최종 컴포넌트 크기:", {
|
||||
componentId: component.id,
|
||||
componentName: component.name,
|
||||
defaultSize: component.defaultSize,
|
||||
default_size: component.defaultSize,
|
||||
finalSize: componentSize,
|
||||
gridColumns,
|
||||
});
|
||||
@@ -3465,7 +3465,7 @@ export default function ScreenDesigner({
|
||||
layerId: activeLayerIdRef.current || 1, // 🆕 현재 활성 레이어에 추가 (ref 사용)
|
||||
componentConfig: {
|
||||
type: component.id, // 새 컴포넌트 시스템의 ID 사용
|
||||
webType: component.webType, // 웹타입 정보 추가
|
||||
web_type: component.webType, // 웹타입 정보 추가
|
||||
...enhancedDefaultConfig,
|
||||
},
|
||||
webTypeConfig: getDefaultWebTypeConfig(component.webType),
|
||||
|
||||
@@ -488,7 +488,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD
|
||||
tableName,
|
||||
columnName: "id",
|
||||
columnLabel: "ID",
|
||||
webType: "number" as WebType,
|
||||
web_type: "number" as WebType,
|
||||
dataType: "BIGINT",
|
||||
isNullable: "NO",
|
||||
},
|
||||
@@ -496,7 +496,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD
|
||||
tableName,
|
||||
columnName: "name",
|
||||
columnLabel: "이름",
|
||||
webType: "text" as WebType,
|
||||
web_type: "text" as WebType,
|
||||
dataType: "VARCHAR",
|
||||
isNullable: "NO",
|
||||
},
|
||||
@@ -504,7 +504,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD
|
||||
tableName,
|
||||
columnName: "description",
|
||||
columnLabel: "설명",
|
||||
webType: "textarea" as WebType,
|
||||
web_type: "textarea" as WebType,
|
||||
dataType: "TEXT",
|
||||
isNullable: "YES",
|
||||
},
|
||||
@@ -512,7 +512,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD
|
||||
tableName,
|
||||
columnName: "created_date",
|
||||
columnLabel: "생성일",
|
||||
webType: "date" as WebType,
|
||||
web_type: "date" as WebType,
|
||||
dataType: "TIMESTAMP",
|
||||
isNullable: "NO",
|
||||
},
|
||||
@@ -520,7 +520,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD
|
||||
tableName,
|
||||
columnName: "updated_date",
|
||||
columnLabel: "수정일",
|
||||
webType: "date" as WebType,
|
||||
web_type: "date" as WebType,
|
||||
dataType: "TIMESTAMP",
|
||||
isNullable: "YES",
|
||||
},
|
||||
|
||||
@@ -949,7 +949,7 @@ function TableColumnAccordion({
|
||||
try {
|
||||
const settings: ColumnSettings = {
|
||||
columnLabel: columns.find(c => c.column_name === editingJoin.columnName)?.display_name || editingJoin.columnName,
|
||||
webType: "entity",
|
||||
web_type: "entity",
|
||||
detailSettings: JSON.stringify({}),
|
||||
codeCategory: "",
|
||||
codeValue: "",
|
||||
@@ -2063,7 +2063,7 @@ function OverviewTab({
|
||||
gridColumns: 4,
|
||||
componentConfig: {
|
||||
type: "text-input",
|
||||
webType: "text-input",
|
||||
web_type: "text-input",
|
||||
placeholder: `${newColumn}을(를) 입력하세요`,
|
||||
},
|
||||
webTypeConfig: {},
|
||||
|
||||
@@ -70,7 +70,7 @@ export default function SimpleScreenDesigner({ selectedScreen, onBackToList }: S
|
||||
size: { width: 200, height: 80 },
|
||||
title: `새 ${type}`,
|
||||
...(type === "widget" && {
|
||||
webType: "text" as const,
|
||||
web_type: "text" as const,
|
||||
label: "라벨",
|
||||
placeholder: "입력하세요",
|
||||
}),
|
||||
|
||||
@@ -62,8 +62,8 @@ export function ComponentsPanel({
|
||||
description: "드롭다운, 콤보박스, 라디오, 체크박스 등 다양한 선택 모드 지원",
|
||||
category: "input" as ComponentCategory,
|
||||
tags: ["select", "dropdown", "combobox", "v2"],
|
||||
defaultSize: { width: 300, height: 40 },
|
||||
defaultConfig: {
|
||||
default_size: { width: 300, height: 40 },
|
||||
default_config: {
|
||||
mode: "dropdown",
|
||||
source: "static",
|
||||
multiple: false,
|
||||
@@ -79,7 +79,7 @@ export function ComponentsPanel({
|
||||
description: "행 단위로 데이터를 추가/수정/삭제",
|
||||
category: "data" as ComponentCategory,
|
||||
tags: ["repeater", "table", "modal", "button", "v2", "v2"],
|
||||
defaultSize: { width: 600, height: 300 },
|
||||
default_size: { width: 600, height: 300 },
|
||||
},
|
||||
{
|
||||
id: "v2-bom-tree",
|
||||
@@ -87,7 +87,7 @@ export function ComponentsPanel({
|
||||
description: "BOM 구성을 계층 트리 형태로 조회",
|
||||
category: "data" as ComponentCategory,
|
||||
tags: ["bom", "tree", "계층", "제조", "v2"],
|
||||
defaultSize: { width: 900, height: 600 },
|
||||
default_size: { width: 900, height: 600 },
|
||||
},
|
||||
{
|
||||
id: "v2-bom-item-editor",
|
||||
@@ -95,7 +95,7 @@ export function ComponentsPanel({
|
||||
description: "BOM 하위 품목을 트리 구조로 추가/편집/삭제",
|
||||
category: "data" as ComponentCategory,
|
||||
tags: ["bom", "tree", "편집", "하위품목", "제조", "v2"],
|
||||
defaultSize: { width: 900, height: 400 },
|
||||
default_size: { width: 900, height: 400 },
|
||||
},
|
||||
] as unknown as ComponentDefinition[],
|
||||
[],
|
||||
|
||||
@@ -1091,7 +1091,7 @@ export const DetailSettingsPanel: React.FC<DetailSettingsPanelProps> = ({
|
||||
type: "component" as const,
|
||||
component_config: {
|
||||
type: "button-primary",
|
||||
webType: "button",
|
||||
web_type: "button",
|
||||
...anyComp.component_config,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -44,7 +44,7 @@ export interface TemplateComponent {
|
||||
description: string;
|
||||
category: "table" | "button" | "form" | "layout" | "chart" | "status" | "file" | "area";
|
||||
icon: React.ReactNode;
|
||||
defaultSize: { width: number; height: number };
|
||||
default_size: { width: number; height: number };
|
||||
components: Array<{
|
||||
type: "widget" | "container" | "datatable" | "file" | "area";
|
||||
widgetType?: string;
|
||||
@@ -93,7 +93,7 @@ const convertTemplateStandardToComponent = (template: TemplateStandard): Templat
|
||||
description: template.description || "",
|
||||
category: template.category as TemplateComponent["category"],
|
||||
icon: getIconByName(template.icon_name),
|
||||
defaultSize: template.default_size || { width: 300, height: 200 },
|
||||
default_size: template.default_size || { width: 300, height: 200 },
|
||||
components: template.layout_config?.components || [],
|
||||
};
|
||||
};
|
||||
@@ -107,7 +107,7 @@ const fallbackTemplates: TemplateComponent[] = [
|
||||
description: "컬럼 설정, 필터링, 페이지네이션이 포함된 완전한 데이터 테이블",
|
||||
category: "table",
|
||||
icon: <Table className="h-4 w-4" />,
|
||||
defaultSize: { width: 1000, height: 680 },
|
||||
default_size: { width:1000, height: 680 },
|
||||
components: [
|
||||
{
|
||||
type: "datatable",
|
||||
@@ -133,7 +133,7 @@ const fallbackTemplates: TemplateComponent[] = [
|
||||
description: "컴포넌트들을 그룹화할 수 있는 기본 박스 형태의 영역",
|
||||
category: "area",
|
||||
icon: <Square className="h-4 w-4" />,
|
||||
defaultSize: { width: 400, height: 300 },
|
||||
default_size: { width:400, height: 300 },
|
||||
components: [
|
||||
{
|
||||
type: "area",
|
||||
@@ -171,7 +171,7 @@ const fallbackTemplates: TemplateComponent[] = [
|
||||
description: "그림자와 둥근 모서리가 있는 카드 형태의 영역",
|
||||
category: "area",
|
||||
icon: <CreditCard className="h-4 w-4" />,
|
||||
defaultSize: { width: 400, height: 300 },
|
||||
default_size: { width:400, height: 300 },
|
||||
components: [
|
||||
{
|
||||
type: "area",
|
||||
@@ -209,7 +209,7 @@ const fallbackTemplates: TemplateComponent[] = [
|
||||
description: "제목 헤더가 포함된 패널 형태의 영역",
|
||||
category: "area",
|
||||
icon: <Layout className="h-4 w-4" />,
|
||||
defaultSize: { width: 500, height: 400 },
|
||||
default_size: { width:500, height: 400 },
|
||||
components: [
|
||||
{
|
||||
type: "area",
|
||||
@@ -237,7 +237,7 @@ const fallbackTemplates: TemplateComponent[] = [
|
||||
description: "내부 컴포넌트들을 격자 형태로 배치하는 영역",
|
||||
category: "area",
|
||||
icon: <Grid3x3 className="h-4 w-4" />,
|
||||
defaultSize: { width: 600, height: 400 },
|
||||
default_size: { width:600, height: 400 },
|
||||
components: [
|
||||
{
|
||||
type: "area",
|
||||
@@ -281,7 +281,7 @@ const fallbackTemplates: TemplateComponent[] = [
|
||||
description: "내부 컴포넌트들을 가로로 나란히 배치하는 영역",
|
||||
category: "area",
|
||||
icon: <Columns className="h-4 w-4" />,
|
||||
defaultSize: { width: 600, height: 200 },
|
||||
default_size: { width:600, height: 200 },
|
||||
components: [
|
||||
{
|
||||
type: "area",
|
||||
@@ -312,7 +312,7 @@ const fallbackTemplates: TemplateComponent[] = [
|
||||
description: "내부 컴포넌트들을 세로로 순차 배치하는 영역",
|
||||
category: "area",
|
||||
icon: <Rows className="h-4 w-4" />,
|
||||
defaultSize: { width: 300, height: 500 },
|
||||
default_size: { width:300, height: 500 },
|
||||
components: [
|
||||
{
|
||||
type: "area",
|
||||
@@ -343,7 +343,7 @@ const fallbackTemplates: TemplateComponent[] = [
|
||||
description: "사이드바와 메인 컨텐츠 영역으로 구분된 레이아웃",
|
||||
category: "area",
|
||||
icon: <SidebarOpen className="h-4 w-4" />,
|
||||
defaultSize: { width: 700, height: 400 },
|
||||
default_size: { width:700, height: 400 },
|
||||
components: [
|
||||
{
|
||||
type: "area",
|
||||
@@ -372,7 +372,7 @@ const fallbackTemplates: TemplateComponent[] = [
|
||||
description: "탭으로 구분된 여러 컨텐츠 영역을 제공하는 레이아웃",
|
||||
category: "area",
|
||||
icon: <Folder className="h-4 w-4" />,
|
||||
defaultSize: { width: 600, height: 400 },
|
||||
default_size: { width:600, height: 400 },
|
||||
components: [
|
||||
{
|
||||
type: "area",
|
||||
@@ -400,7 +400,7 @@ const fallbackTemplates: TemplateComponent[] = [
|
||||
// description: "접고 펼칠 수 있는 섹션들로 구성된 영역",
|
||||
// category: "area",
|
||||
// icon: <ChevronDown className="h-4 w-4" />,
|
||||
// defaultSize: { width: 500, height: 600 },
|
||||
// default_size: { width: 500, height: 600 },
|
||||
// components: [
|
||||
// {
|
||||
// type: "area",
|
||||
@@ -584,7 +584,7 @@ export const TemplatesPanel: React.FC<TemplatesPanelProps> = ({ onDragStart }) =
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="flex items-center space-x-2 text-xs text-muted-foreground/70">
|
||||
<span className="bg-primary/10 px-3 py-1 rounded-full font-medium text-primary">
|
||||
{template.defaultSize.width}×{template.defaultSize.height}
|
||||
{template.default_size.width}×{template.default_size.height}
|
||||
</span>
|
||||
</div>
|
||||
<span className="text-xs font-medium text-primary capitalize bg-primary/5 px-3 py-1 rounded-full border border-primary/20">
|
||||
|
||||
@@ -50,7 +50,7 @@ export const numberingRuleTemplate = {
|
||||
description: "코드 자동 채번 규칙 설정",
|
||||
category: "admin" as const,
|
||||
icon: Hash,
|
||||
defaultSize: { width: 1200, height: 800 },
|
||||
default_size: { width: 1200, height: 800 },
|
||||
components: [
|
||||
{
|
||||
type: "numbering-rule" as const,
|
||||
|
||||
@@ -44,7 +44,7 @@ export const RatingWidget: React.FC<RatingWidgetProps> = ({
|
||||
|
||||
setCurrentRating(rating);
|
||||
onChange?.(rating);
|
||||
onEvent?.("change", { value: rating, webType: "rating" });
|
||||
onEvent?.("change", { value: rating, web_type: "rating" });
|
||||
};
|
||||
|
||||
const handleStarHover = (rating: number) => {
|
||||
|
||||
Reference in New Issue
Block a user