From 984221977bca7570b108b4761210c2fae5dde221 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Thu, 6 Jun 2019 12:51:47 +0200 Subject: [PATCH] Attach Detach new parts --- FloatingSpace/StrategyPart.js | 17 ++++++++- FloatingSpace/StrategyPartTitle.js | 9 +++++ .../FunctionLibraries/AttachDetach.js | 36 +++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/FloatingSpace/StrategyPart.js b/FloatingSpace/StrategyPart.js index 3aeb8267d..3b798a864 100644 --- a/FloatingSpace/StrategyPart.js +++ b/FloatingSpace/StrategyPart.js @@ -182,6 +182,14 @@ function newStrategyPart () { let compatibleType let compatibleSubType switch (thisObject.payload.node.type) { + case 'Parameters': + compatibleType = 'Trading System' + compatibleSubType = undefined + break + case 'Base Assets': + compatibleType = 'Parameters' + compatibleSubType = undefined + break case 'Strategy': compatibleType = 'Trading System' compatibleSubType = undefined @@ -202,6 +210,10 @@ function newStrategyPart () { compatibleType = 'Strategy' compatibleSubType = undefined break + case 'Position Size': + compatibleType = 'Trigger Stage' + compatibleSubType = undefined + break case 'Take Position Event': compatibleType = 'Trigger Stage' compatibleSubType = undefined @@ -231,7 +243,7 @@ function newStrategyPart () { compatibleSubType = undefined break case 'Formula': - compatibleType = 'Phase' + compatibleType = 'Base Asset' + '.' + 'Position Size' + '.' + 'Phase' compatibleSubType = undefined break case 'Next Phase Event': @@ -264,10 +276,13 @@ function newStrategyPart () { let nearbyNode = floatingObject.payload.node if (compatibleType.indexOf(nearbyNode.type) >= 0) { /* Discard objects with busy coonection ports */ + if (thisObject.payload.node.type === 'Parameters' && nearbyNode.parameters !== undefined) { continue } + if (thisObject.payload.node.type === 'Base Asset' && nearbyNode.baseAsset !== undefined) { continue } if (thisObject.payload.node.type === 'Trigger Stage' && nearbyNode.triggerStage !== undefined) { continue } if (thisObject.payload.node.type === 'Open Stage' && nearbyNode.openStage !== undefined) { continue } if (thisObject.payload.node.type === 'Manage Stage' && nearbyNode.manageStage !== undefined) { continue } if (thisObject.payload.node.type === 'Close Stage' && nearbyNode.closeStage !== undefined) { continue } + if (thisObject.payload.node.type === 'Position Size' && nearbyNode.positionSize !== undefined) { continue } if (thisObject.payload.node.type === 'Take Position Event' && nearbyNode.takePosition !== undefined) { continue } if (thisObject.payload.node.type === 'Trigger Off Event' && nearbyNode.triggerOff !== undefined) { continue } if (thisObject.payload.node.type === 'Trigger On Event' && nearbyNode.triggerOn !== undefined) { continue } diff --git a/FloatingSpace/StrategyPartTitle.js b/FloatingSpace/StrategyPartTitle.js index 496eb5aef..e1fbe90be 100644 --- a/FloatingSpace/StrategyPartTitle.js +++ b/FloatingSpace/StrategyPartTitle.js @@ -52,6 +52,12 @@ function newStrategyPartTitle () { thisObject.allwaysVisible = true break } + case 'Parameters': { + break + } + case 'Base Asset': { + break + } case 'Strategy': { thisObject.allwaysVisible = true break @@ -68,6 +74,9 @@ function newStrategyPartTitle () { case 'Close Stage': { break } + case 'Position Size': { + break + } case 'Trigger On Event': { break } diff --git a/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js b/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js index 750290153..4272a110e 100644 --- a/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js +++ b/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js @@ -11,6 +11,16 @@ function newAttachDetach () { case 'Trading System': { return } + case 'Parameters': { + node.payload.parentNode.parameters = undefined + completeDetachment(node, rootNodes) + return + } + case 'Base Asset': { + node.payload.parentNode.baseAsset = undefined + completeDetachment(node, rootNodes) + return + } case 'Strategy': { let payload = node.payload for (let i = 0; i < payload.parentNode.strategies.length; i++) { @@ -42,6 +52,11 @@ function newAttachDetach () { completeDetachment(node, rootNodes) return } + case 'Position Size': { + node.payload.parentNode.positionSize = undefined + completeDetachment(node, rootNodes) + return + } case 'Trigger On Event': { node.payload.parentNode.triggerOn = undefined completeDetachment(node, rootNodes) @@ -134,6 +149,20 @@ function newAttachDetach () { function attachNode (node, attachToNode, rootNodes) { switch (node.type) { + case 'Parameters': { + node.payload.parentNode = attachToNode + node.payload.chainParent = attachToNode + node.payload.parentNode.parameters = node + completeAttachment(node, rootNodes) + } + break + case 'Base Asset': { + node.payload.parentNode = attachToNode + node.payload.chainParent = attachToNode + node.payload.parentNode.baseAsset = node + completeAttachment(node, rootNodes) + } + break case 'Strategy': { node.payload.parentNode = attachToNode node.payload.chainParent = attachToNode @@ -169,6 +198,13 @@ function newAttachDetach () { completeAttachment(node, rootNodes) } break + case 'Position Size': { + node.payload.parentNode = attachToNode + node.payload.chainParent = attachToNode + node.payload.parentNode.positionSize = node + completeAttachment(node, rootNodes) + } + break case 'Initial Definition': { node.payload.parentNode = attachToNode node.payload.chainParent = attachToNode