function newFoundationsActionSwitch() { let thisObject = { executeAction: executeAction, initialize: initialize, finalize: finalize } return thisObject function finalize() { } function initialize() { /* Nothing to initialize since a Function Library does not hold any state. */ } async function executeAction(action) { switch (action.name) { case 'Get Node On Focus': { return UI.projects.visualScripting.functionLibraries.onFocus.getNodeThatIsOnFocus(action.node) } case 'Get Node By Shortcut Key': { return UI.projects.foundations.functionLibraries.shortcutKeys.getNodeByShortcutKey(action.node, action.extraParameter) } case 'Get Node Data Structure': { return UI.projects.visualScripting.functionLibraries.protocolNode.getProtocolNode(action.node, action.extraParameter, false, true, true, true) } case 'Create UI Object': { UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.createUiObjectFromNode(action.node, undefined, undefined, action.extraParameter) } break case 'Connect Children to Reference Parents': { UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.tryToConnectChildrenWithReferenceParents() } break case 'Get Node By Id': { return UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.getNodeById(action.relatedNodeId) } case 'Syncronize Tasks': { UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.syncronizeTasksFoundAtWorkspaceWithBackEnd() } break case 'Syncronize Trading Sessions': { UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.syncronizeTradingSessionsFoundAtWorkspaceWithBackEnd() } break case 'Syncronize Learning Sessions': { UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.syncronizeLearningSessionsFoundAtWorkspaceWithBackEnd() } break case 'Play Tutorials': { UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.playTutorials() } break case 'Recreate Workspace': { UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.recreateWorkspace(action.node, action.callBackFunction) } break case 'Delete Workspace': { return UI.projects.visualScripting.functionLibraries.nodeDeleter.deleteWorkspace(action.node, action.rootNodes, action.callBackFunction) } break case 'Copy Node Path': { let nodePath = UI.projects.visualScripting.functionLibraries.nodePath.getNodePath(action.node) UI.projects.foundations.utilities.clipboard.copyTextToClipboard(nodePath) UI.projects.foundations.spaces.cockpitSpace.setStatus( nodePath + ' copied to the Clipboard.' , 50, UI.projects.foundations.spaces.cockpitSpace.statusTypes.ALL_GOOD) } break case 'Copy Node Value': { let value = action.node.payload.uiObject.getValue() UI.projects.foundations.utilities.clipboard.copyTextToClipboard(value) UI.projects.foundations.spaces.cockpitSpace.setStatus( value + ' copied to the Clipboard.' , 50, UI.projects.foundations.spaces.cockpitSpace.statusTypes.ALL_GOOD) } break case 'Copy Node Type': { let value = action.node.type UI.projects.foundations.utilities.clipboard.copyTextToClipboard(value) UI.projects.foundations.spaces.cockpitSpace.setStatus( value + ' copied to the Clipboard.' , 50, UI.projects.foundations.spaces.cockpitSpace.statusTypes.ALL_GOOD) } break case 'Add UI Object': { UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject( action.node, action.relatedNodeType, action.rootNodes, action.relatedNodeProject ) } break case 'Add Missing Children': { UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addMissingChildren(action.node, action.rootNodes) } break case 'Delete UI Object': { UI.projects.visualScripting.functionLibraries.nodeDeleter.deleteUIObject(action.node, action.rootNodes) } break case 'Edit Code': break case 'Share': { let text = JSON.stringify( UI.projects.visualScripting.functionLibraries.protocolNode.getProtocolNode(action.node, true, false, true, true, true), undefined, 4 ) let nodeName = action.node.name if (nodeName === undefined) { nodeName = '' } else { nodeName = '.' + nodeName } let fileName = 'Share - ' + action.node.type + ' - ' + nodeName + '.json' UI.projects.foundations.utilities.download.downloadText(fileName, text) } break case 'Backup': { let text = JSON.stringify( UI.projects.visualScripting.functionLibraries.protocolNode.getProtocolNode(action.node, false, false, true, true, true), undefined, 4) let nodeName = action.node.name if (nodeName === undefined) { nodeName = '' } else { nodeName = ' ' + nodeName } let fileName = 'Backup - ' + action.node.type + ' - ' + nodeName + '.json' UI.projects.foundations.utilities.download.downloadText(fileName, text) } break case 'Clone': { let text = JSON.stringify( UI.projects.visualScripting.functionLibraries.nodeCloning.getNodeClone(action.node), undefined, 4 ) let nodeName = action.node.name if (nodeName === undefined) { nodeName = '' } else { nodeName = ' ' + nodeName } let fileName = 'Clone - ' + action.node.type + ' - ' + nodeName + '.json' UI.projects.foundations.utilities.download.downloadText(fileName, text) } break case 'Debug Task': { UI.projects.foundations.functionLibraries.taskFunctions.runTask(action.node, true, action.callBackFunction) } break case 'Run Task': { UI.projects.foundations.functionLibraries.taskFunctions.runTask(action.node, false, action.callBackFunction) } break case 'Stop Task': { UI.projects.foundations.functionLibraries.taskFunctions.stopTask(action.node, action.callBackFunction) } break case 'Run All Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllTasks(action.node) } break case 'Stop All Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllTasks(action.node) } break case 'Run All Task Managers': { UI.projects.foundations.functionLibraries.taskFunctions.runAllTaskManagers(action.node) } break case 'Stop All Task Managers': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllTaskManagers(action.node) } break case 'Run All Exchange Data Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllExchangeDataTasks(action.node) } break case 'Stop All Exchange Data Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllExchangeDataTasks(action.node) } break case 'Run All Exchange Trading Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllExchangeTradingTasks(action.node) } break case 'Stop All Exchange Trading Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllExchangeTradingTasks(action.node) } break case 'Run All Exchange Learning Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllExchangeLearningTasks(action.node) } break case 'Stop All Exchange Learning Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllExchangeLearningTasks(action.node) } break case 'Run All Project Data Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllProjectDataTasks(action.node) } break case 'Stop All Project Data Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllProjectDataTasks(action.node) } break case 'Run All Project Trading Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllProjectTradingTasks(action.node) } break case 'Stop All Project Trading Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllProjectTradingTasks(action.node) } break case 'Run All Project Learning Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllProjectLearningTasks(action.node) } break case 'Stop All Project Learning Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllProjectLearningTasks(action.node) } break case 'Run All Market Data Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllMarketDataTasks(action.node) } break case 'Stop All Market Data Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllMarketDataTasks(action.node) } break case 'Run All Market Trading Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllMarketTradingTasks(action.node) } break case 'Stop All Market Trading Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllMarketTradingTasks(action.node) } break case 'Run All Market Learning Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllMarketLearningTasks(action.node) } break case 'Stop All Market Learning Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllMarketLearningTasks(action.node) } break case 'Run All Data Mine Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllDataMineTasks(action.node) } break case 'Stop All Data Mine Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllDataMineTasks(action.node) } break case 'Run All Trading Mine Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllTradingMineTasks(action.node) } break case 'Stop All Trading Mine Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllTradingMineTasks(action.node) } break case 'Run All Learning Mine Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.runAllLearningMineTasks(action.node) } break case 'Stop All Learning Mine Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.stopAllLearningMineTasks(action.node) } break case 'Add Missing Project Data Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingProjectDataTasks(action.node, action.rootNodes) } break case 'Add Missing Exchange Data Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingExchangeDataTasks(action.node, action.rootNodes) } break case 'Add Missing Market Data Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingMarketDataTasks(action.node) } break case 'Add Missing Data Mine Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingDataMineTasks(action.node, action.rootNodes) } break case 'Add Missing Project Trading Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingProjectTradingTasks(action.node, action.rootNodes) } break case 'Add Missing Exchange Trading Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingExchangeTradingTasks(action.node, action.rootNodes) } break case 'Add Missing Market Trading Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingMarketTradingTasks(action.node) } break case 'Add Missing Trading Mine Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingTradingMineTasks(action.node, action.rootNodes) } break case 'Add Missing Project Learning Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingProjectLearningTasks(action.node, action.rootNodes) } break case 'Add Missing Exchange Learning Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingExchangeLearningTasks(action.node, action.rootNodes) } break case 'Add Missing Market Learning Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingMarketLearningTasks(action.node) } break case 'Add Missing Learning Mine Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addMissingLearningMineTasks(action.node, action.rootNodes) } break case 'Add All Tasks': { UI.projects.foundations.functionLibraries.taskFunctions.addAllTasks(action.node, action.rootNodes) } break case 'Add Missing Crypto Exchanges': { UI.projects.foundations.functionLibraries.cryptoEcosystemFunctions.addMissingExchanges(action.node) } break case 'Add Missing Assets': { UI.projects.foundations.functionLibraries.cryptoEcosystemFunctions.addMissingAssets(action.node) } break case 'Add Missing Markets': { UI.projects.foundations.functionLibraries.cryptoEcosystemFunctions.addMissingMarkets(action.node) } break case 'Install Market': { UI.projects.foundations.functionLibraries.cryptoEcosystemFunctions.installMarket(action.node, action.rootNodes) } break case 'Uninstall Market': { UI.projects.foundations.functionLibraries.cryptoEcosystemFunctions.uninstallMarket(action.node, action.rootNodes) } break case 'Add All Data Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addAllDataProducts(action.node) } break case 'Add All Data Mine Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addAllDataMineProducts(action.node, action.rootNodes) } break case 'Add All Learning Mine Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addAllLearningMineProducts(action.node, action.rootNodes) } break case 'Add All Trading Mine Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addAllTradingMineProducts(action.node, action.rootNodes) } break case 'Add Missing Trading Session References': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingTradingSessionReferences(action.node, action.rootNodes) } break case 'Add Missing Learning Session References': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingLearningSessionReferences(action.node, action.rootNodes) } break case 'Add Missing Market Data Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingMarketDataProducts(action.node, action.rootNodes) } break case 'Add Missing Market Trading Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingMarketTradingProducts(action.node, action.rootNodes) } break case 'Add Missing Market Learning Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingMarketLearningProducts(action.node, action.rootNodes) } break case 'Add Missing Exchange Learning Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingExchangeLearningProducts(action.node, action.rootNodes) } break case 'Add Missing Exchange Trading Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingExchangeTradingProducts(action.node, action.rootNodes) } break case 'Add Missing Exchange Data Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingExchangeDataProducts(action.node, action.rootNodes) } break case 'Add Missing Project Learning Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingProjectLearningProducts(action.node, action.rootNodes) } break case 'Add Missing Project Trading Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingProjectTradingProducts(action.node, action.rootNodes) } break case 'Add Missing Project Data Products': { UI.projects.foundations.functionLibraries.dataStorageFunctions.addMissingProjectDataProducts(action.node, action.rootNodes) } break case 'Add All Layer Panels': { UI.projects.foundations.functionLibraries.chartingSpaceFunctions.addAllLayerPanels(action.node) } break case 'Add All Layer Polygons': { UI.projects.foundations.functionLibraries.chartingSpaceFunctions.addAllLayerPolygons(action.node) } break case 'Add All Mine Layers': { UI.projects.foundations.functionLibraries.chartingSpaceFunctions.addAllMineLayers(action.node, action.rootNodes) } break case 'Add Missing Time Machines': { UI.projects.foundations.functionLibraries.chartingSpaceFunctions.addMissingTimeMachines(action.node, action.rootNodes) } break case 'Add Missing Dashboards': { UI.projects.foundations.functionLibraries.chartingSpaceFunctions.addMissingDashboards(action.node, action.rootNodes) } break case 'Add Missing Project Dashboards': { UI.projects.foundations.functionLibraries.chartingSpaceFunctions.addMissingProjectDashboards(action.node, action.rootNodes) } break case 'Send Webhook Test Message': { UI.projects.foundations.functionLibraries.webhookFunctions.sendTestMessage(action.node, action.callBackFunction) } break case 'Run Super Action': { UI.projects.foundations.functionLibraries.superScriptsFunctions.runSuperScript(action.node, action.rootNodes) } break case 'Parent Attach': { UI.projects.visualScripting.functionLibraries.chainAttachDetach.chainAttachNode(action.node, action.relatedNode, action.rootNodes) } break case 'Reference Attach': { UI.projects.visualScripting.functionLibraries.attachDetach.referenceAttachNode(action.node, action.relatedNode, action.rootNodes) } break case 'Parent Detach': { UI.projects.visualScripting.functionLibraries.chainAttachDetach.chainDetachNode(action.node, action.rootNodes) } break case 'Reference Detach': { UI.projects.visualScripting.functionLibraries.attachDetach.referenceDetachNode(action.node) } break case 'Push Code to Javascript Code': { action.node.javascriptCode.code = action.node.code } break case 'Fetch Code to Javascript Code': { action.node.code = action.node.javascriptCode.code } break case 'Open Documentation': { let docs = UI.projects.foundations.utilities.nodeConfig.loadConfigProperty(action.node.payload, 'docs') if (docs === undefined) { let definition = getSchemaDocument(action.node) if (definition !== undefined) { UI.projects.education.spaces.docsSpace.openSpaceAreaAndNavigateTo(action.node.project, 'Node', action.node.type) } } else { UI.projects.education.spaces.docsSpace.openSpaceAreaAndNavigateTo(docs.project, docs.category, docs.type, docs.anchor, docs.nodeId, docs.placeholder) } } break case 'Add Missing Workspace Projects': { UI.projects.foundations.functionLibraries.workspaceFunctions.addMissingWorkspaceProjects(action.node, action.rootNodes) } break case 'Check For Missing References': { UI.projects.foundations.functionLibraries.workspaceFunctions.checkForMissingReferences(action.rootNodes) } break case 'Switch To Forward Testing': { action.node.type = "Forward Testing Session" UI.projects.foundations.spaces.floatingSpace.uiObjectConstructor.createUiObject(true, action.node.payload) } break case 'Switch To Live Trading': { action.node.type = "Live Trading Session" UI.projects.foundations.spaces.floatingSpace.uiObjectConstructor.createUiObject(true, action.node.payload) } break case 'Switch To Paper Trading': { action.node.type = "Paper Trading Session" UI.projects.foundations.spaces.floatingSpace.uiObjectConstructor.createUiObject(true, action.node.payload) } break case 'Switch To Backtesting': { action.node.type = "Backtesting Session" UI.projects.foundations.spaces.floatingSpace.uiObjectConstructor.createUiObject(true, action.node.payload) } break case 'Save node to be moved': { UI.projects.foundations.spaces.floatingSpace.saveFloatingObjectToBeMoved() } break case 'Snap saved node to position': { UI.projects.foundations.spaces.floatingSpace.moveFloatingObject(action.node.payload.position) } break } } }