제어관리 노드 작동 방식 수정
This commit is contained in:
@@ -166,14 +166,12 @@ export function UpdateActionProperties({ nodeId, data }: UpdateActionPropertiesP
|
||||
let foundRestAPI = false;
|
||||
|
||||
sourceNodes.forEach((node) => {
|
||||
// 데이터 변환 노드인 경우: 변환된 필드 + 상위 노드의 원본 필드
|
||||
// 1️⃣ 데이터 변환 노드: 변환된 필드 + 상위 노드의 원본 필드
|
||||
if (node.type === "dataTransform") {
|
||||
// 상위 노드의 원본 필드 먼저 수집
|
||||
const upperResult = getAllSourceFields(node.id, visitedNodes);
|
||||
const upperFields = upperResult.fields;
|
||||
foundRestAPI = foundRestAPI || upperResult.hasRestAPI;
|
||||
|
||||
// 변환된 필드 추가 (in-place 변환 고려)
|
||||
if ((node.data as any).transformations && Array.isArray((node.data as any).transformations)) {
|
||||
const inPlaceFields = new Set<string>();
|
||||
|
||||
@@ -191,7 +189,6 @@ export function UpdateActionProperties({ nodeId, data }: UpdateActionPropertiesP
|
||||
}
|
||||
});
|
||||
|
||||
// 상위 필드 추가 (모두 포함, in-place는 변환 후 값)
|
||||
upperFields.forEach((field) => {
|
||||
fields.push(field);
|
||||
});
|
||||
@@ -199,7 +196,7 @@ export function UpdateActionProperties({ nodeId, data }: UpdateActionPropertiesP
|
||||
fields.push(...upperFields);
|
||||
}
|
||||
}
|
||||
// REST API 소스 노드인 경우
|
||||
// 2️⃣ REST API 소스 노드
|
||||
else if (node.type === "restAPISource") {
|
||||
foundRestAPI = true;
|
||||
const responseFields = (node.data as any).responseFields;
|
||||
@@ -216,21 +213,33 @@ export function UpdateActionProperties({ nodeId, data }: UpdateActionPropertiesP
|
||||
});
|
||||
}
|
||||
}
|
||||
// 일반 소스 노드인 경우
|
||||
else if (node.type === "tableSource" && (node.data as any).fields) {
|
||||
(node.data as any).fields.forEach((field: any) => {
|
||||
fields.push({
|
||||
name: field.name,
|
||||
label: field.label || field.displayName,
|
||||
// 3️⃣ 테이블/외부DB 소스 노드
|
||||
else if (node.type === "tableSource" || node.type === "externalDBSource") {
|
||||
const nodeFields = (node.data as any).fields || (node.data as any).outputFields;
|
||||
|
||||
if (nodeFields && Array.isArray(nodeFields)) {
|
||||
nodeFields.forEach((field: any) => {
|
||||
const fieldName = field.name || field.fieldName || field.column_name;
|
||||
const fieldLabel = field.label || field.displayName || field.label_ko;
|
||||
if (fieldName) {
|
||||
fields.push({
|
||||
name: fieldName,
|
||||
label: fieldLabel,
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
} else if (node.type === "externalDBSource" && (node.data as any).fields) {
|
||||
(node.data as any).fields.forEach((field: any) => {
|
||||
fields.push({
|
||||
name: field.name,
|
||||
label: field.label || field.displayName,
|
||||
});
|
||||
});
|
||||
} else {
|
||||
// 필드가 없으면 상위 노드로 계속 탐색
|
||||
const upperResult = getAllSourceFields(node.id, visitedNodes);
|
||||
fields.push(...upperResult.fields);
|
||||
foundRestAPI = foundRestAPI || upperResult.hasRestAPI;
|
||||
}
|
||||
}
|
||||
// 4️⃣ 통과 노드 (조건, 기타 모든 노드): 상위 노드로 계속 탐색
|
||||
else {
|
||||
const upperResult = getAllSourceFields(node.id, visitedNodes);
|
||||
fields.push(...upperResult.fields);
|
||||
foundRestAPI = foundRestAPI || upperResult.hasRestAPI;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user