[agent-pipeline] pipe-20260315121506-3c5c round-1
This commit is contained in:
parent
3ef8cebf1a
commit
009607f3f1
|
|
@ -47,6 +47,9 @@ const RELATION_COLORS: Record<VisualRelationType, { stroke: string; strokeLight:
|
||||||
join: { stroke: 'hsl(var(--warning))', strokeLight: 'hsl(var(--warning) / 0.4)', label: '엔티티 조인' },
|
join: { stroke: 'hsl(var(--warning))', strokeLight: 'hsl(var(--warning) / 0.4)', label: '엔티티 조인' },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 엣지 필터 카테고리 (UI 토글용)
|
||||||
|
type EdgeCategory = 'main' | 'filter' | 'join' | 'lookup' | 'flow';
|
||||||
|
|
||||||
// 노드 타입 등록
|
// 노드 타입 등록
|
||||||
const nodeTypes = {
|
const nodeTypes = {
|
||||||
screenNode: ScreenNode,
|
screenNode: ScreenNode,
|
||||||
|
|
@ -96,6 +99,15 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
|
||||||
// 그룹 내 포커스된 화면 ID (그룹 모드에서만 사용)
|
// 그룹 내 포커스된 화면 ID (그룹 모드에서만 사용)
|
||||||
const [focusedScreenId, setFocusedScreenId] = useState<number | null>(null);
|
const [focusedScreenId, setFocusedScreenId] = useState<number | null>(null);
|
||||||
|
|
||||||
|
// 엣지 필터 상태 (유형별 표시/숨김)
|
||||||
|
const [edgeFilterState, setEdgeFilterState] = useState<Record<EdgeCategory, boolean>>({
|
||||||
|
main: true,
|
||||||
|
filter: true,
|
||||||
|
join: true,
|
||||||
|
lookup: false,
|
||||||
|
flow: true,
|
||||||
|
});
|
||||||
|
|
||||||
// 노드 설정 모달 상태
|
// 노드 설정 모달 상태
|
||||||
const [isSettingModalOpen, setIsSettingModalOpen] = useState(false);
|
const [isSettingModalOpen, setIsSettingModalOpen] = useState(false);
|
||||||
const [settingModalNode, setSettingModalNode] = useState<{
|
const [settingModalNode, setSettingModalNode] = useState<{
|
||||||
|
|
@ -702,6 +714,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
|
||||||
markerEnd: { type: MarkerType.ArrowClosed, color: "hsl(var(--info))" },
|
markerEnd: { type: MarkerType.ArrowClosed, color: "hsl(var(--info))" },
|
||||||
animated: true,
|
animated: true,
|
||||||
style: { stroke: "hsl(var(--info))", strokeWidth: 2 },
|
style: { stroke: "hsl(var(--info))", strokeWidth: 2 },
|
||||||
|
data: { edgeCategory: 'flow' as EdgeCategory },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -722,6 +735,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
|
||||||
stroke: "hsl(var(--primary))",
|
stroke: "hsl(var(--primary))",
|
||||||
strokeWidth: 2,
|
strokeWidth: 2,
|
||||||
},
|
},
|
||||||
|
data: { edgeCategory: 'main' as EdgeCategory },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -764,6 +778,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
sourceScreenId,
|
sourceScreenId,
|
||||||
|
edgeCategory: 'filter' as EdgeCategory,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -816,6 +831,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
|
||||||
sourceScreenId,
|
sourceScreenId,
|
||||||
isFilterJoin: true,
|
isFilterJoin: true,
|
||||||
visualRelationType: 'join',
|
visualRelationType: 'join',
|
||||||
|
edgeCategory: 'join' as EdgeCategory,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
@ -926,6 +942,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
|
||||||
referrerTable,
|
referrerTable,
|
||||||
referencedTable,
|
referencedTable,
|
||||||
visualRelationType, // 관계 유형 저장
|
visualRelationType, // 관계 유형 저장
|
||||||
|
edgeCategory: (visualRelationType === 'lookup' ? 'lookup' : 'join') as EdgeCategory,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -966,6 +983,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
|
||||||
data: {
|
data: {
|
||||||
sourceScreenId,
|
sourceScreenId,
|
||||||
visualRelationType,
|
visualRelationType,
|
||||||
|
edgeCategory: (visualRelationType === 'lookup' ? 'lookup' : 'join') as EdgeCategory,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
@ -992,7 +1010,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
|
||||||
strokeDasharray: "8,4",
|
strokeDasharray: "8,4",
|
||||||
opacity: 0.5,
|
opacity: 0.5,
|
||||||
},
|
},
|
||||||
data: { visualRelationType: 'join' },
|
data: { visualRelationType: 'join', edgeCategory: 'join' as EdgeCategory },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -1018,6 +1036,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
|
||||||
labelBgStyle: { fill: "hsl(var(--card))", stroke: "hsl(var(--border))", strokeWidth: 1 },
|
labelBgStyle: { fill: "hsl(var(--card))", stroke: "hsl(var(--border))", strokeWidth: 1 },
|
||||||
labelBgPadding: [3, 2] as [number, number],
|
labelBgPadding: [3, 2] as [number, number],
|
||||||
style: { stroke: "hsl(var(--success))", strokeWidth: 1.5 },
|
style: { stroke: "hsl(var(--success))", strokeWidth: 1.5 },
|
||||||
|
data: { edgeCategory: (rel.relation_type === 'lookup' ? 'lookup' : 'join') as EdgeCategory },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1042,6 +1061,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
|
||||||
labelBgPadding: [4, 2] as [number, number],
|
labelBgPadding: [4, 2] as [number, number],
|
||||||
markerEnd: { type: MarkerType.ArrowClosed, color: "hsl(var(--primary))" },
|
markerEnd: { type: MarkerType.ArrowClosed, color: "hsl(var(--primary))" },
|
||||||
style: { stroke: "hsl(var(--primary))", strokeWidth: 2 },
|
style: { stroke: "hsl(var(--primary))", strokeWidth: 2 },
|
||||||
|
data: { edgeCategory: 'flow' as EdgeCategory },
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue