From 3e6a4470a5235528ab7f93064d20997f8d99cedb Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 28 Oct 2019 22:00:33 +0100 Subject: [PATCH] Implementation of reference parent complete --- .../FunctionLibraries/ProtocolNode.js | 16 ++-- .../FunctionLibraries/UiObjectsFromNodes.js | 88 ++++++++++++++++++- FloatingSpace/UiObject.js | 1 - 3 files changed, 96 insertions(+), 9 deletions(-) diff --git a/DesignerSpace/Workspace/FunctionLibraries/ProtocolNode.js b/DesignerSpace/Workspace/FunctionLibraries/ProtocolNode.js index 17447e5bd..92b869edb 100644 --- a/DesignerSpace/Workspace/FunctionLibraries/ProtocolNode.js +++ b/DesignerSpace/Workspace/FunctionLibraries/ProtocolNode.js @@ -1017,15 +1017,17 @@ function newProtocolNode () { let referenceChildren = [] for (let i = 0; i < node.referenceChildren.length; i++) { let child = node.referenceChildren[i] - let referencedChild = { - type: child.type, - subType: child.subType, - name: child.name, - id: child.id + if (child !== undefined) { + let referencedChild = { + type: child.type, + subType: child.subType, + name: child.name, + id: child.id + } + referenceChildren.push(referencedChild) } - referenceChildren.push(referencedChild) } - object.referenceChildren = referenceChildren + object.savedPayload.referenceChildren = referenceChildren } return object } diff --git a/DesignerSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js b/DesignerSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js index c969a8728..f3613d49d 100644 --- a/DesignerSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js +++ b/DesignerSpace/Workspace/FunctionLibraries/UiObjectsFromNodes.js @@ -58,8 +58,24 @@ function newUiObjectsFromNodes () { createUiObjectFromNode(rootNode, undefined, undefined) } } - mapOfReferenceParents = undefined + /* We reconstruct here the reference relationships. */ + for (const [key, childNode] of mapOfReferenceChildren) { + childNode.payload.referenceParent = mapOfReferenceParents.get(childNode.savedPayload.referenceParent.id) + childNode.savedPayload = undefined + } + for (const [key, parentNode] of mapOfReferenceParents) { + for (let i = 0; i < parentNode.savedPayload.referenceChildren.length; i++) { + let savedChild = parentNode.savedPayload.referenceChildren[i] + if (savedChild.id !== undefined) { + let referenceChild = mapOfReferenceChildren.get(savedChild.id) + parentNode.referenceChildren.push(referenceChild) + } + } + parentNode.savedPayload = undefined + } mapOfReferenceChildren = undefined + mapOfReferenceParents = undefined + return } @@ -398,6 +414,15 @@ function newUiObjectsFromNodes () { return } case 'Definition': { + let referenceChildren + if (mapOfReferenceParents !== undefined) { + if (node.savedPayload.referenceChildren !== undefined) { + if (node.savedPayload.referenceChildren.length > 0) { + mapOfReferenceParents.set(node.id, node) + referenceChildren = node.savedPayload.referenceChildren + } + } + } createUiObject('Definition', node.name, node, parentNode, chainParent, 'Definition') if (node.tradingSystem !== undefined) { createUiObjectFromNode(node.tradingSystem, node, node) @@ -408,6 +433,11 @@ function newUiObjectsFromNodes () { if (node.referenceChildren === undefined) { node.referenceChildren = [] } + if (referenceChildren !== undefined) { + node.savedPayload = { + referenceChildren: referenceChildren + } + } return } case 'Network': { @@ -528,6 +558,15 @@ function newUiObjectsFromNodes () { return } case 'Backtesting Session': { + let referenceParent + if (mapOfReferenceChildren !== undefined) { + if (node.savedPayload.referenceParent !== undefined) { + if (node.savedPayload.referenceParent.id !== undefined) { + mapOfReferenceChildren.set(node.id, node) + referenceParent = node.savedPayload.referenceParent + } + } + } createUiObject('Backtesting Session', node.name, node, parentNode, chainParent, 'Backtesting Session') if (node.parameters !== undefined) { createUiObjectFromNode(node.parameters, node, node) @@ -538,9 +577,23 @@ function newUiObjectsFromNodes () { if (node.socialBots !== undefined) { createUiObjectFromNode(node.socialBots, node, node) } + if (referenceParent !== undefined) { + node.savedPayload = { + referenceParent: referenceParent + } + } return } case 'Live Trading Session': { + let referenceParent + if (mapOfReferenceChildren !== undefined) { + if (node.savedPayload.referenceParent !== undefined) { + if (node.savedPayload.referenceParent.id !== undefined) { + mapOfReferenceChildren.set(node.id, node) + referenceParent = node.savedPayload.referenceParent + } + } + } createUiObject('Live Trading Session', node.name, node, parentNode, chainParent, 'Live Trading Session') if (node.parameters !== undefined) { createUiObjectFromNode(node.parameters, node, node) @@ -551,9 +604,23 @@ function newUiObjectsFromNodes () { if (node.socialBots !== undefined) { createUiObjectFromNode(node.socialBots, node, node) } + if (referenceParent !== undefined) { + node.savedPayload = { + referenceParent: referenceParent + } + } return } case 'Fordward Testing Session': { + let referenceParent + if (mapOfReferenceChildren !== undefined) { + if (node.savedPayload.referenceParent !== undefined) { + if (node.savedPayload.referenceParent.id !== undefined) { + mapOfReferenceChildren.set(node.id, node) + referenceParent = node.savedPayload.referenceParent + } + } + } createUiObject('Fordward Testing Session', node.name, node, parentNode, chainParent, 'Fordward Testing Session') if (node.parameters !== undefined) { createUiObjectFromNode(node.parameters, node, node) @@ -564,9 +631,23 @@ function newUiObjectsFromNodes () { if (node.socialBots !== undefined) { createUiObjectFromNode(node.socialBots, node, node) } + if (referenceParent !== undefined) { + node.savedPayload = { + referenceParent: referenceParent + } + } return } case 'Paper Trading Session': { + let referenceParent + if (mapOfReferenceChildren !== undefined) { + if (node.savedPayload.referenceParent !== undefined) { + if (node.savedPayload.referenceParent.id !== undefined) { + mapOfReferenceChildren.set(node.id, node) + referenceParent = node.savedPayload.referenceParent + } + } + } createUiObject('Paper Trading Session', node.name, node, parentNode, chainParent, 'Paper Trading Session') if (node.parameters !== undefined) { createUiObjectFromNode(node.parameters, node, node) @@ -577,6 +658,11 @@ function newUiObjectsFromNodes () { if (node.socialBots !== undefined) { createUiObjectFromNode(node.socialBots, node, node) } + if (referenceParent !== undefined) { + node.savedPayload = { + referenceParent: referenceParent + } + } return } } diff --git a/FloatingSpace/UiObject.js b/FloatingSpace/UiObject.js index 4a234597e..527329946 100644 --- a/FloatingSpace/UiObject.js +++ b/FloatingSpace/UiObject.js @@ -676,7 +676,6 @@ function newUiObject () { if (thisObject.isOnFocus !== true) { return } if (thisObject.payload.referenceParent === undefined) { return } - if (thisObject.payload.parentNode === undefined) { return } let THRESHOLD = 1.15