From 894fb48c0ee689d96f2938aa01c83c199419a112 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Wed, 2 Oct 2019 10:12:10 +0200 Subject: [PATCH] Time Period Icon Implemented --- FloatingSpace/StrategyPart.js | 5 ++ FloatingSpace/StrategyPartConstructor.js | 57 +++++++++++++++++++ FloatingSpace/StrategyPartTitle.js | 3 + Spaces/StrategySpace.js | 3 +- .../FunctionLibraries/AttachDetach.js | 12 ++++ .../FunctionLibraries/NodeChildren.js | 17 ++++++ .../FunctionLibraries/NodeDeleter.js | 19 +++++++ .../FunctionLibraries/PartsFromNodes.js | 14 +++++ .../FunctionLibraries/ProtocolNode.js | 10 ++++ .../FunctionLibraries/StringifyNode.js | 12 ++++ StrategySpace/Workspace/Workspace.js | 4 ++ 11 files changed, 155 insertions(+), 1 deletion(-) diff --git a/FloatingSpace/StrategyPart.js b/FloatingSpace/StrategyPart.js index ce02744f1..29ca62463 100644 --- a/FloatingSpace/StrategyPart.js +++ b/FloatingSpace/StrategyPart.js @@ -242,6 +242,10 @@ function newStrategyPart () { compatibleType = '->' + 'Parameters' + '->' compatibleSubType = undefined break + case 'Time Period': + compatibleType = '->' + 'Parameters' + '->' + compatibleSubType = undefined + break case 'Slippage': compatibleType = '->' + 'Parameters' + '->' compatibleSubType = undefined @@ -382,6 +386,7 @@ function newStrategyPart () { 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 === 'Time Range' && nearbyNode.timeRange !== undefined) { continue } + if (thisObject.payload.node.type === 'Time Period' && nearbyNode.timePeriod !== undefined) { continue } if (thisObject.payload.node.type === 'Slippage' && nearbyNode.slippage !== undefined) { continue } if (thisObject.payload.node.type === 'Fee Structure' && nearbyNode.feeStructure !== undefined) { continue } if (thisObject.payload.node.type === 'Trigger Stage' && nearbyNode.triggerStage !== undefined) { continue } diff --git a/FloatingSpace/StrategyPartConstructor.js b/FloatingSpace/StrategyPartConstructor.js index b006a00cf..2f8bc3f03 100644 --- a/FloatingSpace/StrategyPartConstructor.js +++ b/FloatingSpace/StrategyPartConstructor.js @@ -1129,6 +1129,59 @@ function newStrategyPartConstructor () { ) break } + case 'Time Period': { + strategyPart.codeEditor = newCodeEditor() + strategyPart.codeEditor.isVisibleFunction = strategyPart.isVisibleFunction + strategyPart.codeEditor.initialize() + strategyPart.codeEditor.container.connectToParent(strategyPart.container, false, false, true, true, false, false, false, false) + + addLeftIcons(menuItemsInitialValues, floatingObject) + menuItemsInitialValues.push( + { + action: 'Edit Time Period', + actionFunction: strategyPart.codeEditor.activate, + label: 'Edit Time Period', + visible: true, + iconPathOn: 'settings', + iconPathOff: 'settings', + rawRadius: 8, + targetRadius: 0, + currentRadius: 0, + angle: -40 + } + ) + menuItemsInitialValues.push( + { + action: 'Delete Time Period', + askConfirmation: true, + confirmationLabel: 'Confirm to Delete', + actionFunction: payload.onMenuItemClick, + label: 'Delete Time Period', + 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 'Slippage': { strategyPart.codeEditor = newCodeEditor() strategyPart.codeEditor.isVisibleFunction = strategyPart.isVisibleFunction @@ -2321,6 +2374,10 @@ function newStrategyPartConstructor () { level_3() break } + case 'Time Period': { + level_3() + break + } case 'Slippage': { level_3() break diff --git a/FloatingSpace/StrategyPartTitle.js b/FloatingSpace/StrategyPartTitle.js index 4eba6488b..ff4517f4c 100644 --- a/FloatingSpace/StrategyPartTitle.js +++ b/FloatingSpace/StrategyPartTitle.js @@ -108,6 +108,9 @@ function newStrategyPartTitle () { case 'Time Range': { break } + case 'Time Period': { + break + } case 'Slippage': { break } diff --git a/Spaces/StrategySpace.js b/Spaces/StrategySpace.js index 65ea14ec3..5533031dc 100644 --- a/Spaces/StrategySpace.js +++ b/Spaces/StrategySpace.js @@ -57,6 +57,7 @@ function newStrategySpace () { ['Parameters', 'settings'], ['Base Asset', 'loading'], ['Time Range', 'chronometer'], + ['Time Period', 'schedule'], ['Slippage', 'support'], ['Fee Structure', 'sitemap'], ['Strategy', 'quality'], @@ -76,7 +77,7 @@ function newStrategySpace () { ['Take Profit', 'stage-open-take-profit'], ['Phase', 'placeholder'], ['Formula', 'pipette'], - ['Next Phase Event', 'schedule'], + ['Next Phase Event', 'pantone'], ['Situation', 'pyramid'], ['Condition', 'testing'], ['Code', 'html'] diff --git a/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js b/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js index 837f7b3c8..8dee72993 100644 --- a/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js +++ b/StrategySpace/Workspace/FunctionLibraries/AttachDetach.js @@ -122,6 +122,11 @@ function newAttachDetach () { completeDetachment(node, rootNodes) return } + case 'Time Period': { + node.payload.parentNode.timePeriod = undefined + completeDetachment(node, rootNodes) + return + } case 'Slippage': { node.payload.parentNode.slippage = undefined completeDetachment(node, rootNodes) @@ -386,6 +391,13 @@ function newAttachDetach () { completeAttachment(node, rootNodes) } break + case 'Time Period': { + node.payload.parentNode = attachToNode + node.payload.chainParent = attachToNode + node.payload.parentNode.timePeriod = node + completeAttachment(node, rootNodes) + } + break case 'Slippage': { node.payload.parentNode = attachToNode node.payload.chainParent = attachToNode diff --git a/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js b/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js index 40c97abbd..eb0e04d59 100644 --- a/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js +++ b/StrategySpace/Workspace/FunctionLibraries/NodeChildren.js @@ -59,6 +59,9 @@ function newNodeChildren () { case 'Time Range': { return countChildrenTimeRange(parentNode, childNode) } + case 'Time Period': { + return countChildrenTimePeriod(parentNode, childNode) + } case 'Slippage': { return countChildrenSlippage(parentNode, childNode) } @@ -376,6 +379,12 @@ function newNodeChildren () { response.childIndex = response.childrenCount } } + if (parentNode.timePeriod !== undefined) { + response.childrenCount++ + if (parentNode.timePeriod.id === childNode.id) { + response.childIndex = response.childrenCount + } + } if (parentNode.slippage !== undefined) { response.childrenCount++ if (parentNode.slippage.id === childNode.id) { @@ -407,6 +416,14 @@ function newNodeChildren () { return response } + function countChildrenTimePeriod (parentNode, childNode) { + let response = { + childrenCount: 0, + childIndex: undefined + } + return response + } + function countChildrenSlippage (parentNode, childNode) { let response = { childrenCount: 0, diff --git a/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js b/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js index 54042a70a..143a43c1e 100644 --- a/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js +++ b/StrategySpace/Workspace/FunctionLibraries/NodeDeleter.js @@ -18,6 +18,7 @@ function newNodeDeleter () { deleteParameters: deleteParameters, deleteBaseAsset: deleteBaseAsset, deleteTimeRange: deleteTimeRange, + deleteTimePeriod: deleteTimePeriod, deleteSlippage: deleteSlippage, deleteFeeStructure: deleteFeeStructure, deleteStrategy: deleteStrategy, @@ -119,6 +120,10 @@ function newNodeDeleter () { deleteTimeRange(rootNode, rootNodes) break } + case 'Time Period': { + deleteTimePeriod(rootNode, rootNodes) + break + } case 'Slippage': { deleteSlippage(rootNode, rootNodes) break @@ -475,6 +480,9 @@ function newNodeDeleter () { if (node.timeRange !== undefined) { deleteTimeRange(node.timeRange, rootNodes) } + if (node.timePeriod !== undefined) { + deleteTimePeriod(node.timePeriod, rootNodes) + } if (node.slippage !== undefined) { deleteSlippage(node.slippage, rootNodes) } @@ -507,6 +515,17 @@ function newNodeDeleter () { cleanNode(node) } + function deleteTimePeriod (node, rootNodes) { + let payload = node.payload + if (payload.parentNode !== undefined) { + payload.parentNode.timePeriod = undefined + } else { + completeDeletion(node, rootNodes) + } + destroyPart(node) + cleanNode(node) + } + function deleteSlippage (node, rootNodes) { let payload = node.payload if (payload.parentNode !== undefined) { diff --git a/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js b/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js index eb1612be0..9d0759dd8 100644 --- a/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js +++ b/StrategySpace/Workspace/FunctionLibraries/PartsFromNodes.js @@ -258,6 +258,10 @@ function newPartsFromNodes () { createPart('Time Range', node.name, node, parentNode, chainParent, 'Time Range') return } + case 'Time Period': { + createPart('Time Period', node.name, node, parentNode, chainParent, 'Time Period') + return + } case 'Slippage': { createPart('Slippage', node.name, node, parentNode, chainParent, 'Slippage') return @@ -274,6 +278,9 @@ function newPartsFromNodes () { if (node.timeRange !== undefined) { createPartFromNode(node.timeRange, node, node) } + if (node.timePeriod !== undefined) { + createPartFromNode(node.timePeriod, node, node) + } if (node.slippage !== undefined) { createPartFromNode(node.slippage, node, node) } @@ -644,6 +651,13 @@ function newPartsFromNodes () { } createPart('Time Range', '', node.timeRange, node, node) } + if (node.timePeriod === undefined) { + node.timePeriod = { + name: 'Time Period', + code: DEFAULT_CONFIG_TEXT + } + createPart('Time Period', '', node.timePeriod, node, node) + } if (node.slippage === undefined) { node.slippage = { name: 'Slippage', diff --git a/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js b/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js index 7e91ac821..68dedf6a5 100644 --- a/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js +++ b/StrategySpace/Workspace/FunctionLibraries/ProtocolNode.js @@ -261,6 +261,15 @@ function newProtocolNode () { } return object } + case 'Time Period': { + let object = { + type: node.type, + subType: node.subType, + name: node.name, + code: node.code + } + return object + } case 'Slippage': { let object = { type: node.type, @@ -286,6 +295,7 @@ function newProtocolNode () { name: node.name, baseAsset: getProtocolNode(node.baseAsset, removePersonalData, parseJSONStrings, includeIds), 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) } diff --git a/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js b/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js index 84e353257..30966c11e 100644 --- a/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js +++ b/StrategySpace/Workspace/FunctionLibraries/StringifyNode.js @@ -309,6 +309,17 @@ function newStringifyNode () { } return object } + case 'Time Period': { + let object = { + id: node.id, + type: node.type, + subType: node.subType, + name: node.name, + code: node.code, + savedPayload: getSavedPayload(node) + } + return object + } case 'Slippage': { let object = { id: node.id, @@ -339,6 +350,7 @@ function newStringifyNode () { name: node.name, baseAsset: prepareForStringify(node.baseAsset, removePersonalData), timeRange: prepareForStringify(node.timeRange, removePersonalData), + timePeriod: prepareForStringify(node.timePeriod, removePersonalData), slippage: prepareForStringify(node.slippage, removePersonalData), feeStructure: prepareForStringify(node.feeStructure, removePersonalData), savedPayload: getSavedPayload(node) diff --git a/StrategySpace/Workspace/Workspace.js b/StrategySpace/Workspace/Workspace.js index a23cfe8d9..71afdc120 100644 --- a/StrategySpace/Workspace/Workspace.js +++ b/StrategySpace/Workspace/Workspace.js @@ -434,6 +434,10 @@ function newWorkspace () { functionLibraryNodeDeleter.deleteTimeRange(payload.node, workspaceNode.rootNodes) break } + case 'Delete Time Period': { + functionLibraryNodeDeleter.deleteTimePeriod(payload.node, workspaceNode.rootNodes) + break + } case 'Delete Slippage': { functionLibraryNodeDeleter.deleteSlippage(payload.node, workspaceNode.rootNodes) break