From df1e6a46002e656029150e334dc9110cb5155c95 Mon Sep 17 00:00:00 2001 From: cristhianzl Date: Fri, 16 Feb 2024 12:05:42 -0300 Subject: [PATCH] add controlX feature --- .../components/PageComponent/index.tsx | 7 ++++++ src/frontend/src/stores/flowStore.ts | 24 ++++++++++++++++++- src/frontend/src/types/zustand/flow/index.ts | 3 ++- src/frontend/src/utils/utils.ts | 2 -- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx index 9e127e688..325fc3b55 100644 --- a/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx +++ b/src/frontend/src/pages/FlowPage/components/PageComponent/index.tsx @@ -107,6 +107,13 @@ export default function Page({ ) { event.preventDefault(); setLastCopiedSelection(_.cloneDeep(lastSelection)); + } else if ( + (event.ctrlKey || event.metaKey) && + event.key === "x" && + lastSelection + ) { + event.preventDefault(); + setLastCopiedSelection(_.cloneDeep(lastSelection), true); } else if ( (event.ctrlKey || event.metaKey) && event.key === "v" && diff --git a/src/frontend/src/stores/flowStore.ts b/src/frontend/src/stores/flowStore.ts index 7f5d500f3..cb117196f 100644 --- a/src/frontend/src/stores/flowStore.ts +++ b/src/frontend/src/stores/flowStore.ts @@ -247,7 +247,29 @@ const useFlowStore = create((set, get) => ({ }); get().setEdges(newEdges); }, - setLastCopiedSelection: (newSelection) => { + setLastCopiedSelection: (newSelection, isCrop = false) => { + if (isCrop) { + const nodesIdsSelected = newSelection!.nodes.map((node) => node.id); + const edgesIdsSelected = newSelection!.edges.map((edge) => edge.id); + + nodesIdsSelected.forEach((id) => { + get().deleteNode(id); + }); + + edgesIdsSelected.forEach((id) => { + get().deleteEdge(id); + }); + + const newNodes = get().nodes.filter( + (node) => !nodesIdsSelected.includes(node.id) + ); + const newEdges = get().edges.filter( + (edge) => !edgesIdsSelected.includes(edge.id) + ); + + set({ nodes: newNodes, edges: newEdges }); + } + set({ lastCopiedSelection: newSelection }); }, cleanFlow: () => { diff --git a/src/frontend/src/types/zustand/flow/index.ts b/src/frontend/src/types/zustand/flow/index.ts index 1555b82c2..166f6220f 100644 --- a/src/frontend/src/types/zustand/flow/index.ts +++ b/src/frontend/src/types/zustand/flow/index.ts @@ -46,7 +46,8 @@ export type FlowStoreType = { ) => void; lastCopiedSelection: { nodes: any; edges: any } | null; setLastCopiedSelection: ( - newSelection: { nodes: any; edges: any } | null + newSelection: { nodes: any; edges: any } | null, + isCrop?: boolean ) => void; isBuilt: boolean; setIsBuilt: (isBuilt: boolean) => void; diff --git a/src/frontend/src/utils/utils.ts b/src/frontend/src/utils/utils.ts index dec842669..e997f30a3 100644 --- a/src/frontend/src/utils/utils.ts +++ b/src/frontend/src/utils/utils.ts @@ -141,8 +141,6 @@ export function groupByFamily( }))) ); }; - console.log(flow); - if (flow) { // se existir o flow for (const node of flow) {