From 5018235d98a27ee55d83e80904d965fa5ca5ab29 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Sun, 28 Jul 2019 18:01:55 +0200 Subject: [PATCH] Dealing with Personal Data, NOT SHARING it implemented and tested. --- FloatingSpace/StrategyPartConstructor.js | 210 ++++++++---------- .../FunctionLibraries/ProtocolNode.js | 80 +++---- .../FunctionLibraries/StringifyNode.js | 78 ++++--- StrategySpace/Workspace/Workspace.js | 38 +++- 4 files changed, 202 insertions(+), 204 deletions(-) diff --git a/FloatingSpace/StrategyPartConstructor.js b/FloatingSpace/StrategyPartConstructor.js index 2646cdbe3..9115b62ae 100644 --- a/FloatingSpace/StrategyPartConstructor.js +++ b/FloatingSpace/StrategyPartConstructor.js @@ -97,7 +97,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -135 + angle: -130 } ) menuItemsInitialValues.push( @@ -113,7 +113,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -165 + angle: -155 } ) menuItemsInitialValues.push( @@ -129,7 +129,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 165 + angle: 180 } ) menuItemsInitialValues.push( @@ -145,7 +145,21 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 135 + angle: 155 + } + ) + menuItemsInitialValues.push( + { + action: 'Backup', + actionFunction: floatingObject.payload.onMenuItemClick, + label: undefined, + visible: false, + iconPathOn: 'upload', + iconPathOff: 'upload', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: 130 } ) } @@ -172,9 +186,21 @@ function newStrategyPartConstructor () { angle: -135 }, { - action: 'Download Workspace', + action: 'Backup Workspace', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: undefined, + visible: false, + iconPathOn: 'upload', + iconPathOff: 'upload', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: 130 + }, + { + action: 'Share Workspace', + actionFunction: payload.onMenuItemClick, + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -268,9 +294,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -297,7 +323,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -30 + angle: -20 } ) menuItemsInitialValues.push( @@ -312,23 +338,9 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: +0 + angle: +20 } ) - menuItemsInitialValues.push( - { - action: 'Download', - actionFunction: payload.onMenuItemClick, - label: 'Download', - visible: false, - iconPathOn: 'upload', - iconPathOff: 'upload', - rawRadius: 8, - targetRadius: 0, - currentRadius: 0, - angle: 30 - } - ) break } case 'Exchange Account': { @@ -346,7 +358,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -60 + angle: -40 } ) menuItemsInitialValues.push( @@ -361,7 +373,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -20 + angle: 0 } ) menuItemsInitialValues.push( @@ -376,23 +388,9 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 20 + angle: 40 } ) - menuItemsInitialValues.push( - { - action: 'Download', - actionFunction: payload.onMenuItemClick, - label: 'Download', - visible: false, - iconPathOn: 'upload', - iconPathOff: 'upload', - rawRadius: 8, - targetRadius: 0, - currentRadius: 0, - angle: 60 - } - ) break } case 'Exchange Account Asset': { @@ -410,23 +408,9 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -20 + angle: 0 } ) - menuItemsInitialValues.push( - { - action: 'Download', - actionFunction: payload.onMenuItemClick, - label: 'Download', - visible: false, - iconPathOn: 'upload', - iconPathOff: 'upload', - rawRadius: 8, - targetRadius: 0, - currentRadius: 0, - angle: 20 - } - ) break } case 'Exchange Account Key': { @@ -447,7 +431,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -40, + angle: -20, dontShowAtFullscreen: true } ) @@ -464,23 +448,9 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 0 + angle: 20 } ) - menuItemsInitialValues.push( - { - action: 'Download', - actionFunction: payload.onMenuItemClick, - label: 'Download', - visible: false, - iconPathOn: 'upload', - iconPathOff: 'upload', - rawRadius: 8, - targetRadius: 0, - currentRadius: 0, - angle: 40 - } - ) break } case 'Trading System': { @@ -533,9 +503,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -581,9 +551,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -630,9 +600,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -678,9 +648,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -763,9 +733,9 @@ function newStrategyPartConstructor () { angle: 0 }, { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -824,9 +794,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -872,9 +842,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -920,9 +890,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -969,9 +939,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1018,9 +988,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1067,9 +1037,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1116,9 +1086,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1165,9 +1135,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1213,9 +1183,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1247,9 +1217,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1281,9 +1251,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1330,9 +1300,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1379,9 +1349,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1443,9 +1413,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1497,9 +1467,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1546,9 +1516,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1595,9 +1565,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1644,9 +1614,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', @@ -1698,9 +1668,9 @@ function newStrategyPartConstructor () { ) menuItemsInitialValues.push( { - action: 'Download', + action: 'Share', actionFunction: payload.onMenuItemClick, - label: 'Download', + label: 'Share', visible: false, iconPathOn: 'upload', iconPathOff: 'upload', diff --git a/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js b/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js index 45fec8e52..c3eb4d943 100644 --- a/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js +++ b/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js @@ -4,7 +4,7 @@ function newProtocolNode () { } return thisObject - function getProtocolNode (node) { + function getProtocolNode (node, removePersonalData) { if (node === undefined) { return } switch (node.type) { case 'Code': @@ -23,7 +23,7 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - code: getProtocolNode(node.code) + code: getProtocolNode(node.code, removePersonalData) } return condition } @@ -36,7 +36,7 @@ function newProtocolNode () { } for (let m = 0; m < node.conditions.length; m++) { - let condition = getProtocolNode(node.conditions[m]) + let condition = getProtocolNode(node.conditions[m], removePersonalData) situation.conditions.push(condition) } return situation @@ -60,7 +60,7 @@ function newProtocolNode () { situations: [] } for (let m = 0; m < node.situations.length; m++) { - let situation = getProtocolNode(node.situations[m]) + let situation = getProtocolNode(node.situations[m], removePersonalData) event.situations.push(situation) } return event @@ -70,8 +70,8 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - formula: getProtocolNode(node.formula), - nextPhaseEvent: getProtocolNode(node.nextPhaseEvent) + formula: getProtocolNode(node.formula, removePersonalData), + nextPhaseEvent: getProtocolNode(node.nextPhaseEvent, removePersonalData) } return phase } @@ -84,7 +84,7 @@ function newProtocolNode () { } for (let m = 0; m < node.phases.length; m++) { - let phase = getProtocolNode(node.phases[m]) + let phase = getProtocolNode(node.phases[m], removePersonalData) stop.phases.push(phase) } return stop @@ -98,7 +98,7 @@ function newProtocolNode () { } for (let m = 0; m < node.phases.length; m++) { - let phase = getProtocolNode(node.phases[m]) + let phase = getProtocolNode(node.phases[m], removePersonalData) takeProfit.phases.push(phase) } return takeProfit @@ -112,7 +112,7 @@ function newProtocolNode () { } for (let m = 0; m < node.situations.length; m++) { - let situation = getProtocolNode(node.situations[m]) + let situation = getProtocolNode(node.situations[m], removePersonalData) event.situations.push(situation) } return event @@ -126,7 +126,7 @@ function newProtocolNode () { } for (let m = 0; m < node.situations.length; m++) { - let situation = getProtocolNode(node.situations[m]) + let situation = getProtocolNode(node.situations[m], removePersonalData) event.situations.push(situation) } return event @@ -140,7 +140,7 @@ function newProtocolNode () { } for (let m = 0; m < node.situations.length; m++) { - let situation = getProtocolNode(node.situations[m]) + let situation = getProtocolNode(node.situations[m], removePersonalData) event.situations.push(situation) } return event @@ -150,10 +150,10 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - stopLoss: getProtocolNode(node.stopLoss), - takeProfit: getProtocolNode(node.takeProfit), - positionSize: getProtocolNode(node.positionSize), - positionRate: getProtocolNode(node.positionRate) + stopLoss: getProtocolNode(node.stopLoss, removePersonalData), + takeProfit: getProtocolNode(node.takeProfit, removePersonalData), + positionSize: getProtocolNode(node.positionSize, removePersonalData), + positionRate: getProtocolNode(node.positionRate, removePersonalData) } return object } @@ -178,7 +178,7 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - formula: getProtocolNode(node.formula) + formula: getProtocolNode(node.formula, removePersonalData) } return object } @@ -187,7 +187,7 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - formula: getProtocolNode(node.formula) + formula: getProtocolNode(node.formula, removePersonalData) } return object } @@ -196,9 +196,9 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - triggerOn: getProtocolNode(node.triggerOn), - triggerOff: getProtocolNode(node.triggerOff), - takePosition: getProtocolNode(node.takePosition) + triggerOn: getProtocolNode(node.triggerOn, removePersonalData), + triggerOff: getProtocolNode(node.triggerOff, removePersonalData), + takePosition: getProtocolNode(node.takePosition, removePersonalData) } return stage } @@ -207,8 +207,8 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - initialDefinition: getProtocolNode(node.initialDefinition), - openExecution: getProtocolNode(node.openExecution) + initialDefinition: getProtocolNode(node.initialDefinition, removePersonalData), + openExecution: getProtocolNode(node.openExecution, removePersonalData) } return stage } @@ -217,8 +217,8 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - stopLoss: getProtocolNode(node.stopLoss), - takeProfit: getProtocolNode(node.takeProfit) + stopLoss: getProtocolNode(node.stopLoss, removePersonalData), + takeProfit: getProtocolNode(node.takeProfit, removePersonalData) } return stage } @@ -227,7 +227,7 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - closeExecution: getProtocolNode(node.closeExecution) + closeExecution: getProtocolNode(node.closeExecution, removePersonalData) } return stage } @@ -236,10 +236,10 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - triggerStage: getProtocolNode(node.triggerStage), - openStage: getProtocolNode(node.openStage), - manageStage: getProtocolNode(node.manageStage), - closeStage: getProtocolNode(node.closeStage) + triggerStage: getProtocolNode(node.triggerStage, removePersonalData), + openStage: getProtocolNode(node.openStage, removePersonalData), + manageStage: getProtocolNode(node.manageStage, removePersonalData), + closeStage: getProtocolNode(node.closeStage, removePersonalData) } return strategy } @@ -248,7 +248,7 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - formula: getProtocolNode(node.formula) + formula: getProtocolNode(node.formula, removePersonalData) } return object } @@ -257,7 +257,7 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - baseAsset: getProtocolNode(node.baseAsset) + baseAsset: getProtocolNode(node.baseAsset, removePersonalData) } return object } @@ -267,16 +267,17 @@ function newProtocolNode () { subType: node.subType, name: node.name, strategies: [], - parameters: getProtocolNode(node.parameters) + parameters: getProtocolNode(node.parameters, removePersonalData) } for (let m = 0; m < node.strategies.length; m++) { - let strategy = getProtocolNode(node.strategies[m]) + let strategy = getProtocolNode(node.strategies[m], removePersonalData) tradingSystem.strategies.push(strategy) } return tradingSystem } case 'Personal Data': { + if (removePersonalData === true) { return } let personalData = { type: node.type, subType: node.subType, @@ -285,12 +286,13 @@ function newProtocolNode () { } for (let m = 0; m < node.exchangeAccounts.length; m++) { - let exchangeAccount = getProtocolNode(node.exchangeAccounts[m]) + let exchangeAccount = getProtocolNode(node.exchangeAccounts[m], removePersonalData) personalData.exchangeAccounts.push(exchangeAccount) } return personalData } case 'Exchange Account': { + if (removePersonalData === true) { return } let exchangeAccount = { type: node.type, subType: node.subType, @@ -300,16 +302,17 @@ function newProtocolNode () { } for (let m = 0; m < node.assets.length; m++) { - let asset = getProtocolNode(node.assets[m]) + let asset = getProtocolNode(node.assets[m], removePersonalData) exchangeAccount.assets.push(asset) } for (let m = 0; m < node.keys.length; m++) { - let key = getProtocolNode(node.keys[m]) + let key = getProtocolNode(node.keys[m], removePersonalData) exchangeAccount.keys.push(key) } return exchangeAccount } case 'Exchange Account Asset': { + if (removePersonalData === true) { return } let asset = { type: node.type, subType: node.subType, @@ -318,6 +321,7 @@ function newProtocolNode () { return asset } case 'Exchange Account Key': { + if (removePersonalData === true) { return } let key = { type: node.type, subType: node.subType, @@ -331,8 +335,8 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - tradingSystem: getProtocolNode(node.tradingSystem), - personalData: getProtocolNode(node.personalData) + tradingSystem: getProtocolNode(node.tradingSystem, removePersonalData), + personalData: getProtocolNode(node.personalData, removePersonalData) } return object } diff --git a/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js b/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js index 964775d6e..4191cacd0 100644 --- a/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js +++ b/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js @@ -4,7 +4,7 @@ function newStringifyNode () { } return thisObject - function prepareForStringify (node) { + function prepareForStringify (node, removePersonalData) { if (node === undefined) { return } switch (node.type) { case 'Code': @@ -26,7 +26,7 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - code: prepareForStringify(node.code), + code: prepareForStringify(node.code, removePersonalData), savedPayload: getSavedPayload(node) } return condition @@ -42,7 +42,7 @@ function newStringifyNode () { } for (let m = 0; m < node.conditions.length; m++) { - let condition = prepareForStringify(node.conditions[m]) + let condition = prepareForStringify(node.conditions[m], removePersonalData) situation.conditions.push(condition) } return situation @@ -70,7 +70,7 @@ function newStringifyNode () { savedPayload: getSavedPayload(node) } for (let m = 0; m < node.situations.length; m++) { - let situation = prepareForStringify(node.situations[m]) + let situation = prepareForStringify(node.situations[m], removePersonalData) event.situations.push(situation) } return event @@ -81,8 +81,8 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - formula: prepareForStringify(node.formula), - nextPhaseEvent: prepareForStringify(node.nextPhaseEvent), + formula: prepareForStringify(node.formula, removePersonalData), + nextPhaseEvent: prepareForStringify(node.nextPhaseEvent, removePersonalData), savedPayload: getSavedPayload(node) } return phase @@ -99,7 +99,7 @@ function newStringifyNode () { } for (let m = 0; m < node.phases.length; m++) { - let phase = prepareForStringify(node.phases[m]) + let phase = prepareForStringify(node.phases[m], removePersonalData) stop.phases.push(phase) } return stop @@ -116,7 +116,7 @@ function newStringifyNode () { } for (let m = 0; m < node.phases.length; m++) { - let phase = prepareForStringify(node.phases[m]) + let phase = prepareForStringify(node.phases[m], removePersonalData) takeProfit.phases.push(phase) } return takeProfit @@ -132,7 +132,7 @@ function newStringifyNode () { } for (let m = 0; m < node.situations.length; m++) { - let situation = prepareForStringify(node.situations[m]) + let situation = prepareForStringify(node.situations[m], removePersonalData) event.situations.push(situation) } return event @@ -148,7 +148,7 @@ function newStringifyNode () { } for (let m = 0; m < node.situations.length; m++) { - let situation = prepareForStringify(node.situations[m]) + let situation = prepareForStringify(node.situations[m], removePersonalData) event.situations.push(situation) } return event @@ -164,7 +164,7 @@ function newStringifyNode () { } for (let m = 0; m < node.situations.length; m++) { - let situation = prepareForStringify(node.situations[m]) + let situation = prepareForStringify(node.situations[m], removePersonalData) event.situations.push(situation) } return event @@ -175,10 +175,10 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - stopLoss: prepareForStringify(node.stopLoss), - takeProfit: prepareForStringify(node.takeProfit), - positionSize: prepareForStringify(node.positionSize), - positionRate: prepareForStringify(node.positionRate), + stopLoss: prepareForStringify(node.stopLoss, removePersonalData), + takeProfit: prepareForStringify(node.takeProfit, removePersonalData), + positionSize: prepareForStringify(node.positionSize, removePersonalData), + positionRate: prepareForStringify(node.positionRate, removePersonalData), savedPayload: getSavedPayload(node) } return object @@ -209,7 +209,7 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - formula: prepareForStringify(node.formula), + formula: prepareForStringify(node.formula, removePersonalData), savedPayload: getSavedPayload(node) } return object @@ -220,7 +220,7 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - formula: prepareForStringify(node.formula), + formula: prepareForStringify(node.formula, removePersonalData), savedPayload: getSavedPayload(node) } return object @@ -231,9 +231,9 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - triggerOn: prepareForStringify(node.triggerOn), - triggerOff: prepareForStringify(node.triggerOff), - takePosition: prepareForStringify(node.takePosition), + triggerOn: prepareForStringify(node.triggerOn, removePersonalData), + triggerOff: prepareForStringify(node.triggerOff, removePersonalData), + takePosition: prepareForStringify(node.takePosition, removePersonalData), savedPayload: getSavedPayload(node) } return stage @@ -244,8 +244,8 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - initialDefinition: prepareForStringify(node.initialDefinition), - openExecution: prepareForStringify(node.openExecution), + initialDefinition: prepareForStringify(node.initialDefinition, removePersonalData), + openExecution: prepareForStringify(node.openExecution, removePersonalData), savedPayload: getSavedPayload(node) } return stage @@ -256,8 +256,8 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - stopLoss: prepareForStringify(node.stopLoss), - takeProfit: prepareForStringify(node.takeProfit), + stopLoss: prepareForStringify(node.stopLoss, removePersonalData), + takeProfit: prepareForStringify(node.takeProfit, removePersonalData), savedPayload: getSavedPayload(node) } return stage @@ -268,7 +268,7 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - closeExecution: prepareForStringify(node.closeExecution), + closeExecution: prepareForStringify(node.closeExecution, removePersonalData), savedPayload: getSavedPayload(node) } return stage @@ -279,10 +279,10 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - triggerStage: prepareForStringify(node.triggerStage), - openStage: prepareForStringify(node.openStage), - manageStage: prepareForStringify(node.manageStage), - closeStage: prepareForStringify(node.closeStage), + triggerStage: prepareForStringify(node.triggerStage, removePersonalData), + openStage: prepareForStringify(node.openStage, removePersonalData), + manageStage: prepareForStringify(node.manageStage, removePersonalData), + closeStage: prepareForStringify(node.closeStage, removePersonalData), savedPayload: getSavedPayload(node) } return strategy @@ -293,7 +293,7 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - formula: prepareForStringify(node.formula), + formula: prepareForStringify(node.formula, removePersonalData), savedPayload: getSavedPayload(node) } return object @@ -304,7 +304,7 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - baseAsset: prepareForStringify(node.baseAsset), + baseAsset: prepareForStringify(node.baseAsset, removePersonalData), savedPayload: getSavedPayload(node) } return object @@ -316,17 +316,18 @@ function newStringifyNode () { subType: node.subType, name: node.name, strategies: [], - parameters: prepareForStringify(node.parameters), + parameters: prepareForStringify(node.parameters, removePersonalData), savedPayload: getSavedPayload(node) } for (let m = 0; m < node.strategies.length; m++) { - let strategy = prepareForStringify(node.strategies[m]) + let strategy = prepareForStringify(node.strategies[m], removePersonalData) tradingSystem.strategies.push(strategy) } return tradingSystem } case 'Personal Data': { + if (removePersonalData === true) { return } let personalData = { id: node.id, type: node.type, @@ -343,6 +344,7 @@ function newStringifyNode () { return personalData } case 'Exchange Account': { + if (removePersonalData === true) { return } let exchangeAccount = { id: node.id, type: node.type, @@ -354,17 +356,18 @@ function newStringifyNode () { } for (let m = 0; m < node.assets.length; m++) { - let asset = prepareForStringify(node.assets[m]) + let asset = prepareForStringify(node.assets[m], removePersonalData) exchangeAccount.assets.push(asset) } for (let m = 0; m < node.keys.length; m++) { - let key = prepareForStringify(node.keys[m]) + let key = prepareForStringify(node.keys[m], removePersonalData) exchangeAccount.keys.push(key) } return exchangeAccount } case 'Exchange Account Asset': { + if (removePersonalData === true) { return } let asset = { id: node.id, type: node.type, @@ -375,6 +378,7 @@ function newStringifyNode () { return asset } case 'Exchange Account Key': { + if (removePersonalData === true) { return } let key = { id: node.id, type: node.type, @@ -391,8 +395,8 @@ function newStringifyNode () { type: node.type, subType: node.subType, name: node.name, - tradingSystem: prepareForStringify(node.tradingSystem), - personalData: prepareForStringify(node.personalData), + tradingSystem: prepareForStringify(node.tradingSystem, removePersonalData), + personalData: prepareForStringify(node.personalData, removePersonalData), savedPayload: getSavedPayload(node) } return object diff --git a/StrategySpace/Workspace/Workspace.js b/StrategySpace/Workspace/Workspace.js index a75374aa5..0c1e74d87 100644 --- a/StrategySpace/Workspace/Workspace.js +++ b/StrategySpace/Workspace/Workspace.js @@ -115,11 +115,11 @@ function newWorkspace () { window.localStorage.setItem(CANVAS_APP_NAME + '.' + 'Workspace' + '.' + user.alias, textToSave) } - function stringifyWorkspace () { + function stringifyWorkspace (removePersonalData) { let stringifyReadyNodes = [] for (let i = 0; i < workspaceNode.rootNodes.length; i++) { let rootNode = workspaceNode.rootNodes[i] - let workspace = functionLibraryWorkspaceNodes.prepareForStringify(rootNode) + let workspace = functionLibraryWorkspaceNodes.prepareForStringify(rootNode, removePersonalData) stringifyReadyNodes.push(workspace) } let workspace = { @@ -127,6 +127,7 @@ function newWorkspace () { name: workspaceNode.name, rootNodes: stringifyReadyNodes } + return JSON.stringify(workspace) } @@ -154,13 +155,19 @@ function newWorkspace () { async function onMenuItemClick (payload, action) { switch (action) { - case 'Download Workspace': + case 'Share Workspace': { - let text = stringifyWorkspace() - let fileName = payload.node.type + ' - ' + payload.node.name + '.json' + let text = stringifyWorkspace(true) + let fileName = 'Share - ' + payload.node.type + ' - ' + payload.node.name + '.json' + download(fileName, text) + } + break + case 'Backup Workspace': + { + let text = stringifyWorkspace(false) + let fileName = 'Backup - ' + payload.node.type + ' - ' + payload.node.name + '.json' download(fileName, text) } - break case 'Save Trading System': { @@ -172,21 +179,34 @@ function newWorkspace () { case 'Edit Code': break - case 'Download': + case 'Share': { - let text = JSON.stringify(functionLibraryProtocolNode.getProtocolNode(payload.node)) + let text = JSON.stringify(functionLibraryProtocolNode.getProtocolNode(payload.node, true)) let nodeName = payload.node.name if (nodeName === undefined) { nodeName = '' } else { nodeName = '.' + nodeName } - let fileName = payload.node.type + ' - ' + nodeName + '.json' + let fileName = 'Share - ' + payload.node.type + ' - ' + nodeName + '.json' download(fileName, text) } break + case 'Backup': + { + let text = JSON.stringify(functionLibraryProtocolNode.getProtocolNode(payload.node, false)) + let nodeName = payload.node.name + if (nodeName === undefined) { + nodeName = '' + } else { + nodeName = '.' + nodeName + } + let fileName = 'Backup - ' + payload.node.type + ' - ' + nodeName + '.json' + download(fileName, text) + } + break case 'Add Strategy': { functionLibraryPartsFromNodes.addStrategy(payload.node)