From d91ba1d1d0a207c45201b45396c8849ddb2e0e59 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Mon, 7 Oct 2019 10:09:09 +0200 Subject: [PATCH] Layer Manager and Layer Concepts Introduced --- FloatingSpace/StrategyPart.js | 9 +- FloatingSpace/StrategyPartConstructor.js | 226 ++++++++++++++++-- FloatingSpace/StrategyPartTitle.js | 7 + Spaces/StrategySpace.js | 2 + .../FunctionLibraries/AttachDetach.js | 30 +++ .../FunctionLibraries/NodeChildren.js | 54 +++++ .../FunctionLibraries/NodeDeleter.js | 56 +++++ .../FunctionLibraries/PartsFromNodes.js | 48 ++++ .../FunctionLibraries/ProtocolNode.js | 43 +++- .../FunctionLibraries/StringifyNode.js | 32 +++ StrategySpace/Workspace/Workspace.js | 18 ++ 11 files changed, 500 insertions(+), 25 deletions(-) diff --git a/FloatingSpace/StrategyPart.js b/FloatingSpace/StrategyPart.js index 22fb46a38..c0a8f2f6b 100644 --- a/FloatingSpace/StrategyPart.js +++ b/FloatingSpace/StrategyPart.js @@ -266,6 +266,14 @@ function newStrategyPart () { compatibleType = '->' + 'Parameters' + '->' compatibleSubType = undefined break + case 'Layer Manager': + compatibleType = '->' + 'Backtesting Session' + '->' + 'Live Trading Session' + '->' + 'Paper Trading Session' + '->' + 'Fordward Testing Session' + '->' + compatibleSubType = undefined + break + case 'Layer': + compatibleType = '->' + 'Layer Manager' + '->' + compatibleSubType = undefined + break case 'Task Manager': compatibleType = '->' + 'Network Node' + '->' compatibleSubType = undefined @@ -1132,4 +1140,3 @@ function newStrategyPart () { } } } - diff --git a/FloatingSpace/StrategyPartConstructor.js b/FloatingSpace/StrategyPartConstructor.js index 6d0344e41..d58a27935 100644 --- a/FloatingSpace/StrategyPartConstructor.js +++ b/FloatingSpace/StrategyPartConstructor.js @@ -351,7 +351,7 @@ function newStrategyPartConstructor () { currentRadius: 0, angle: -40 } - ) + ) menuItemsInitialValues.push( { action: 'Delete Network Node', @@ -367,7 +367,7 @@ function newStrategyPartConstructor () { currentRadius: 0, angle: 0 } - ) + ) menuItemsInitialValues.push( { action: 'Share', @@ -384,6 +384,138 @@ function newStrategyPartConstructor () { ) break } + case 'Layer Manager': { + addLeftIcons(menuItemsInitialValues, floatingObject) + menuItemsInitialValues.push( + { + action: 'Turn All Layers On', + actionFunction: payload.onMenuItemClick, + label: 'Turn All Layers On', + visible: true, + iconPathOn: 'paper-plane', + iconPathOff: 'paper-plane', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: -70 + } + ) + menuItemsInitialValues.push( + { + action: 'Turn All Layers Off', + actionFunction: payload.onMenuItemClick, + label: 'Turn All Layers Off', + visible: true, + iconPathOn: 'stop', + iconPathOff: 'stop', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: -30 + } + ) + menuItemsInitialValues.push( + { + action: 'Add Layer', + actionFunction: payload.onMenuItemClick, + label: 'Add Layer', + visible: true, + relatedStrategyPart: 'Layer', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: 0 + } + ) + menuItemsInitialValues.push( + { + action: 'Delete Layer Manager', + askConfirmation: true, + confirmationLabel: 'Confirm to Delete', + actionFunction: payload.onMenuItemClick, + label: 'Delete Layer Manager', + visible: true, + iconPathOn: 'delete', + iconPathOff: 'delete', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: 30 + } + ) + menuItemsInitialValues.push( + { + action: 'Share', + actionFunction: payload.onMenuItemClick, + label: 'Share', + visible: true, + iconPathOn: 'menu-share', + iconPathOff: 'menu-share', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: 70 + } + ) + break + } + case 'Layer': { + addLeftIcons(menuItemsInitialValues, floatingObject) + menuItemsInitialValues.push( + { + action: 'Turn Layer On', + actionFunction: payload.onMenuItemClick, + label: 'Turn On', + workingLabel: 'Turning On', + workDoneLabel: 'Turned On', + workFailedLabel: 'Layer Cannot be On', + secondaryAction: 'Turn Layer Off', + secondaryLabel: 'Turn Off', + secondaryWorkingLabel: 'Turning Off', + secondaryWorkDoneLabel: 'Turned Off', + secondaryWorkFailedLabel: 'Layer Cannot be Off', + secondaryIcon: 'stop', + visible: true, + iconPathOn: 'paper-plane', + iconPathOff: 'paper-plane', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: -40 + } + ) + menuItemsInitialValues.push( + { + action: 'Delete Layer', + askConfirmation: true, + confirmationLabel: 'Confirm to Delete', + actionFunction: payload.onMenuItemClick, + label: 'Delete Layer', + visible: true, + iconPathOn: 'delete', + iconPathOff: 'delete', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: 0 + } + ) + menuItemsInitialValues.push( + { + action: 'Share', + actionFunction: payload.onMenuItemClick, + label: 'Share', + visible: true, + iconPathOn: 'menu-share', + iconPathOff: 'menu-share', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: 40 + } + ) + break + } case 'Task Manager': { addLeftIcons(menuItemsInitialValues, floatingObject) menuItemsInitialValues.push( @@ -426,7 +558,7 @@ function newStrategyPartConstructor () { currentRadius: 0, angle: 0 } - ) + ) menuItemsInitialValues.push( { action: 'Delete Task Manager', @@ -442,7 +574,7 @@ function newStrategyPartConstructor () { currentRadius: 0, angle: 20 } - ) + ) menuItemsInitialValues.push( { action: 'Share', @@ -878,9 +1010,22 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -40 + angle: -60 } ) + menuItemsInitialValues.push( + { + action: 'Add Layer Manager', + actionFunction: payload.onMenuItemClick, + label: 'Add Layer Manager', + visible: true, + relatedStrategyPart: 'Layer Manager', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: -20 + } + ) menuItemsInitialValues.push( { action: 'Delete Backtesting Session', @@ -894,7 +1039,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 0 + angle: 20 } ) menuItemsInitialValues.push( @@ -908,9 +1053,9 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 40 + angle: 60 } - ) + ) break } case 'Live Trading Session': { @@ -935,9 +1080,22 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -40 + angle: -60 } ) + menuItemsInitialValues.push( + { + action: 'Add Layer Manager', + actionFunction: payload.onMenuItemClick, + label: 'Add Layer Manager', + visible: true, + relatedStrategyPart: 'Layer Manager', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: -20 + } + ) menuItemsInitialValues.push( { action: 'Delete Live Trading Session', @@ -951,7 +1109,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 0 + angle: 20 } ) menuItemsInitialValues.push( @@ -965,7 +1123,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 40 + angle: 60 } ) break @@ -992,9 +1150,22 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -40 + angle: -60 } ) + menuItemsInitialValues.push( + { + action: 'Add Layer Manager', + actionFunction: payload.onMenuItemClick, + label: 'Add Layer Manager', + visible: true, + relatedStrategyPart: 'Layer Manager', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: -20 + } + ) menuItemsInitialValues.push( { action: 'Delete Fordward Testing Session', @@ -1008,7 +1179,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 0 + angle: 20 } ) menuItemsInitialValues.push( @@ -1022,7 +1193,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 40 + angle: 60 } ) break @@ -1049,9 +1220,22 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: -40 + angle: -60 } ) + menuItemsInitialValues.push( + { + action: 'Add Layer Manager', + actionFunction: payload.onMenuItemClick, + label: 'Add Layer Manager', + visible: true, + relatedStrategyPart: 'Layer Manager', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: -20 + } + ) menuItemsInitialValues.push( { action: 'Delete Paper Trading Session', @@ -1065,7 +1249,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 0 + angle: 20 } ) menuItemsInitialValues.push( @@ -1079,7 +1263,7 @@ function newStrategyPartConstructor () { rawRadius: 8, targetRadius: 0, currentRadius: 0, - angle: 40 + angle: 60 } ) break @@ -2625,6 +2809,14 @@ function newStrategyPartConstructor () { level_1() break } + case 'Layer Manager': { + level_3() + break + } + case 'Layer': { + level_4() + break + } case 'Task Manager': { level_1() break diff --git a/FloatingSpace/StrategyPartTitle.js b/FloatingSpace/StrategyPartTitle.js index 792bb88cf..a0191f8dc 100644 --- a/FloatingSpace/StrategyPartTitle.js +++ b/FloatingSpace/StrategyPartTitle.js @@ -59,6 +59,13 @@ function newStrategyPartTitle () { case 'Network Node': { break } + case 'Layer Manager': { + break + } + case 'Layer': { + thisObject.allwaysVisible = true + break + } case 'Task Manager': { break } diff --git a/Spaces/StrategySpace.js b/Spaces/StrategySpace.js index 93bc631c5..97631485c 100644 --- a/Spaces/StrategySpace.js +++ b/Spaces/StrategySpace.js @@ -42,6 +42,8 @@ function newStrategySpace () { ['Definition', 'text'], ['Network', 'network'], ['Network Node', 'network-node'], + ['Layer Manager', 'video-player'], + ['Layer', 'attractive'], ['Task Manager', 'task'], ['Task', 'timeline'], ['Sensor', 'pipette'], diff --git a/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js b/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js index 9f4183811..7d86667b3 100644 --- a/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js +++ b/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js @@ -65,6 +65,22 @@ function newAttachDetach () { completeDetachment(node, rootNodes) return } + case 'Layer Manager': { + node.payload.parentNode.layerManager = undefined + completeDetachment(node, rootNodes) + return + } + case 'Layer': { + let payload = node.payload + for (let i = 0; i < payload.parentNode.layers.length; i++) { + let layer = payload.parentNode.layers[i] + if (layer.id === node.id) { + payload.parentNode.layers.splice(i, 1) + } + } + completeDetachment(node, rootNodes) + return + } case 'Task Manager': { let payload = node.payload for (let i = 0; i < payload.parentNode.taskManagers.length; i++) { @@ -326,6 +342,20 @@ function newAttachDetach () { completeAttachment(node, rootNodes) } break + case 'Layer Manager': { + node.payload.parentNode = attachToNode + node.payload.chainParent = attachToNode + node.payload.parentNode.layerManager = node + completeAttachment(node, rootNodes) + } + break + case 'Layer': { + node.payload.parentNode = attachToNode + node.payload.chainParent = attachToNode + node.payload.parentNode.layers.push(node) + completeAttachment(node, rootNodes) + } + break case 'Task Manager': { node.payload.parentNode = attachToNode node.payload.chainParent = attachToNode diff --git a/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js b/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js index 7212cb830..49c404ae2 100644 --- a/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js +++ b/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js @@ -17,6 +17,12 @@ function newNodeChildren () { case 'Network Node': { return countChildrenNetworkNode(parentNode, childNode) } + case 'Layer Manager': { + return countChildrenLayerManager(parentNode, childNode) + } + case 'Layer': { + return countChildrenLayer(parentNode, childNode) + } case 'Task Manager': { return countChildrenTaskManager(parentNode, childNode) } @@ -209,6 +215,30 @@ function newNodeChildren () { return response } + function countChildrenLayerManager (parentNode, childNode) { + let response = { + childrenCount: 0, + childIndex: undefined + } + + for (let i = 0; i < parentNode.layers.length; i++) { + let child = parentNode.layers[i] + response.childrenCount++ + if (child.id === childNode.id) { + response.childIndex = response.childrenCount + } + } + return response + } + + function countChildrenLayer (parentNode, childNode) { + let response = { + childrenCount: 0, + childIndex: undefined + } + return response + } + function countChildrenTaskManager (parentNode, childNode) { let response = { childrenCount: 0, @@ -312,6 +342,12 @@ function newNodeChildren () { response.childIndex = response.childrenCount } } + if (parentNode.layerManager !== undefined) { + response.childrenCount++ + if (parentNode.layerManager.id === childNode.id) { + response.childIndex = response.childrenCount + } + } return response } @@ -326,6 +362,12 @@ function newNodeChildren () { response.childIndex = response.childrenCount } } + if (parentNode.layerManager !== undefined) { + response.childrenCount++ + if (parentNode.layerManager.id === childNode.id) { + response.childIndex = response.childrenCount + } + } return response } @@ -340,6 +382,12 @@ function newNodeChildren () { response.childIndex = response.childrenCount } } + if (parentNode.layerManager !== undefined) { + response.childrenCount++ + if (parentNode.layerManager.id === childNode.id) { + response.childIndex = response.childrenCount + } + } return response } @@ -354,6 +402,12 @@ function newNodeChildren () { response.childIndex = response.childrenCount } } + if (parentNode.layerManager !== undefined) { + response.childrenCount++ + if (parentNode.layerManager.id === childNode.id) { + response.childIndex = response.childrenCount + } + } return response } diff --git a/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js b/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js index f761a7fd8..1b62f728b 100644 --- a/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js +++ b/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js @@ -3,6 +3,8 @@ function newNodeDeleter () { deleteDefinition: deleteDefinition, deleteNetwork: deleteNetwork, deleteNetworkNode: deleteNetworkNode, + deleteLayerManager: deleteLayerManager, + deleteLayer: deleteLayer, deleteTaskManager: deleteTaskManager, deleteTask: deleteTask, deleteSensor: deleteBot, @@ -68,6 +70,14 @@ function newNodeDeleter () { deleteNetworkNode(rootNode, rootNodes) break } + case 'Layer Manager': { + deleteLayerManager(rootNode, rootNodes) + break + } + case 'Layer': { + deleteLayer(rootNode, rootNodes) + break + } case 'Task Manager': { deleteTaskManager(rootNode, rootNodes) break @@ -316,6 +326,36 @@ function newNodeDeleter () { cleanNode(node) } + function deleteLayerManager (node, rootNodes) { + let payload = node.payload + if (payload.parentNode !== undefined) { + payload.parentNode.layerManager = undefined + } + if (node.layers !== undefined) { + while (node.layers.length > 0) { + deleteLayer(node.layers[0], rootNodes) + } + } + completeDeletion(node, rootNodes) + destroyPart(node) + cleanNode(node) + } + + function deleteLayer (node, rootNodes) { + let payload = node.payload + if (payload.parentNode !== undefined) { + for (let j = 0; j < payload.parentNode.layers.length; j++) { + let layer = payload.parentNode.layers[j] + if (layer.id === node.id) { + payload.parentNode.layers.splice(j, 1) + } + } + } + completeDeletion(node, rootNodes) + destroyPart(node) + cleanNode(node) + } + function deleteTaskManager (node, rootNodes) { let payload = node.payload if (payload.parentNode !== undefined) { @@ -417,6 +457,10 @@ function newNodeDeleter () { if (node.parameters !== undefined) { deleteParameters(node.parameters, rootNodes) } + + if (node.layerManager !== undefined) { + deleteLayerManager(node.layerManager, rootNodes) + } completeDeletion(node, rootNodes) destroyPart(node) cleanNode(node) @@ -432,6 +476,10 @@ function newNodeDeleter () { if (node.parameters !== undefined) { deleteParameters(node.parameters, rootNodes) } + + if (node.layerManager !== undefined) { + deleteLayerManager(node.layerManager, rootNodes) + } completeDeletion(node, rootNodes) destroyPart(node) cleanNode(node) @@ -447,6 +495,10 @@ function newNodeDeleter () { if (node.parameters !== undefined) { deleteParameters(node.parameters, rootNodes) } + + if (node.layerManager !== undefined) { + deleteLayerManager(node.layerManager, rootNodes) + } completeDeletion(node, rootNodes) destroyPart(node) cleanNode(node) @@ -462,6 +514,10 @@ function newNodeDeleter () { if (node.parameters !== undefined) { deleteParameters(node.parameters, rootNodes) } + + if (node.layerManager !== undefined) { + deleteLayerManager(node.layerManager, rootNodes) + } completeDeletion(node, rootNodes) destroyPart(node) cleanNode(node) diff --git a/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js b/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js index a5a9a9902..d62b0ba93 100644 --- a/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js +++ b/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js @@ -4,6 +4,8 @@ function newPartsFromNodes () { addDefinition: addDefinition, addNetwork: addNetwork, addNetworkNode: addNetworkNode, + addLayerManager: addLayerManager, + addLayer: addLayer, addTaskManager: addTaskManager, addTask: addTask, addSensor: addSensor, @@ -372,6 +374,18 @@ function newPartsFromNodes () { } return } + case 'Layer Manager': { + createPart('Layer Manager', node.name, node, parentNode, chainParent, 'Layer Manager') + for (let m = 0; m < node.layers.length; m++) { + let layer = node.layers[m] + createPartFromNode(layer, node, node) + } + return + } + case 'Layer': { + createPart('Layer', node.name, node, parentNode, chainParent, 'Layer') + return + } case 'Task Manager': { createPart('Task Manager', node.name, node, parentNode, chainParent, 'Task Manager') for (let m = 0; m < node.tasks.length; m++) { @@ -439,6 +453,9 @@ function newPartsFromNodes () { if (node.parameters !== undefined) { createPartFromNode(node.parameters, node, node) } + if (node.layerManager !== undefined) { + createPartFromNode(node.layerManager, node, node) + } return } case 'Live Trading Session': { @@ -446,6 +463,9 @@ function newPartsFromNodes () { if (node.parameters !== undefined) { createPartFromNode(node.parameters, node, node) } + if (node.layerManager !== undefined) { + createPartFromNode(node.layerManager, node, node) + } return } case 'Fordward Testing Session': { @@ -453,6 +473,9 @@ function newPartsFromNodes () { if (node.parameters !== undefined) { createPartFromNode(node.parameters, node, node) } + if (node.layerManager !== undefined) { + createPartFromNode(node.layerManager, node, node) + } return } case 'Paper Trading Session': { @@ -460,6 +483,9 @@ function newPartsFromNodes () { if (node.parameters !== undefined) { createPartFromNode(node.parameters, node, node) } + if (node.layerManager !== undefined) { + createPartFromNode(node.layerManager, node, node) + } return } } @@ -489,6 +515,28 @@ function newPartsFromNodes () { return networkNode } + function addLayerManager (node) { + if (node.layerManager === undefined) { + node.layerManager = { + name: 'New Layer Manager', + layers: [] + } + createPart('Layer Manager', node.layerManager.name, node.layerManager, node, node, 'Layer Manager') + } + + return node.layerManager + } + + function addLayer (node) { + let layer = { + name: 'New Layer' + } + node.layers.push(layer) + createPart('Layer', layer.name, layer, node, node, 'Layer') + + return layer + } + function addTaskManager (node) { let taskManager = { name: 'New Task Manager', diff --git a/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js b/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js index 1e1bdb1fc..c41b5a866 100644 --- a/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js +++ b/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js @@ -466,6 +466,34 @@ function newProtocolNode () { } return key } + case 'Layer Manager': { + let layerManager = { + type: node.type, + subType: node.subType, + name: node.name, + layers: [] + } + + for (let m = 0; m < node.layers.length; m++) { + let layer = getProtocolNode(node.layers[m], removePersonalData, parseJSONStrings, includeIds) + layerManager.layers.push(layer) + } + if (includeIds) { + layerManager.id = node.id + } + return layerManager + } + case 'Layer': { + let object = { + type: node.type, + subType: node.subType, + name: node.name + } + if (includeIds) { + object.id = node.id + } + return object + } case 'Task Manager': { let taskManager = { type: node.type, @@ -493,9 +521,6 @@ function newProtocolNode () { if (includeIds) { object.id = node.id } - if (includeIds) { - object.id = node.id - } return object } case 'Sensor': { @@ -571,7 +596,8 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - parameters: getProtocolNode(node.parameters, removePersonalData, parseJSONStrings, includeIds) + parameters: getProtocolNode(node.parameters, removePersonalData, parseJSONStrings, includeIds), + layerManager: getProtocolNode(node.layerManager, removePersonalData, parseJSONStrings, includeIds) } if (includeIds) { object.id = node.id @@ -584,7 +610,8 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - parameters: getProtocolNode(node.parameters, removePersonalData, parseJSONStrings, includeIds) + parameters: getProtocolNode(node.parameters, removePersonalData, parseJSONStrings, includeIds), + layerManager: getProtocolNode(node.layerManager, removePersonalData, parseJSONStrings, includeIds) } if (includeIds) { object.id = node.id @@ -597,7 +624,8 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - parameters: getProtocolNode(node.parameters, removePersonalData, parseJSONStrings, includeIds) + parameters: getProtocolNode(node.parameters, removePersonalData, parseJSONStrings, includeIds), + layerManager: getProtocolNode(node.layerManager, removePersonalData, parseJSONStrings, includeIds) } if (includeIds) { object.id = node.id @@ -610,7 +638,8 @@ function newProtocolNode () { type: node.type, subType: node.subType, name: node.name, - parameters: getProtocolNode(node.parameters, removePersonalData, parseJSONStrings, includeIds) + parameters: getProtocolNode(node.parameters, removePersonalData, parseJSONStrings, includeIds), + layerManager: getProtocolNode(node.layerManager, removePersonalData, parseJSONStrings, includeIds) } if (includeIds) { object.id = node.id diff --git a/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js b/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js index f2a8e485e..da0cb0642 100644 --- a/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js +++ b/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js @@ -437,6 +437,34 @@ function newStringifyNode () { } return key } + case 'Layer Manager': { + let layerManager = { + id: node.id, + type: node.type, + subType: node.subType, + name: node.name, + layers: [], + savedPayload: getSavedPayload(node) + } + + if (node.layers !== undefined) { + for (let m = 0; m < node.layers.length; m++) { + let layer = prepareForStringify(node.layers[m], removePersonalData) + layerManager.layers.push(layer) + } + } + return layerManager + } + case 'Layer': { + let object = { + id: node.id, + type: node.type, + subType: node.subType, + name: node.name, + savedPayload: getSavedPayload(node) + } + return object + } case 'Task Manager': { let taskManager = { id: node.id, @@ -536,6 +564,7 @@ function newStringifyNode () { subType: node.subType, name: node.name, parameters: prepareForStringify(node.parameters, removePersonalData), + layerManager: prepareForStringify(node.layerManager, removePersonalData), savedPayload: getSavedPayload(node) } return object @@ -547,6 +576,7 @@ function newStringifyNode () { subType: node.subType, name: node.name, parameters: prepareForStringify(node.parameters, removePersonalData), + layerManager: prepareForStringify(node.layerManager, removePersonalData), savedPayload: getSavedPayload(node) } return object @@ -558,6 +588,7 @@ function newStringifyNode () { subType: node.subType, name: node.name, parameters: prepareForStringify(node.parameters, removePersonalData), + layerManager: prepareForStringify(node.layerManager, removePersonalData), savedPayload: getSavedPayload(node) } return object @@ -569,6 +600,7 @@ function newStringifyNode () { subType: node.subType, name: node.name, parameters: prepareForStringify(node.parameters, removePersonalData), + layerManager: prepareForStringify(node.layerManager, removePersonalData), savedPayload: getSavedPayload(node) } return object diff --git a/StrategySpace/Workspace/Workspace.js b/StrategySpace/Workspace/Workspace.js index 0e2515055..5686c26e9 100644 --- a/StrategySpace/Workspace/Workspace.js +++ b/StrategySpace/Workspace/Workspace.js @@ -279,6 +279,16 @@ function newWorkspace () { functionLibraryPartsFromNodes.addNetworkNode(payload.node) } break + case 'Add Layer Manager': + { + functionLibraryPartsFromNodes.addLayerManager(payload.node) + } + break + case 'Add Layer': + { + functionLibraryPartsFromNodes.addLayer(payload.node) + } + break case 'Add Task Manager': { functionLibraryPartsFromNodes.addTaskManager(payload.node) @@ -437,6 +447,14 @@ function newWorkspace () { functionLibraryNodeDeleter.deleteNetworkNode(payload.node, thisObject.workspaceNode.rootNodes) break } + case 'Delete Layer Manager': { + functionLibraryNodeDeleter.deleteLayerManager(payload.node, thisObject.workspaceNode.rootNodes) + break + } + case 'Delete Layer': { + functionLibraryNodeDeleter.deleteLayer(payload.node, thisObject.workspaceNode.rootNodes) + break + } case 'Delete Task Manager': { functionLibraryNodeDeleter.deleteTaskManager(payload.node, thisObject.workspaceNode.rootNodes) break