From e446d5f1dab98df9544a851c8d7f18dddbc565a8 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 16 Sep 2020 18:29:51 +0200 Subject: [PATCH] Uninstall Markets --- CanvasApp/ChartingSpace/TimeMachine.js | 10 +-- .../CryptoEcosystemFunctions.js | 69 ++++++++++++++++++- 2 files changed, 70 insertions(+), 9 deletions(-) diff --git a/CanvasApp/ChartingSpace/TimeMachine.js b/CanvasApp/ChartingSpace/TimeMachine.js index bcd25a4b2..5ca3031da 100644 --- a/CanvasApp/ChartingSpace/TimeMachine.js +++ b/CanvasApp/ChartingSpace/TimeMachine.js @@ -160,17 +160,13 @@ function newTimeMachine() { } function setInitialPosition() { - let centerOfScreenX = browserCanvas.width / 2 - browserCanvas.width / TIME_MACHINE_WIDTH / 2 - let centerOfScreenY = browserCanvas.height / 2 - (browserCanvas.height - TOP_SPACE_HEIGHT - COCKPIT_SPACE_HEIGHT) / TIME_MACHINE_HEIGHT / 2 - + if (thisObject.container.frame.position.x === 0 && thisObject.container.frame.position.y === 0) { let timeMachineIndex = findChildIndexAtParentNode(thisObject.payload.node) let dashboardIndex = findChildIndexAtParentNode(thisObject.payload.parentNode) - let timeMachinesCount = thisObject.payload.parentNode.timeMachines.length - let dashboardsCount = thisObject.payload.parentNode.payload.parentNode.dashboards.length - thisObject.container.frame.position.x = centerOfScreenX + thisObject.container.frame.width * timeMachineIndex * 2 - timeMachinesCount * thisObject.container.frame.width - thisObject.container.frame.position.y = centerOfScreenY + thisObject.container.frame.height * dashboardIndex * 2 - dashboardsCount * thisObject.container.frame.height + thisObject.container.frame.position.x = thisObject.container.frame.width * timeMachineIndex * 2 + thisObject.container.frame.position.y = thisObject.container.frame.height * dashboardIndex * 2 } } diff --git a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/CryptoEcosystemFunctions.js b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/CryptoEcosystemFunctions.js index b010b2525..3641b3df9 100644 --- a/CanvasApp/DesignSpace/Workspace/FunctionLibraries/CryptoEcosystemFunctions.js +++ b/CanvasApp/DesignSpace/Workspace/FunctionLibraries/CryptoEcosystemFunctions.js @@ -371,8 +371,8 @@ function newCryptoEcosystemFunctions() { continue } let marketTradingTasks = findNodeInNodeMesh(session, 'Market Trading Tasks', undefined, true, false, true, false) - if (marketTradingTasks === undefined) {continue} - if (marketTradingTasks.payload === undefined) {continue} + if (marketTradingTasks === undefined) { continue } + if (marketTradingTasks.payload === undefined) { continue } if (marketTradingTasks.payload.referenceParent === undefined) { continue } if (marketTradingTasks.payload.referenceParent.id === market.id) { functionLibraryNodeDeleter.deleteUIObject(timeMachine, rootNodes) @@ -390,6 +390,71 @@ function newCryptoEcosystemFunctions() { } function uninstallMarket(node, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter, functionLibraryChartingSpaceFunctions, functionLibraryDataStorageFunctions) { + let market = node + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Charting Space') { + uninstallInChartingSpace(rootNode) + } + } + function uninstallInChartingSpace(chartingSpace) { + + /* Delete all time machines which are referencing sessions inside the market being unistalled. */ + let timeMachines = nodeBranchToArray(chartingSpace, 'Time Machine') + for (let i = 0; i < timeMachines.length; i++) { + let timeMachine = timeMachines[i] + let session = timeMachine.payload.referenceParent + if (session === undefined) { continue } + let marketTradingTasks = findNodeInNodeMesh(session, 'Market Trading Tasks', undefined, true, false, true, false) + if (marketTradingTasks === undefined) { continue } + if (marketTradingTasks.payload === undefined) { continue } + if (marketTradingTasks.payload.referenceParent === undefined) { continue } + if (marketTradingTasks.payload.referenceParent.id === market.id) { + functionLibraryNodeDeleter.deleteUIObject(timeMachine, rootNodes) + } + } + + /* Delete all Dashboards that does not have time machines inside. */ + let dashboardArray = nodeBranchToArray(chartingSpace, 'Dashboard') + for (let i = 0; i < dashboardArray.length; i++) { + let dashboard = dashboardArray[i] + if (dashboard.timeMachines.length === 0) { + functionLibraryNodeDeleter.deleteUIObject(dashboard, rootNodes) + } + } + + /* Scan Networks for the market being unistalled to delete it. */ + for (let i = 0; i < rootNodes.length; i++) { + let rootNode = rootNodes[i] + if (rootNode.type === 'Network') { + uninstallInNetwork(rootNode) + } + } + } + + function uninstallInNetwork(network) { + + let marketDataTasksArray = nodeBranchToArray(network, 'Market Data Tasks') + let marketTradingTasksArray = nodeBranchToArray(network, 'Market Trading Tasks') + let marketDataProductsArray = nodeBranchToArray(network, 'Market Data Products') + let marketTradingProductsArray = nodeBranchToArray(network, 'Market Trading Products') + + uninstalMarketArray(marketDataTasksArray) + uninstalMarketArray(marketTradingTasksArray) + uninstalMarketArray(marketDataProductsArray) + uninstalMarketArray(marketTradingProductsArray) + + function uninstalMarketArray(marketArray) { + for (let i = 0; i < marketArray.length; i++) { + let marketReference = marketArray[i] + if (marketReference.payload === undefined) { continue } + if (marketReference.payload.referenceParent === undefined) { continue } + if (marketReference.payload.referenceParent.id === market.id) { + functionLibraryNodeDeleter.deleteUIObject(marketReference, rootNodes) + } + } + } + } } }