From 15a2c95351114cbf93b4e1ecef769a8e1b6bc427 Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Mon, 18 Sep 2023 19:32:24 -0300 Subject: [PATCH] fix(PageComponent): update validateSelection function to include edges in the selection if only nodes are selected --- .../FlowPage/components/PageComponent/index.tsx | 4 ++-- src/frontend/src/utils/reactflowUtils.ts | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx index defaf0229..ec4cd6b34 100644 --- a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx @@ -446,7 +446,7 @@ export default function Page({ )} { - if(validateSelection(lastSelection!).length===0){ + if(validateSelection(lastSelection!,edges).length===0){ const {newFlow} = generateFlow(lastSelection!,reactFlowInstance!,getRandomName()); const newGroupNode = generateNodeFromFlow(newFlow) setNodes((oldNodes)=>[...oldNodes.filter((oldNodes)=>!lastSelection?.nodes.some((selectionNode)=>selectionNode.id===oldNodes.id)),newGroupNode]) @@ -464,7 +464,7 @@ export default function Page({ else{ setErrorData({ title: "Invalid selection", - list: validateSelection(lastSelection!), + list: validateSelection(lastSelection!,edges), }); } }}/> diff --git a/src/frontend/src/utils/reactflowUtils.ts b/src/frontend/src/utils/reactflowUtils.ts index 9ddfa5dcb..357fa2113 100644 --- a/src/frontend/src/utils/reactflowUtils.ts +++ b/src/frontend/src/utils/reactflowUtils.ts @@ -486,8 +486,18 @@ export function concatFlows( } export function validateSelection( - selection: OnSelectionChangeParams + selection: OnSelectionChangeParams, + edges: Edge[] ): Array { + //add edges to selection if selection mode selected only nodes + if(selection.edges.length === 0){ + selection.edges = edges.filter( + (edge) => + selection.nodes.some((node) => node.id === edge.target) && + selection.nodes.some((node) => node.id === edge.source) + ); + } + let errorsArray: Array = []; // check if there is more than one node if (selection.nodes.length < 2) {