diff --git a/FloatingSpace/StrategyPart.js b/FloatingSpace/StrategyPart.js index c0a8f2f6b..b03ace8a0 100644 --- a/FloatingSpace/StrategyPart.js +++ b/FloatingSpace/StrategyPart.js @@ -223,7 +223,7 @@ function newStrategyPart () { compatibleSubType = undefined break case 'Exchange Account Key': - compatibleType = '->' + 'Exchange Account' + '->' + compatibleType = '->' + 'Exchange Account' + '->' + 'Parameters' + '->' compatibleSubType = undefined break case 'Parameters': diff --git a/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js b/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js index 4ae7812ea..9c50a3254 100644 --- a/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js +++ b/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js @@ -56,12 +56,17 @@ function newAttachDetach () { } case 'Exchange Account Key': { let payload = node.payload - for (let i = 0; i < payload.parentNode.keys.length; i++) { - let key = payload.parentNode.keys[i] - if (key.id === node.id) { - payload.parentNode.keys.splice(i, 1) + if (payload.parentNode.keys !== undefined) { + for (let i = 0; i < payload.parentNode.keys.length; i++) { + let key = payload.parentNode.keys[i] + if (key.id === node.id) { + payload.parentNode.keys.splice(i, 1) + } } } + if (payload.parentNode.key !== undefined) { + payload.parentNode.key = undefined + } completeDetachment(node, rootNodes) return } @@ -450,7 +455,11 @@ function newAttachDetach () { case 'Exchange Account Key': { node.payload.parentNode = attachToNode node.payload.chainParent = attachToNode - node.payload.parentNode.keys.push(node) + if (node.payload.parentNode.keys !== undefined) { + node.payload.parentNode.keys.push(node) + } else { + node.payload.parentNode.key = node + } completeAttachment(node, rootNodes) } break diff --git a/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js b/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js index 49c404ae2..f126e5105 100644 --- a/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js +++ b/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js @@ -525,6 +525,12 @@ function newNodeChildren () { response.childIndex = response.childrenCount } } + if (parentNode.key !== undefined) { + response.childrenCount++ + if (parentNode.key.id === childNode.id) { + response.childIndex = response.childrenCount + } + } return response } diff --git a/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js b/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js index 1b62f728b..12d21ef71 100644 --- a/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js +++ b/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js @@ -586,12 +586,17 @@ function newNodeDeleter () { function deleteExchangeAccountKey (node, rootNodes) { let payload = node.payload if (payload.parentNode !== undefined) { - for (let j = 0; j < payload.parentNode.keys.length; j++) { - let key = payload.parentNode.keys[j] - if (key.id === node.id) { - payload.parentNode.keys.splice(j, 1) + if (payload.parentNode.keys !== undefined) { + for (let j = 0; j < payload.parentNode.keys.length; j++) { + let key = payload.parentNode.keys[j] + if (key.id === node.id) { + payload.parentNode.keys.splice(j, 1) + } } } + if (payload.parentNode.key !== undefined) { + payload.parentNode.key = undefined + } } else { completeDeletion(node, rootNodes) } @@ -643,6 +648,9 @@ function newNodeDeleter () { if (node.feeStructure !== undefined) { deleteFeeStructure(node.feeStructure, rootNodes) } + if (node.key !== undefined) { + deleteExchangeAccountKey(node.key, rootNodes) + } destroyPart(node) cleanNode(node) } diff --git a/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js b/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js index e4a946d14..980432664 100644 --- a/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js +++ b/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js @@ -294,6 +294,9 @@ function newPartsFromNodes () { if (node.feeStructure !== undefined) { createPartFromNode(node.feeStructure, node, node) } + if (node.key !== undefined) { + createPartFromNode(node.key, node, node) + } return } case 'Trading System': { diff --git a/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js b/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js index 0e57a98dd..4b52ac24c 100644 --- a/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js +++ b/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js @@ -375,7 +375,8 @@ function newProtocolNode () { timeRange: getProtocolNode(node.timeRange, removePersonalData, parseJSONStrings, includeIds), timePeriod: getProtocolNode(node.timePeriod, removePersonalData, parseJSONStrings, includeIds), slippage: getProtocolNode(node.slippage, removePersonalData, parseJSONStrings, includeIds), - feeStructure: getProtocolNode(node.feeStructure, removePersonalData, parseJSONStrings, includeIds) + feeStructure: getProtocolNode(node.feeStructure, removePersonalData, parseJSONStrings, includeIds), + key: getProtocolNode(node.key, removePersonalData, parseJSONStrings, includeIds) } if (includeIds) { object.id = node.id diff --git a/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js b/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js index b243f3286..754fe3c1d 100644 --- a/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js +++ b/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js @@ -353,6 +353,7 @@ function newStringifyNode () { timePeriod: prepareForStringify(node.timePeriod, removePersonalData), slippage: prepareForStringify(node.slippage, removePersonalData), feeStructure: prepareForStringify(node.feeStructure, removePersonalData), + key: prepareForStringify(node.key, removePersonalData), savedPayload: getSavedPayload(node) } return object