From 18ec91c2d9ea1c0ea899f756aeb888ed1b50de42 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Fri, 28 Feb 2020 16:06:37 +0100 Subject: [PATCH] Script to Unistall a Market --- .../FunctionLibraries/NodeDeleter.js | 55 ++++++++++--------- .../FunctionLibraries/SuperScripts.js | 6 +- CanvasApp/DesignSpace/Workspace/Workspace.js | 2 +- .../FloatingSpace/UiObjectConstructor.js | 1 + 4 files changed, 37 insertions(+), 27 deletions(-) diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeDeleter.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeDeleter.js index 46ad39fcb..6287b01b8 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeDeleter.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/NodeDeleter.js @@ -56,38 +56,40 @@ function newNodeDeleter () { } /* Remove node from parent */ - if (node.payload.parentNode !== undefined) { - let parentNodeDefinition = APP_SCHEMA_MAP.get(node.payload.parentNode.type) - if (parentNodeDefinition !== undefined) { - if (parentNodeDefinition.properties !== undefined) { - for (let i = 0; i < parentNodeDefinition.properties.length; i++) { - let property = parentNodeDefinition.properties[i] - if (nodeDefinition.propertyNameAtParent === property.name) { - switch (property.type) { - case 'node': { - node.payload.parentNode[property.name] = undefined - } - break - case 'array': { - let nodePropertyArray = node.payload.parentNode[property.name] - if (nodePropertyArray !== undefined) { - for (let j = 0; j < nodePropertyArray.length; j++) { - let arrayItem = nodePropertyArray[j] - if (arrayItem.id === node.id) { + if (node.payload !== undefined) { + if (node.payload.parentNode !== undefined) { + let parentNodeDefinition = APP_SCHEMA_MAP.get(node.payload.parentNode.type) + if (parentNodeDefinition !== undefined) { + if (parentNodeDefinition.properties !== undefined) { + for (let i = 0; i < parentNodeDefinition.properties.length; i++) { + let property = parentNodeDefinition.properties[i] + if (nodeDefinition.propertyNameAtParent === property.name) { + switch (property.type) { + case 'node': { + node.payload.parentNode[property.name] = undefined + } + break + case 'array': { + let nodePropertyArray = node.payload.parentNode[property.name] + if (nodePropertyArray !== undefined) { + for (let j = 0; j < nodePropertyArray.length; j++) { + let arrayItem = nodePropertyArray[j] + if (arrayItem.id === node.id) { /* If this object is chained to the ones of the same type we need to give the next in the chain the reference to the current chain parent */ - if (nodeDefinition.chainedToSameType === true) { - if (j < nodePropertyArray.length - 1) { - let nextArrayItem = nodePropertyArray[j + 1] - nextArrayItem.payload.chainParent = node.payload.chainParent + if (nodeDefinition.chainedToSameType === true) { + if (j < nodePropertyArray.length - 1) { + let nextArrayItem = nodePropertyArray[j + 1] + nextArrayItem.payload.chainParent = node.payload.chainParent + } } - } - nodePropertyArray.splice(j, 1) + nodePropertyArray.splice(j, 1) + } } } } + break } - break } } } @@ -112,6 +114,9 @@ function newNodeDeleter () { } function cleanNode (node) { + if (node.payload === undefined) { return } + if (node === undefined) { return } + node.payload.targetPosition.x = undefined node.payload.targetPosition.y = undefined node.payload.visible = undefined diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js index a2913fda7..7103935ec 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/SuperScripts.js @@ -5,7 +5,7 @@ function newSuperScriptsFunctions () { return thisObject - function runSuperScript (node, functionLibraryNodeCloning, functionLibraryUiObjectsFromNodes) { + function runSuperScript (node, rootNodes, functionLibraryNodeCloning, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) { try { let clone = functionLibraryNodeCloning.getNodeClone let executionResult = true @@ -17,6 +17,10 @@ function newSuperScriptsFunctions () { functionLibraryUiObjectsFromNodes.createUiObjectFromNode(templateClone, target, target) } + function deleteNode (node) { + functionLibraryNodeDeleter.deleteUIObject(node, rootNodes) + } + /* Validations */ if (executionResult === true && node.payload.parentNode === undefined) { node.payload.uiObject.setErrorMessage('Super Action node needs a Parent Node.') diff --git a/CanvasApp/DesignSpace/Workspace/Workspace.js b/CanvasApp/DesignSpace/Workspace/Workspace.js index 547feb629..e6ffea0bd 100644 --- a/CanvasApp/DesignSpace/Workspace/Workspace.js +++ b/CanvasApp/DesignSpace/Workspace/Workspace.js @@ -368,7 +368,7 @@ function newWorkspace () { break case 'Run Super Action': { - functionLibrarySuperScripts.runSuperScript(payload.node, functionLibraryNodeCloning, functionLibraryUiObjectsFromNodes) + functionLibrarySuperScripts.runSuperScript(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryNodeCloning, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter) } break case 'Remove Parent': diff --git a/CanvasApp/FloatingSpace/UiObjectConstructor.js b/CanvasApp/FloatingSpace/UiObjectConstructor.js index fa20f3cb6..9d6f5bb78 100644 --- a/CanvasApp/FloatingSpace/UiObjectConstructor.js +++ b/CanvasApp/FloatingSpace/UiObjectConstructor.js @@ -495,6 +495,7 @@ function newUiObjectConstructor () { } function destroyUiObject (payload) { + if (payload === undefined) { return } floatingLayer.removeFloatingObject(payload.floatingObject.handle) payload.floatingObject.finalize()