diff --git a/ChartingSpace/PlottersManager.js b/ChartingSpace/PlottersManager.js index 0a0092364..09abb9b7a 100644 --- a/ChartingSpace/PlottersManager.js +++ b/ChartingSpace/PlottersManager.js @@ -148,7 +148,10 @@ function newPlottersManager() { if (sessionReference !== undefined) { session = sessionReference.referenceParent - + if (session === undefined) { + logger.write('[ERROR] initializePlotter -> Sessioin is Undefined at Session Reference -> Plotter will not be loaded. ') + return + } /* From the session we might be able to reach the Trading System or the Trading Engine */ if (session.tradingSystemReference !== undefined) { tradingSystem = session.tradingSystemReference.referenceParent diff --git a/DesignSpace/Workspace/FunctionLibraries/TaskFunctions.js b/DesignSpace/Workspace/FunctionLibraries/TaskFunctions.js index 6509cec62..8bedc60b3 100644 --- a/DesignSpace/Workspace/FunctionLibraries/TaskFunctions.js +++ b/DesignSpace/Workspace/FunctionLibraries/TaskFunctions.js @@ -10,7 +10,8 @@ function newTaskFunctions() { stopAllExchangeDataTasks: stopAllExchangeDataTasks, runAllExchangeTradingTasks: runAllExchangeTradingTasks, stopAllExchangeTradingTasks: stopAllExchangeTradingTasks, - addMissingExchangeDataTasks: addMissingExchangeDataTasks + addMissingExchangeDataTasks: addMissingExchangeDataTasks, + addMissingMarketDataTasks: addMissingMarketDataTasks } return thisObject @@ -265,8 +266,8 @@ function newTaskFunctions() { cryptoEcosystem = rootNode for (let j = 0; j < cryptoEcosystem.cryptoExchanges.length; j++) { let cryptoExchanges = cryptoEcosystem.cryptoExchanges[j] - for (let k=0; k < cryptoExchanges.exchanges.length; k++) { - let cryptoExchange = cryptoExchanges.exchanges[j] + for (let k = 0; k < cryptoExchanges.exchanges.length; k++) { + let cryptoExchange = cryptoExchanges.exchanges[k] if (isMissingChildren(node, cryptoExchange, true) === true) { let exchangeDataTasks = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Exchange Data Tasks') exchangeDataTasks.payload.referenceParent = cryptoExchange @@ -276,4 +277,21 @@ function newTaskFunctions() { } } } + + function addMissingMarketDataTasks(node, rootNodes, functionLibraryUiObjectsFromNodes) { + if (node.payload === undefined) { return } + if (node.payload.referenceParent === undefined) { return } + if (node.payload.referenceParent.exchangeMarkets === undefined) { return } + + let markets = node.payload.referenceParent.exchangeMarkets.markets + + for (let i = 0; i < markets.length; i++) { + let market = markets[i] + + if (isMissingChildren(node, market, true) === true) { + let marketDataTasks = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Market Data Tasks') + marketDataTasks.payload.referenceParent = market + } + } + } } diff --git a/DesignSpace/Workspace/Workspace.js b/DesignSpace/Workspace/Workspace.js index 5070a8370..a9d80f2d9 100644 --- a/DesignSpace/Workspace/Workspace.js +++ b/DesignSpace/Workspace/Workspace.js @@ -616,6 +616,11 @@ function newWorkspace() { functionLibraryTaskFunctions.addMissingExchangeDataTasks(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) } break + case 'Add Missing Market Data Tasks': + { + functionLibraryTaskFunctions.addMissingMarketDataTasks(payload.node, thisObject.workspaceNode.rootNodes, functionLibraryUiObjectsFromNodes) + } + break case 'Add Missing Crypto Exchanges': { functionLibraryCCXTFunctions.addMissingExchanges(payload.node, functionLibraryUiObjectsFromNodes)