mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-16 18:15:55 +08:00
fix
This commit is contained in:
parent
35d9c59a29
commit
70aced0100
@ -12,12 +12,10 @@ import type {
|
|||||||
} from 'reactflow'
|
} from 'reactflow'
|
||||||
import {
|
import {
|
||||||
getConnectedEdges,
|
getConnectedEdges,
|
||||||
getIncomers,
|
|
||||||
getOutgoers,
|
getOutgoers,
|
||||||
useReactFlow,
|
useReactFlow,
|
||||||
useStoreApi,
|
useStoreApi,
|
||||||
} from 'reactflow'
|
} from 'reactflow'
|
||||||
import { uniq } from 'lodash-es'
|
|
||||||
import type { ToolDefaultValue } from '../block-selector/types'
|
import type { ToolDefaultValue } from '../block-selector/types'
|
||||||
import type {
|
import type {
|
||||||
Edge,
|
Edge,
|
||||||
@ -212,19 +210,22 @@ export const useNodesInteractions = () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
setEdges(newEdges)
|
setEdges(newEdges)
|
||||||
const incomesNodes = getIncomers(node, nodes, edges)
|
const connectedEdges = getConnectedEdges([node], edges).filter(edge => edge.target === node.id)
|
||||||
if (incomesNodes.length) {
|
|
||||||
const incomesNodesOutgoersId = uniq(incomesNodes.map(incomeNode => getOutgoers(incomeNode, nodes, edges)).flat().map(outgoer => outgoer.id))
|
|
||||||
|
|
||||||
if (incomesNodesOutgoersId.length > 1) {
|
const targetNodes: Node[] = []
|
||||||
const newNodes = produce(nodes, (draft) => {
|
for (let i = 0; i < connectedEdges.length; i++) {
|
||||||
draft.forEach((n) => {
|
const sourceConnectedEdges = getConnectedEdges([{ id: connectedEdges[i].source } as Node], edges).filter(edge => edge.source === connectedEdges[i].source && edge.sourceHandle === connectedEdges[i].sourceHandle)
|
||||||
if (incomesNodesOutgoersId.includes(n.id))
|
targetNodes.push(...sourceConnectedEdges.map(edge => nodes.find(n => n.id === edge.target)!))
|
||||||
n.data._inParallelHovering = true
|
}
|
||||||
})
|
|
||||||
|
if (targetNodes.length > 1) {
|
||||||
|
const newNodes = produce(nodes, (draft) => {
|
||||||
|
draft.forEach((n) => {
|
||||||
|
if (targetNodes.some(targetNode => n.id === targetNode.id))
|
||||||
|
n.data._inParallelHovering = true
|
||||||
})
|
})
|
||||||
setNodes(newNodes)
|
})
|
||||||
}
|
setNodes(newNodes)
|
||||||
}
|
}
|
||||||
}, [store, workflowStore, getNodesReadOnly])
|
}, [store, workflowStore, getNodesReadOnly])
|
||||||
|
|
||||||
|
@ -682,9 +682,7 @@ export const getParallelInfo = (nodes: Node[], edges: Edge[], parentNodeId?: str
|
|||||||
const outgoerConnectedEdges = getConnectedEdges([outgoer], edges).filter(edge => edge.source === outgoer.id)
|
const outgoerConnectedEdges = getConnectedEdges([outgoer], edges).filter(edge => edge.source === outgoer.id)
|
||||||
const sourceEdgesGroup = groupBy(outgoerConnectedEdges, 'sourceHandle')
|
const sourceEdgesGroup = groupBy(outgoerConnectedEdges, 'sourceHandle')
|
||||||
|
|
||||||
Object.keys(sourceEdgesGroup).sort((a, b) => {
|
Object.keys(sourceEdgesGroup).forEach((sourceHandle) => {
|
||||||
return sourceEdgesGroup[b].length - sourceEdgesGroup[a].length
|
|
||||||
}).forEach((sourceHandle) => {
|
|
||||||
nextHandles.push({ node: outgoer, handle: sourceHandle })
|
nextHandles.push({ node: outgoer, handle: sourceHandle })
|
||||||
})
|
})
|
||||||
if (!outgoerConnectedEdges.length)
|
if (!outgoerConnectedEdges.length)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user