From 0e8242014261187560ca1d1b61bbf371ac82c5a5 Mon Sep 17 00:00:00 2001 From: Braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Mon, 20 Dec 2021 18:52:20 +0100 Subject: [PATCH] fix(nodes): correctly calculate xyzpos from parent Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com> --- src/components/Nodes/NodeWrapper.vue | 2 +- src/types/connection.ts | 1 - src/types/node.ts | 2 +- src/utils/graph.ts | 14 ++++++-------- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/components/Nodes/NodeWrapper.vue b/src/components/Nodes/NodeWrapper.vue index c41385ad..54de45d5 100644 --- a/src/components/Nodes/NodeWrapper.vue +++ b/src/components/Nodes/NodeWrapper.vue @@ -32,7 +32,7 @@ watch([() => node.value.position, () => node.value.parentNode?.position], () => z: node.value.computedPosition.z, } if (node.value.parentNode) { - node.value.computedPosition = getXYZPos(node.value, xyzPos) + node.value.computedPosition = getXYZPos(node.value.parentNode, xyzPos) } else { node.value.computedPosition = xyzPos } diff --git a/src/types/connection.ts b/src/types/connection.ts index 7a52c9cb..ac391a61 100644 --- a/src/types/connection.ts +++ b/src/types/connection.ts @@ -14,7 +14,6 @@ export interface Connection { targetHandle?: string } -export type OnConnectFunc = (connection: Connection) => void export type OnConnectStartParams = { nodeId?: string handleId?: string diff --git a/src/types/node.ts b/src/types/node.ts index b8ad2ed7..37b056d1 100644 --- a/src/types/node.ts +++ b/src/types/node.ts @@ -61,7 +61,7 @@ export interface NodeProps { dragging?: boolean isValidTargetPos?: ValidConnectionFunc isValidSourcePos?: ValidConnectionFunc - parentNode?: GraphNode[] + parentNode?: any isParent?: boolean children?: Node[] } diff --git a/src/utils/graph.ts b/src/utils/graph.ts index ab22a7e6..6dd15dc4 100644 --- a/src/utils/graph.ts +++ b/src/utils/graph.ts @@ -327,14 +327,12 @@ export const getTransformForBounds = ( return [x, y, clampedZoom] } -export const getXYZPos = (node: GraphNode, result: XYZPosition): XYZPosition => { - if (!node.parentNode) return result - return getXYZPos(node.parentNode, { - x: result.x + node.parentNode.computedPosition.x, - y: result.y + node.parentNode.computedPosition.y, - z: - node.parentNode.computedPosition.z > node.computedPosition.z ? node.parentNode.computedPosition.z : node.computedPosition.z, - }) +export const getXYZPos = (parentNode: GraphNode, computedPosition: XYZPosition): XYZPosition => { + return { + x: computedPosition.x + parentNode.computedPosition.x, + y: computedPosition.y + parentNode.computedPosition.y, + z: parentNode.computedPosition.z > computedPosition.z ? parentNode.computedPosition.z : computedPosition.z, + } } export const isParentSelected = (node: GraphNode): boolean => {