|
|
|
|
@ -124,10 +124,12 @@ const renderSpecialNodeHandles = (isStartNode: boolean, isEndNode: boolean, data
|
|
|
|
|
const getConnectedEdgesForHandle = (edges: any[], nodeId: string, handleId: string, handleType: 'source' | 'target') => {
|
|
|
|
|
return edges.filter(edge => {
|
|
|
|
|
if (handleType === 'target') {
|
|
|
|
|
return edge.targetHandle === handleId;
|
|
|
|
|
// 检查目标节点ID和目标句柄ID都匹配
|
|
|
|
|
return edge.target === nodeId && edge.targetHandle === handleId;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
return edge.sourceHandle === handleId;
|
|
|
|
|
// 检查源节点ID和源句柄ID都匹配
|
|
|
|
|
return edge.source === nodeId && edge.sourceHandle === handleId;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
@ -287,7 +289,6 @@ const NodeContent = ({ data }: { data: NodeContentData }) => {
|
|
|
|
|
connectedIns.push(...relatedDataIn);
|
|
|
|
|
|
|
|
|
|
const relatedDataOut = getDataFieldsForApi(apiIn, dataOuts, 'out');
|
|
|
|
|
// console.log("relatedDataOut:",relatedDataOut);
|
|
|
|
|
connectedOuts.push(...relatedDataOut);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
@ -344,6 +345,15 @@ const NodeContent = ({ data }: { data: NodeContentData }) => {
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
{connectedDataFields.connectedIns.length === 0 && (
|
|
|
|
|
<div className={styles['node-inputs']}>
|
|
|
|
|
<div key={`input-${Date.now()}`} className={styles['node-input-label']}>
|
|
|
|
|
<span className={styles['node-data-type']}>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
{/* Data 输出 */}
|
|
|
|
|
{connectedDataFields.connectedOuts.length > 0 && !isEndNode && (
|
|
|
|
|
<div className={styles['node-outputs']}>
|
|
|
|
|
|