review: address feedback — expand cut to include full outgoing structure (all hops)
This commit is contained in:
@@ -112,16 +112,20 @@ export default function NodeContextMenu({
|
|||||||
? selectedNodeIds
|
? selectedNodeIds
|
||||||
: [nodeContext.nodeId];
|
: [nodeContext.nodeId];
|
||||||
|
|
||||||
// Also include nodes reachable by outgoing edges from base nodes
|
// BFS to collect all nodes reachable via outgoing edges from base nodes (all hops)
|
||||||
const baseIdSet = new Set(baseIds);
|
const visited = new Set(baseIds);
|
||||||
const linkedIds = new Set<string>();
|
const queue = [...baseIds];
|
||||||
for (const nodeId of baseIds) {
|
while (queue.length > 0) {
|
||||||
|
const nodeId = queue.shift()!;
|
||||||
currentGraph.edges
|
currentGraph.edges
|
||||||
.filter(e => e.from === nodeId && !baseIdSet.has(e.to))
|
.filter(e => e.from === nodeId && !visited.has(e.to))
|
||||||
.forEach(e => linkedIds.add(e.to));
|
.forEach(e => {
|
||||||
|
visited.add(e.to);
|
||||||
|
queue.push(e.to);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const allCutIds = [...baseIds, ...linkedIds];
|
const allCutIds = [...visited];
|
||||||
const allCutIdSet = new Set(allCutIds);
|
const allCutIdSet = new Set(allCutIds);
|
||||||
|
|
||||||
const cutNodes = currentGraph.nodes.filter(n => allCutIdSet.has(n.id));
|
const cutNodes = currentGraph.nodes.filter(n => allCutIdSet.has(n.id));
|
||||||
|
|||||||
Reference in New Issue
Block a user