From 398dd56124ee5ef85295fe7f49735ec0937811eb Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 2 Jul 2019 15:55:14 +0200 Subject: [PATCH 1/4] Strategizer Gateway Improved, code cleaned --- Globals.js | 1 + Spaces/StrategySpace.js | 5 - StrategySpace/StrategizerGateway.js | 177 +++++++++++---------------- StrategySpace/Workspace/Workspace.js | 5 +- 4 files changed, 78 insertions(+), 110 deletions(-) diff --git a/Globals.js b/Globals.js index 6c1c265f8..eebdfc073 100644 --- a/Globals.js +++ b/Globals.js @@ -1,6 +1,7 @@ /* User Interface Colors */ const STORAGE_PROVIDER = 'AAWeb'; +const CANVAS_APP_NAME = 'Canvas App' const SUPPORTED_EXCHANGES = ["Poloniex"]; const SUPPORTED_MARKETS = [ diff --git a/Spaces/StrategySpace.js b/Spaces/StrategySpace.js index 10b73a164..a5b97d56b 100644 --- a/Spaces/StrategySpace.js +++ b/Spaces/StrategySpace.js @@ -163,11 +163,6 @@ function newStrategySpace () { function getContainer (point) { let container - if (thisObject.strategizerGateway !== undefined) { - container = thisObject.strategizerGateway.getContainer(point) - if (container !== undefined) { return container } - } - if (thisObject.sidePanel !== undefined) { container = thisObject.sidePanel.getContainer(point) if (container !== undefined) { return container } diff --git a/StrategySpace/StrategizerGateway.js b/StrategySpace/StrategizerGateway.js index e8ce8ce3d..c97897311 100644 --- a/StrategySpace/StrategizerGateway.js +++ b/StrategySpace/StrategizerGateway.js @@ -6,12 +6,11 @@ function newStrategizerGateway () { logger.fileName = MODULE_NAME let thisObject = { + idAtStrategizer: undefined, strategizerData: undefined, container: undefined, loadFromStrategyzer: loadFromStrategyzer, saveToStrategyzer: saveToStrategyzer, - draw: draw, - getContainer: getContainer, initialize: initialize } @@ -36,105 +35,24 @@ function newStrategizerGateway () { } - async function saveToStrategyzer () { - try { - const accessToken = window.localStorage.getItem(LOGGED_IN_ACCESS_TOKEN_LOCAL_STORAGE_KEY) - - let user = window.localStorage.getItem(LOGGED_IN_USER_LOCAL_STORAGE_KEY) - if (user === null) { - if (ERROR_LOG === true) { logger.write('[ERROR] saveToStrategyzer -> Can not save because user is not logged in. ') } - return - } - - user = JSON.parse(user) - let fbSlug = 'simulator' + '-' + 'bot' + '-' + user.alias.replace('.', '') - - /* See if we need to update or create a new record at the strategizer */ - - let tradingSystem = canvas.strategySpace.workspace.getProtocolTradingSystem() - let idAtStrategizer = window.localStorage.getItem(MODULE_NAME) - - if (idAtStrategizer === undefined) { - let response = await axios({ - url: window.canvasApp.graphQL.masterAppApiUrl, - method: 'post', - data: { - query: ` - mutation strategizer_CreateTradingSystem - ( - $fbSlug: String!, $data: strategizer_JSON! - ) - { - strategizer_CreateTradingSystem(fbSlug: $fbSlug, tradingSystem: { data: $data }) - { - id - } - } - `, - variables: { - fbSlug: fbSlug, - data: tradingSystem - } - }, - headers: { - authorization: 'Bearer ' + accessToken - } - }) - - if (response.data.errors) { - console.log('Error getting events: ' + JSON.stringify(response.data.errors)) - throw 'Error getting events: ' + JSON.stringify(response.data.errors) - } else { - window.localStorage.setItem(MODULE_NAME, response.data.data.strategizer_CreateTradingSystem.id) - } - } else { - const graphQLServer = await axios({ - url: window.canvasApp.graphQL.masterAppApiUrl, - method: 'post', - data: { - query: ` - mutation strategizer_EditTradingSystem - ( - $id: ID!, $data: strategizer_JSON! - ) - { - strategizer_EditTradingSystem(id: $id, tradingSystem: { data: $data }) - { - id - } - } - `, - variables: { - id: idAtStrategizer, - data: tradingSystem - } - }, - headers: { - authorization: 'Bearer ' + accessToken - } - }) - } - - return true - } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] saveToStrategyzer -> err = ' + err.stack) } - } - } - async function loadFromStrategyzer () { try { const accessToken = window.localStorage.getItem(LOGGED_IN_ACCESS_TOKEN_LOCAL_STORAGE_KEY) + if (accessToken === null) { + logger.write('[ERROR] loadFromStrategyzer -> Can load from strategizer because the accessToken is missing.') + return + } let user = window.localStorage.getItem(LOGGED_IN_USER_LOCAL_STORAGE_KEY) if (user === null) { - // if there is no user that means that we are logged off, which means this object can not be used. + logger.write('[ERROR] saveToStrategyzer -> Can not load from strategizer because user is not logged in. ') return } user = JSON.parse(user) let fbSlug = 'simulator' + '-' + 'bot' + '-' + user.alias.replace('.', '') - let response = await axios({ + let graphQLServer = await axios({ url: window.canvasApp.graphQL.masterAppApiUrl, method: 'post', data: { @@ -158,16 +76,13 @@ function newStrategizerGateway () { } }) - if (response.data.errors) { - if (response.data.errors[0] === 'Ressource not found : None of the tradingSystem are linked to that fbSlug') { - return false - } else { - logger.write('[ERROR] Error while getting Trading System from Strategizer: ' + JSON.stringify(response.data.errors)) - return false - } + if (graphQLServer.data.errors) { + logger.write('[ERROR] loadFromStrategyzer -> GraphQL Error: ' + JSON.stringify(graphQLServer.data.errors)) + return false } else { - thisObject.strategizerData = JSON.parse(JSON.stringify(response.data.data.strategizer_TradingSystemByFb.data)) - window.localStorage.setItem(MODULE_NAME, response.data.data.strategizer_TradingSystemByFb.id) + thisObject.strategizerData = JSON.parse(JSON.stringify(graphQLServer.data.data.strategizer_TradingSystemByFb.data)) + thisObject.idAtStrategizer = graphQLServer.data.data.strategizer_TradingSystemByFb.id + window.localStorage.setItem(CANVAS_APP_NAME + '.' + MODULE_NAME + '.' + user.alias, thisObject.idAtStrategizer)) return true } } catch (err) { @@ -175,13 +90,69 @@ function newStrategizerGateway () { } } - function getContainer (point) { - let container + async function saveToStrategyzer () { + try { + const accessToken = window.localStorage.getItem(LOGGED_IN_ACCESS_TOKEN_LOCAL_STORAGE_KEY) + if (accessToken === null) { + logger.write('[ERROR] saveToStrategyzer -> Can not save because the accessToken is missing.') + return + } - return undefined - } + let user = window.localStorage.getItem(LOGGED_IN_USER_LOCAL_STORAGE_KEY) + if (user === null) { + logger.write('[ERROR] saveToStrategyzer -> Can not save because user is not logged in. ') + return + } - function draw () { + user = JSON.parse(user) + let fbSlug = 'simulator' + '-' + 'bot' + '-' + user.alias.replace('.', '') + /* See if we need to update or create a new record at the strategizer */ + + let tradingSystem = canvas.strategySpace.workspace.getProtocolTradingSystem() + if (tradingSystem === undefined || idAtStrategizer === null) { + logger.write('[ERROR] saveToStrategyzer -> Can not save when tradingSystem is null or undefined.') + return + } + + let idAtStrategizer = window.localStorage.getItem(MODULE_NAME) + if (idAtStrategizer === undefined || idAtStrategizer === null) { + logger.write('[ERROR] saveToStrategyzer -> Can not save when idAtStrategizer is null or undefined.') + return + } + const graphQLServer = await axios({ + url: window.canvasApp.graphQL.masterAppApiUrl, + method: 'post', + data: { + query: ` + mutation strategizer_EditTradingSystem + ( + $id: ID!, $data: strategizer_JSON! + ) + { + strategizer_EditTradingSystem(id: $id, tradingSystem: { data: $data }) + { + id + } + } + `, + variables: { + id: idAtStrategizer, + data: tradingSystem + } + }, + headers: { + authorization: 'Bearer ' + accessToken + } + }) + + if (graphQLServer.data.errors) { + logger.write('[ERROR] saveToStrategyzer -> GraphsQL Error -> graphQLServer.data.errors = ' + JSON.stringify(graphQLServer.data.errors)) + } + + return true + } catch (err) { + if (ERROR_LOG === true) { logger.write('[ERROR] saveToStrategyzer -> err = ' + err.stack) } + } } } diff --git a/StrategySpace/Workspace/Workspace.js b/StrategySpace/Workspace/Workspace.js index e0c81f559..f194f805d 100644 --- a/StrategySpace/Workspace/Workspace.js +++ b/StrategySpace/Workspace/Workspace.js @@ -58,8 +58,9 @@ function newWorkspace () { } user = JSON.parse(user) - let savedWorkspace = window.localStorage.getItem(user.alias + '.' + 'workspace') - if (savedWorkspace === null) { + let idAtStrategizer = window.localStorage.getItem(CANVAS_APP_NAME + '.' + user.alias + '.' + 'Strategizer Gateway') + let savedWorkspace = window.localStorage.getItem(CANVAS_APP_NAME + '.' + user.alias + '.' + 'Workspace') + if (savedWorkspace === null || savedWorkspace === null) { workspaceNode.type = 'Workspace' workspaceNode.name = 'My Workspace' functionLibraryPartsFromNodes.createPartFromNode(workspaceNode, undefined, undefined) From 66a8e06912ac6fdccc61b523f40fb152fda0bba2 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 2 Jul 2019 16:23:27 +0200 Subject: [PATCH 2/4] Workspace and StrategizerGateway upgraded --- Spaces/StrategySpace.js | 1 - StrategySpace/StrategizerGateway.js | 22 ++++++++++------------ StrategySpace/Workspace/Workspace.js | 25 ++++++------------------- 3 files changed, 16 insertions(+), 32 deletions(-) diff --git a/Spaces/StrategySpace.js b/Spaces/StrategySpace.js index a5b97d56b..0a030a844 100644 --- a/Spaces/StrategySpace.js +++ b/Spaces/StrategySpace.js @@ -32,7 +32,6 @@ function newStrategySpace () { buildIconByPartTypeMap() thisObject.strategizerGateway = newStrategizerGateway() - thisObject.strategizerGateway.initialize() thisObject.workspace = newWorkspace() thisObject.workspace.initialize() diff --git a/StrategySpace/StrategizerGateway.js b/StrategySpace/StrategizerGateway.js index c97897311..35ecf134f 100644 --- a/StrategySpace/StrategizerGateway.js +++ b/StrategySpace/StrategizerGateway.js @@ -1,7 +1,6 @@ function newStrategizerGateway () { const MODULE_NAME = 'Strategizer Gateway' - const ERROR_LOG = true const logger = newWebDebugLog() logger.fileName = MODULE_NAME @@ -10,8 +9,7 @@ function newStrategizerGateway () { strategizerData: undefined, container: undefined, loadFromStrategyzer: loadFromStrategyzer, - saveToStrategyzer: saveToStrategyzer, - initialize: initialize + saveToStrategyzer: saveToStrategyzer } let colletionItems = [] @@ -29,12 +27,10 @@ function newStrategizerGateway () { thisObject.container.isDraggeable = false thisObject.container.isClickeable = false + let graphQLServer + return thisObject - function initialize () { - - } - async function loadFromStrategyzer () { try { const accessToken = window.localStorage.getItem(LOGGED_IN_ACCESS_TOKEN_LOCAL_STORAGE_KEY) @@ -52,7 +48,7 @@ function newStrategizerGateway () { user = JSON.parse(user) let fbSlug = 'simulator' + '-' + 'bot' + '-' + user.alias.replace('.', '') - let graphQLServer = await axios({ + graphQLServer = await axios({ url: window.canvasApp.graphQL.masterAppApiUrl, method: 'post', data: { @@ -82,11 +78,12 @@ function newStrategizerGateway () { } else { thisObject.strategizerData = JSON.parse(JSON.stringify(graphQLServer.data.data.strategizer_TradingSystemByFb.data)) thisObject.idAtStrategizer = graphQLServer.data.data.strategizer_TradingSystemByFb.id - window.localStorage.setItem(CANVAS_APP_NAME + '.' + MODULE_NAME + '.' + user.alias, thisObject.idAtStrategizer)) + window.localStorage.setItem(CANVAS_APP_NAME + '.' + MODULE_NAME + '.' + user.alias, thisObject.idAtStrategizer) return true } } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] loadFromStrategyzer -> err = ' + err.stack) } + logger.write('[ERROR] loadFromStrategyzer -> err = ' + err.stack) + logger.write('[ERROR] loadFromStrategyzer -> GraphQL Error: ' + JSON.stringify(graphQLServer.data.errors)) } } @@ -120,7 +117,7 @@ function newStrategizerGateway () { logger.write('[ERROR] saveToStrategyzer -> Can not save when idAtStrategizer is null or undefined.') return } - const graphQLServer = await axios({ + graphQLServer = await axios({ url: window.canvasApp.graphQL.masterAppApiUrl, method: 'post', data: { @@ -152,7 +149,8 @@ function newStrategizerGateway () { return true } catch (err) { - if (ERROR_LOG === true) { logger.write('[ERROR] saveToStrategyzer -> err = ' + err.stack) } + logger.write('[ERROR] saveToStrategyzer -> err = ' + err.stack) + logger.write('[ERROR] loadFromStrategyzer -> GraphQL Error: ' + JSON.stringify(graphQLServer.data.errors)) } } } diff --git a/StrategySpace/Workspace/Workspace.js b/StrategySpace/Workspace/Workspace.js index f194f805d..ccfaba729 100644 --- a/StrategySpace/Workspace/Workspace.js +++ b/StrategySpace/Workspace/Workspace.js @@ -11,7 +11,6 @@ function newWorkspace () { spawn: spawn, detachNode: detachNode, attachNode: attachNode, - getContainer: getContainer, initialize: initialize, finalize: finalize } @@ -58,9 +57,10 @@ function newWorkspace () { } user = JSON.parse(user) - let idAtStrategizer = window.localStorage.getItem(CANVAS_APP_NAME + '.' + user.alias + '.' + 'Strategizer Gateway') - let savedWorkspace = window.localStorage.getItem(CANVAS_APP_NAME + '.' + user.alias + '.' + 'Workspace') - if (savedWorkspace === null || savedWorkspace === null) { + let idAtStrategizer = window.localStorage.getItem(CANVAS_APP_NAME + '.' + 'Strategizer Gateway' + '.' + user.alias) + let savedWorkspace = window.localStorage.getItem(CANVAS_APP_NAME + '.' + 'Workspace' + '.' + user.alias) + + if (savedWorkspace === null || idAtStrategizer === null) { workspaceNode.type = 'Workspace' workspaceNode.name = 'My Workspace' functionLibraryPartsFromNodes.createPartFromNode(workspaceNode, undefined, undefined) @@ -84,21 +84,8 @@ function newWorkspace () { workspaceNode.rootNodes.push(thisObject.tradingSystem) functionLibraryPartsFromNodes.createPartFromNode(thisObject.tradingSystem, undefined, undefined) thisObject.tradingSystem.payload.uiObject.setRunningStatus() - } else { - // First use of the Designer, lets help by creating the first Trading System - thisObject.tradingSystem = { - type: 'Trading System', - strategies: [] - } - workspaceNode.rootNodes.push(thisObject.tradingSystem) - functionLibraryPartsFromNodes.createPartFromNode(thisObject.tradingSystem, undefined, undefined) - thisObject.tradingSystem.payload.uiObject.setRunningStatus() + isInitialized = true } - isInitialized = true - } - - function getContainer (point) { - } function getProtocolTradingSystem () { @@ -123,7 +110,7 @@ function newWorkspace () { user = JSON.parse(user) let textToSave = stringifyWorkspace() - window.localStorage.setItem(user.alias + '.' + 'workspace', textToSave) + window.localStorage.setItem(CANVAS_APP_NAME + '.' + 'Workspace' + '.' + user.alias, textToSave) } function stringifyWorkspace () { From 2c752c9a7a05c4f85d93c6c036c94dabfa2c5a70 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 2 Jul 2019 16:55:54 +0200 Subject: [PATCH 3/4] When not worspace is disabled no calculate button --- Spaces/CockpitSpace.js | 42 +++++++++++++++------------- StrategySpace/StrategizerGateway.js | 2 +- StrategySpace/Workspace/Workspace.js | 8 +++--- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/Spaces/CockpitSpace.js b/Spaces/CockpitSpace.js index 3767afe41..86fc1c821 100644 --- a/Spaces/CockpitSpace.js +++ b/Spaces/CockpitSpace.js @@ -47,20 +47,18 @@ thisObject.container.frame.position.x = 0 let INITIAL_POSITION - const accessToken = window.localStorage.getItem(LOGGED_IN_ACCESS_TOKEN_LOCAL_STORAGE_KEY) - - if (accessToken !== null) { - INITIAL_POSITION = 55 + if (canvas.strategySpace.workspace.enabled === true) { + let localStorage = window.localStorage.getItem(MODULE_NAME) + if (localStorage !== null) { + storage = JSON.parse(localStorage) + thisObject.container.frame.position.y = storage.spacePosition + } else { + INITIAL_POSITION = 55 + thisObject.container.frame.position.y = browserCanvas.height * INITIAL_POSITION / 100 - COCKPIT_SPACE_HEIGHT + } } else { INITIAL_POSITION = 100 - } - - thisObject.container.frame.position.y = browserCanvas.height * INITIAL_POSITION / 100 - COCKPIT_SPACE_HEIGHT - - let localStorage = window.localStorage.getItem(MODULE_NAME) - if (localStorage !== null) { - storage = JSON.parse(localStorage) - thisObject.container.frame.position.y = storage.spacePosition + thisObject.container.frame.position.y = browserCanvas.height * INITIAL_POSITION / 100 - COCKPIT_SPACE_HEIGHT } canvasBrowserResizedEventSubscriptionId = window.canvasApp.eventHandler.listenToEvent('Browser Resized', resize) @@ -101,7 +99,9 @@ } function childrenPhysics () { - thisObject.restartSimulation.physics() + if (canvas.strategySpace.workspace.enabled === true) { + thisObject.restartSimulation.physics() + } thisObject.fullscreen.physics() } function thisObjectPhysics () { @@ -109,8 +109,7 @@ thisObject.status = 'MIDDLE' - let user = window.localStorage.getItem(LOGGED_IN_USER_LOCAL_STORAGE_KEY) - if (user !== null) { // Only if user is logged in + if (canvas.strategySpace.workspace.enabled === true) { thisObject.container.isDraggeable = true } else { thisObject.container.isDraggeable = false @@ -143,8 +142,10 @@ function getContainer (point) { let container - container = thisObject.restartSimulation.getContainer(point) - if (container !== undefined) { return container } + if (canvas.strategySpace.workspace.enabled === true) { + container = thisObject.restartSimulation.getContainer(point) + if (container !== undefined) { return container } + } container = thisObject.fullscreen.getContainer(point) if (container !== undefined) { return container } @@ -162,7 +163,9 @@ drawBackground() thisObject.assetBalances.draw() - thisObject.restartSimulation.draw() + if (canvas.strategySpace.workspace.enabled === true) { + thisObject.restartSimulation.draw() + } thisObject.fullscreen.draw() } @@ -196,8 +199,7 @@ browserCanvasContext.closePath() browserCanvasContext.fill() - let user = window.localStorage.getItem(LOGGED_IN_USER_LOCAL_STORAGE_KEY) - if (user !== null) { // Only if user is logged in + if (canvas.strategySpace.workspace.enabled === true) { arrow() } } diff --git a/StrategySpace/StrategizerGateway.js b/StrategySpace/StrategizerGateway.js index 35ecf134f..fa7b114ee 100644 --- a/StrategySpace/StrategizerGateway.js +++ b/StrategySpace/StrategizerGateway.js @@ -112,7 +112,7 @@ function newStrategizerGateway () { return } - let idAtStrategizer = window.localStorage.getItem(MODULE_NAME) + let idAtStrategizer = window.localStorage.getItem(CANVAS_APP_NAME + '.' + MODULE_NAME + '.' + user.alias) if (idAtStrategizer === undefined || idAtStrategizer === null) { logger.write('[ERROR] saveToStrategyzer -> Can not save when idAtStrategizer is null or undefined.') return diff --git a/StrategySpace/Workspace/Workspace.js b/StrategySpace/Workspace/Workspace.js index ccfaba729..a8b947318 100644 --- a/StrategySpace/Workspace/Workspace.js +++ b/StrategySpace/Workspace/Workspace.js @@ -5,6 +5,7 @@ function newWorkspace () { let thisObject = { tradingSystem: undefined, container: undefined, + enabled: false, onMenuItemClick: onMenuItemClick, getProtocolTradingSystem: getProtocolTradingSystem, physics: physics, @@ -41,7 +42,6 @@ function newWorkspace () { functionLibraryProtocolNode = newProtocolNode() functionLibraryWorkspaceNodes = newStringifyNode() - let isInitialized = false return thisObject function finalize () { @@ -73,7 +73,7 @@ function newWorkspace () { let rootNode = workspaceNode.rootNodes[i] functionLibraryPartsFromNodes.createPartFromNode(rootNode, undefined, undefined) } - isInitialized = true + thisObject.enabled = true } } @@ -84,7 +84,7 @@ function newWorkspace () { workspaceNode.rootNodes.push(thisObject.tradingSystem) functionLibraryPartsFromNodes.createPartFromNode(thisObject.tradingSystem, undefined, undefined) thisObject.tradingSystem.payload.uiObject.setRunningStatus() - isInitialized = true + thisObject.enabled = true } } @@ -101,7 +101,7 @@ function newWorkspace () { } function physics () { - if (isInitialized !== true) { return } + if (thisObject.enabled !== true) { return } /* Here we will save all the workspace related objects into the local storage */ let user = window.localStorage.getItem(LOGGED_IN_USER_LOCAL_STORAGE_KEY) if (user === null) { From c0c4b1b9eaf56d1ea461a8017fa748b494e0c872 Mon Sep 17 00:00:00 2001 From: Luis Fernando Molina Date: Tue, 2 Jul 2019 17:03:50 +0200 Subject: [PATCH 4/4] cleaning --- StrategySpace/StrategizerGateway.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/StrategySpace/StrategizerGateway.js b/StrategySpace/StrategizerGateway.js index fa7b114ee..59cecb130 100644 --- a/StrategySpace/StrategizerGateway.js +++ b/StrategySpace/StrategizerGateway.js @@ -83,7 +83,6 @@ function newStrategizerGateway () { } } catch (err) { logger.write('[ERROR] loadFromStrategyzer -> err = ' + err.stack) - logger.write('[ERROR] loadFromStrategyzer -> GraphQL Error: ' + JSON.stringify(graphQLServer.data.errors)) } } @@ -150,7 +149,6 @@ function newStrategizerGateway () { return true } catch (err) { logger.write('[ERROR] saveToStrategyzer -> err = ' + err.stack) - logger.write('[ERROR] loadFromStrategyzer -> GraphQL Error: ' + JSON.stringify(graphQLServer.data.errors)) } } }