Beta 6 SP4 RC 1
No files matched your search
@@ -1,11 +1,12 @@
|
||||
function getNodeDefinition(node) {
|
||||
let APP_SCHEMA = SCHEMAS_BY_PROJECT.get(node.project)
|
||||
function getNodeDefinition(node, project) {
|
||||
if (project === undefined) { project = node.project }
|
||||
|
||||
let APP_SCHEMA = SCHEMAS_BY_PROJECT.get(project)
|
||||
if (APP_SCHEMA !== undefined) {
|
||||
return SCHEMAS_BY_PROJECT.get(node.project).map.appSchema.get(node.type)
|
||||
return SCHEMAS_BY_PROJECT.get(project).map.appSchema.get(node.type)
|
||||
} else {
|
||||
console.log('[Error] Could not get APP Scchema for project ' + node.project)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function dynamicDecimals(value, minDecimals) {
|
||||
|
||||
@@ -13,6 +13,15 @@
|
||||
"label": "Add Decentralized Application",
|
||||
"relatedUiObject": "Decentralized Application",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"actionFunction": "payload.executeAction",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete"
|
||||
}
|
||||
],
|
||||
"isProjectHead": true,
|
||||
|
||||
@@ -26,6 +26,7 @@ function newSuperalgosActionSwitch() {
|
||||
let functionLibraryDataStorageFunctions = newDataStorageFunctions()
|
||||
let functionLibraryChartingSpaceFunctions = newChartingSpaceFunctions()
|
||||
let functionLibraryPluginsFunctions = newPluginsFunctions()
|
||||
let functionLibraryWorkspaceFunctions = newWorkspaceFunctions()
|
||||
|
||||
return thisObject
|
||||
|
||||
@@ -50,6 +51,7 @@ function newSuperalgosActionSwitch() {
|
||||
functionLibraryDataStorageFunctions = undefined
|
||||
functionLibraryChartingSpaceFunctions = undefined
|
||||
functionLibraryPluginsFunctions = undefined
|
||||
functionLibraryWorkspaceFunctions = undefined
|
||||
}
|
||||
|
||||
function initialize() {
|
||||
@@ -467,6 +469,16 @@ function newSuperalgosActionSwitch() {
|
||||
functionLibraryMineFunctions.addAllDataMineDataDependencies(action.node, action.rootNodes, functionLibraryUiObjectsFromNodes)
|
||||
}
|
||||
break
|
||||
case 'Add All Layer Panels':
|
||||
{
|
||||
functionLibraryChartingSpaceFunctions.addAllLayerPanels(action.node, functionLibraryUiObjectsFromNodes)
|
||||
}
|
||||
break
|
||||
case 'Add All Layer Polygons':
|
||||
{
|
||||
functionLibraryChartingSpaceFunctions.addAllLayerPolygons(action.node, functionLibraryUiObjectsFromNodes)
|
||||
}
|
||||
break
|
||||
case 'Add All Mine Layers':
|
||||
{
|
||||
functionLibraryChartingSpaceFunctions.addAllMineLayers(action.node, action.rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
@@ -639,6 +651,11 @@ function newSuperalgosActionSwitch() {
|
||||
functionLibraryPluginsFunctions.pluginMissingTutorials(action.node, action.rootNodes, functionLibraryUiObjectsFromNodes)
|
||||
}
|
||||
break
|
||||
case 'Add Missing Workspace Projects':
|
||||
{
|
||||
functionLibraryWorkspaceFunctions.addMissingWorkspaceProjects(action.node, action.rootNodes, functionLibraryUiObjectsFromNodes)
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
function newChartingSpaceFunctions() {
|
||||
thisObject = {
|
||||
addAllLayerPanels: addAllLayerPanels,
|
||||
addAllLayerPolygons: addAllLayerPolygons,
|
||||
addAllMineLayers: addAllMineLayers,
|
||||
addMissingDashboards: addMissingDashboards,
|
||||
addMissingTimeMachines: addMissingTimeMachines,
|
||||
@@ -62,6 +64,28 @@ function newChartingSpaceFunctions() {
|
||||
functionLibraryNodeDeleter.deleteUIObject(layer, rootNodes)
|
||||
}
|
||||
}
|
||||
/*
|
||||
For each of the layers we will not create the Layer Panels and Layer Polygons.
|
||||
*/
|
||||
allLayers = UI.projects.superalgos.utilities.branches.nodeBranchToArray(botLayers, 'Layer')
|
||||
for (let j = 0; j < allLayers.length; j++) {
|
||||
let layer = allLayers[j]
|
||||
let menu = layer.payload.uiObject.menu
|
||||
menu.internalClick('Add Missing Children')
|
||||
|
||||
layer.layerPanels.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
layer.layerPolygons.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
|
||||
menu = layer.layerPanels.payload.uiObject.menu
|
||||
menu.internalClick('Add All Layer Panels')
|
||||
|
||||
menu = layer.layerPolygons.payload.uiObject.menu
|
||||
menu.internalClick('Add All Layer Polygons')
|
||||
|
||||
layer.layerPanels.payload.floatingObject.collapseToggle()
|
||||
layer.layerPolygons.payload.floatingObject.collapseToggle()
|
||||
layer.payload.floatingObject.collapseToggle()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -280,4 +304,77 @@ function newChartingSpaceFunctions() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function addAllLayerPanels(node, functionLibraryUiObjectsFromNodes) {
|
||||
if (validateReferences(node) !== true) { return }
|
||||
let layerNode = node.payload.parentNode
|
||||
|
||||
let plotterModule = layerNode.payload.referenceParent.payload.referenceParent.payload.referenceParent
|
||||
for (let i = 0; i < plotterModule.panels.length; i++) {
|
||||
let plotterPanel = plotterModule.panels[i]
|
||||
let layerPanel = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Layer Panel')
|
||||
layerPanel.payload.referenceParent = plotterPanel
|
||||
}
|
||||
}
|
||||
|
||||
function addAllLayerPolygons(node, functionLibraryUiObjectsFromNodes) {
|
||||
if (validateReferences(node) !== true) { return }
|
||||
let layerNode = node.payload.parentNode
|
||||
|
||||
let plotterModule = layerNode.payload.referenceParent.payload.referenceParent.payload.referenceParent
|
||||
|
||||
if (plotterModule.shapes === undefined) {
|
||||
node.payload.uiObject.setWarningMessage('Referenced Plotter Module does not have a Shapes child.')
|
||||
return
|
||||
}
|
||||
|
||||
for (let i = 0; i < plotterModule.shapes.polygons.length; i++) {
|
||||
let polygon = plotterModule.shapes.polygons[i]
|
||||
let layerPolygon = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Layer Polygon')
|
||||
layerPolygon.payload.referenceParent = polygon
|
||||
}
|
||||
}
|
||||
|
||||
function validateReferences(node) {
|
||||
/* Validations to see if we can do this or not. */
|
||||
if (node.payload === undefined) { return }
|
||||
if (node.payload.uiObject === undefined) { return }
|
||||
|
||||
if (node.payload.parentNode === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('You need to have a Layer node as a parent to execute this action.')
|
||||
return
|
||||
}
|
||||
if (node.payload.parentNode.payload === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('You need to have a Layer node as a parent to execute this action.')
|
||||
return
|
||||
}
|
||||
let layerNode = node.payload.parentNode
|
||||
|
||||
if (layerNode.payload.referenceParent === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('The Layer node needs to have a reference parent node to execute this action.')
|
||||
return
|
||||
}
|
||||
if (layerNode.payload.referenceParent.payload === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('The Layer node needs to have a reference parent node to execute this action.')
|
||||
return
|
||||
}
|
||||
if (layerNode.payload.referenceParent.payload.referenceParent === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('The Layer node needs to have a reference grand parent node to execute this action.')
|
||||
return
|
||||
}
|
||||
if (layerNode.payload.referenceParent.payload.referenceParent.payload === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('The Layer node needs to have a reference grand parent node to execute this action.')
|
||||
return
|
||||
}
|
||||
if (layerNode.payload.referenceParent.payload.referenceParent.payload.referenceParent === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('The Layer node to have a reference grand grand parent node to execute this action.')
|
||||
return
|
||||
}
|
||||
if (layerNode.payload.referenceParent.payload.referenceParent.payload.referenceParent.payload === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('The Layer node to have a reference grand grand parent node to execute this action.')
|
||||
return
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
}
|
||||
@@ -227,244 +227,296 @@ function newCryptoEcosystemFunctions() {
|
||||
node.payload.uiObject.setErrorMessage('Market must be a descendant of a Crypto Exchange')
|
||||
return
|
||||
}
|
||||
let dashboardsArray = []
|
||||
node.payload.uiObject.setInfoMessage('This market is being installed. This might take a minute or two. Please hold one while we connect all the dots for you. ')
|
||||
|
||||
for (let i = 0; i < rootNodes.length; i++) {
|
||||
let rootNode = rootNodes[i]
|
||||
if (rootNode.type === 'Network') {
|
||||
installInNetwork(rootNode)
|
||||
}
|
||||
}
|
||||
setTimeout(installMarketProcedure, 500)
|
||||
|
||||
for (let i = 0; i < rootNodes.length; i++) {
|
||||
let rootNode = rootNodes[i]
|
||||
if (rootNode.type === 'Charting Space') {
|
||||
installInChartingSpace(rootNode)
|
||||
}
|
||||
}
|
||||
function installMarketProcedure() {
|
||||
let dashboardsArray = []
|
||||
|
||||
function installInNetwork(network) {
|
||||
|
||||
for (let j = 0; j < network.networkNodes.length; j++) {
|
||||
let networkNode = network.networkNodes[j]
|
||||
installInNetworkNode(networkNode)
|
||||
for (let i = 0; i < rootNodes.length; i++) {
|
||||
let rootNode = rootNodes[i]
|
||||
if (rootNode.type === 'Network') {
|
||||
installInNetwork(rootNode)
|
||||
}
|
||||
}
|
||||
|
||||
function installInNetworkNode(networkNode) {
|
||||
for (let i = 0; i < rootNodes.length; i++) {
|
||||
let rootNode = rootNodes[i]
|
||||
if (rootNode.type === 'Charting Space') {
|
||||
installInChartingSpace(rootNode)
|
||||
}
|
||||
}
|
||||
|
||||
let tradingSessionsCreatedArray = []
|
||||
let learningSessionsCreatedArray = []
|
||||
node.payload.uiObject.setInfoMessage('Market installation is complete.')
|
||||
|
||||
installDataMiningTasks()
|
||||
installLearningMiningTasks()
|
||||
isntallTradingMiningTasks()
|
||||
function installInNetwork(network) {
|
||||
|
||||
installDataMinesData()
|
||||
installLearningMinesData()
|
||||
installTradingMineData()
|
||||
|
||||
function installDataMiningTasks() {
|
||||
/*
|
||||
Here we complete the missing stuff at Data Mining
|
||||
*/
|
||||
let dataMining = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, 'Data Mining', node, true)
|
||||
if (dataMining === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('Data Mining node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
}
|
||||
|
||||
let exchangeDataTasks = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(dataMining, 'Exchange Data Tasks', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeDataTasks.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketDataTask = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeDataTasks, 'Market Data Tasks', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
|
||||
UI.projects.superalgos.utilities.menu.menuClick(marketDataTask, 'Add Missing Data Mine Tasks', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(marketDataTask.dataMineTasks, 'Add All Tasks', true)
|
||||
for (let j = 0; j < network.networkNodes.length; j++) {
|
||||
let networkNode = network.networkNodes[j]
|
||||
installInNetworkNode(networkNode)
|
||||
}
|
||||
|
||||
function installLearningMiningTasks() {
|
||||
/*
|
||||
Here we complete the missing stuff at Learning Mining
|
||||
*/
|
||||
let learningMining = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, 'Learning Mining', node, true)
|
||||
if (learningMining === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('Learning Mining node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
}
|
||||
function installInNetworkNode(networkNode) {
|
||||
|
||||
let exchangeLearningTasks = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(learningMining, 'Exchange Learning Tasks', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeLearningTasks.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketLearningTask = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeLearningTasks, 'Market Learning Tasks', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
let tradingSessionsCreatedArray = []
|
||||
let learningSessionsCreatedArray = []
|
||||
|
||||
UI.projects.superalgos.utilities.menu.menuClick(marketLearningTask, 'Add Missing Learning Mine Tasks', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(marketLearningTask.learningMineTasks, 'Add All Tasks', true)
|
||||
installDataMiningTasks()
|
||||
installLearningMiningTasks()
|
||||
isntallTradingMiningTasks()
|
||||
|
||||
/* This will be needed at the charting space, for creating Dashboards */
|
||||
let learningSessionsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(marketLearningTask, 'Learning Session')
|
||||
learningSessionsCreatedArray = learningSessionsCreatedArray.concat(learningSessionsArray)
|
||||
}
|
||||
installDataMinesData()
|
||||
installLearningMinesData()
|
||||
installTradingMineData()
|
||||
|
||||
function isntallTradingMiningTasks() {
|
||||
/*
|
||||
Next we complete the missing stuff at Testing Environment
|
||||
*/
|
||||
installEnvironment('Testing Environment')
|
||||
/*
|
||||
Next we complete the missing stuff at Production Environment
|
||||
*/
|
||||
installEnvironment('Production Environment')
|
||||
|
||||
function installEnvironment(environment) {
|
||||
function installDataMiningTasks() {
|
||||
/*
|
||||
Now we install the environmnet at the current Network Node
|
||||
Here we complete the missing stuff at Data Mining
|
||||
*/
|
||||
let environmentFound = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, environment, node, true)
|
||||
if (environmentFound === undefined) {
|
||||
node.payload.uiObject.setErrorMessage(environment + ' node not found at Network Node ' + networkNode.name)
|
||||
let dataMining = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, 'Data Mining', node, true)
|
||||
if (dataMining === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('Data Mining node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
}
|
||||
|
||||
let exchangeTradingTasks = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(environmentFound, 'Exchange Trading Tasks', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeTradingTasks.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketTradingTask = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeTradingTasks, 'Market Trading Tasks', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
let exchangeDataTasks = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(dataMining, 'Exchange Data Tasks', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeDataTasks.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketDataTask = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeDataTasks, 'Market Data Tasks', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
|
||||
UI.projects.superalgos.utilities.menu.menuClick(marketTradingTask, 'Add Missing Trading Mine Tasks', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(marketTradingTask.tradingMineTasks, 'Add All Tasks', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClick(marketDataTask, 'Add Missing Data Mine Tasks', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(marketDataTask.dataMineTasks, 'Add All Tasks', true)
|
||||
}
|
||||
|
||||
function installLearningMiningTasks() {
|
||||
/*
|
||||
Here we complete the missing stuff at Learning Mining
|
||||
*/
|
||||
let learningMining = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, 'Learning Mining', node, true)
|
||||
if (learningMining === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('Learning Mining node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
}
|
||||
|
||||
let exchangeLearningTasks = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(learningMining, 'Exchange Learning Tasks', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeLearningTasks.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketLearningTask = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeLearningTasks, 'Market Learning Tasks', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
|
||||
UI.projects.superalgos.utilities.menu.menuClick(marketLearningTask, 'Add Missing Learning Mine Tasks', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(marketLearningTask.learningMineTasks, 'Add All Tasks', true)
|
||||
|
||||
/* This will be needed at the charting space, for creating Dashboards */
|
||||
let backtestingSessionsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(marketTradingTask, 'Backtesting Session')
|
||||
let liveTradingSessionsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(marketTradingTask, 'Live Trading Session')
|
||||
let paperTradingSessionsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(marketTradingTask, 'Paper Trading Session')
|
||||
let forwardSessionsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(marketTradingTask, 'Forward Testing Session')
|
||||
let allSessionsArray = backtestingSessionsArray
|
||||
.concat(liveTradingSessionsArray)
|
||||
.concat(paperTradingSessionsArray)
|
||||
.concat(forwardSessionsArray)
|
||||
tradingSessionsCreatedArray = tradingSessionsCreatedArray.concat(allSessionsArray)
|
||||
let learningSessionsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(marketLearningTask, 'Learning Session')
|
||||
learningSessionsCreatedArray = learningSessionsCreatedArray.concat(learningSessionsArray)
|
||||
}
|
||||
|
||||
dashboardsArray.push({ environmentNode: environmentFound, networkNode: networkNode, sessionsArray: allSessionsArray })
|
||||
function isntallTradingMiningTasks() {
|
||||
/*
|
||||
Next we complete the missing stuff at Testing Environment
|
||||
*/
|
||||
installEnvironment('Testing Environment')
|
||||
/*
|
||||
Next we complete the missing stuff at Production Environment
|
||||
*/
|
||||
installEnvironment('Production Environment')
|
||||
|
||||
function installEnvironment(environment) {
|
||||
/*
|
||||
Now we install the environmnet at the current Network Node
|
||||
*/
|
||||
let environmentFound = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, environment, node, true)
|
||||
if (environmentFound === undefined) {
|
||||
node.payload.uiObject.setErrorMessage(environment + ' node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
}
|
||||
|
||||
let exchangeTradingTasks = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(environmentFound, 'Exchange Trading Tasks', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeTradingTasks.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketTradingTask = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeTradingTasks, 'Market Trading Tasks', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
|
||||
UI.projects.superalgos.utilities.menu.menuClick(marketTradingTask, 'Add Missing Trading Mine Tasks', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(marketTradingTask.tradingMineTasks, 'Add All Tasks', true)
|
||||
|
||||
/* This will be needed at the charting space, for creating Dashboards */
|
||||
let backtestingSessionsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(marketTradingTask, 'Backtesting Session')
|
||||
let liveTradingSessionsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(marketTradingTask, 'Live Trading Session')
|
||||
let paperTradingSessionsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(marketTradingTask, 'Paper Trading Session')
|
||||
let forwardSessionsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(marketTradingTask, 'Forward Testing Session')
|
||||
let allSessionsArray = backtestingSessionsArray
|
||||
.concat(liveTradingSessionsArray)
|
||||
.concat(paperTradingSessionsArray)
|
||||
.concat(forwardSessionsArray)
|
||||
tradingSessionsCreatedArray = tradingSessionsCreatedArray.concat(allSessionsArray)
|
||||
|
||||
dashboardsArray.push({ environmentNode: environmentFound, networkNode: networkNode, sessionsArray: allSessionsArray })
|
||||
}
|
||||
}
|
||||
|
||||
function installDataMinesData() {
|
||||
/*
|
||||
Here we complete the missing stuff at Data Mines Data
|
||||
*/
|
||||
let dataMinesData = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, 'Data Mines Data', node, true)
|
||||
if (dataMinesData === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('Data Mines Data node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
}
|
||||
|
||||
let exchangeDataProducts = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(dataMinesData, 'Exchange Data Products', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeDataProducts.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketDataProducts = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeDataProducts, 'Market Data Products', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
marketDataProducts.payload.floatingObject.collapseToggle()
|
||||
|
||||
UI.projects.superalgos.utilities.menu.menuClick(marketDataProducts, 'Add All Data Mine Products', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(marketDataProducts.dataMineProducts, 'Add All Data Products', true)
|
||||
}
|
||||
|
||||
function installLearningMinesData() {
|
||||
/*
|
||||
Here we complete the missing stuff at Learning Mines Data
|
||||
*/
|
||||
let learningMinesData = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, 'Learning Mines Data', node, true)
|
||||
if (learningMinesData === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('Learning Mines Data node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
}
|
||||
|
||||
let exchangeLearningProducts = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(learningMinesData, 'Exchange Learning Products', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeLearningProducts.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketLearningProducts = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeLearningProducts, 'Market Learning Products', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
marketLearningProducts.payload.floatingObject.collapseToggle()
|
||||
/*
|
||||
Create the new session references.
|
||||
*/
|
||||
for (let i = 0; i < learningSessionsCreatedArray.length; i++) {
|
||||
let session = learningSessionsCreatedArray[i]
|
||||
if (UI.projects.superalgos.utilities.children.isMissingChildren(marketLearningProducts, session, true) === true) {
|
||||
functionLibraryDataStorageFunctions.createSessionReference(marketLearningProducts, session, 'Learning Session Reference', functionLibraryUiObjectsFromNodes)
|
||||
}
|
||||
}
|
||||
/*
|
||||
Create everything inside the session references.
|
||||
*/
|
||||
for (let j = 0; j < marketLearningProducts.learningSessionReferences.length; j++) {
|
||||
let sessionReference = marketLearningProducts.learningSessionReferences[j]
|
||||
UI.projects.superalgos.utilities.menu.menuClick(sessionReference, 'Add All Learning Mine Products', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(sessionReference.learningMineProducts, 'Add All Data Products', true)
|
||||
sessionReference.payload.floatingObject.collapseToggle()
|
||||
}
|
||||
}
|
||||
|
||||
function installTradingMineData() {
|
||||
/*
|
||||
Finally we complete the missing stuff at Trading Mines Data
|
||||
*/
|
||||
let tradingMinesData = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, 'Trading Mines Data', node, true)
|
||||
if (tradingMinesData === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('Trading Mines Data node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
}
|
||||
|
||||
let exchangeTradingProducts = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(tradingMinesData, 'Exchange Trading Products', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeTradingProducts.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketTradingProducts = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeTradingProducts, 'Market Trading Products', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
marketTradingProducts.payload.floatingObject.collapseToggle()
|
||||
/*
|
||||
Create the new session references.
|
||||
*/
|
||||
for (let i = 0; i < tradingSessionsCreatedArray.length; i++) {
|
||||
let session = tradingSessionsCreatedArray[i]
|
||||
if (UI.projects.superalgos.utilities.children.isMissingChildren(marketTradingProducts, session, true) === true) {
|
||||
functionLibraryDataStorageFunctions.createSessionReference(marketTradingProducts, session, 'Trading Session Reference', functionLibraryUiObjectsFromNodes)
|
||||
}
|
||||
}
|
||||
/*
|
||||
Create everything inside the session references.
|
||||
*/
|
||||
for (let j = 0; j < marketTradingProducts.tradingSessionReferences.length; j++) {
|
||||
let sessionReference = marketTradingProducts.tradingSessionReferences[j]
|
||||
UI.projects.superalgos.utilities.menu.menuClick(sessionReference, 'Add All Trading Mine Products', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(sessionReference.tradingMineProducts, 'Add All Data Products', true)
|
||||
sessionReference.payload.floatingObject.collapseToggle()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function installDataMinesData() {
|
||||
function installInChartingSpace(chartingSpace) {
|
||||
|
||||
for (let i = 0; i < dashboardsArray.length; i++) {
|
||||
/*
|
||||
Here we complete the missing stuff at Data Mines Data
|
||||
If the Dashboard we need is not already there we create a new one.
|
||||
*/
|
||||
let dataMinesData = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, 'Data Mines Data', node, true)
|
||||
if (dataMinesData === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('Data Mines Data node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
let arrayItem = dashboardsArray[i]
|
||||
let dashboard = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(chartingSpace, 'Dashboard', arrayItem.environmentNode, functionLibraryUiObjectsFromNodes)
|
||||
dashboard.name = arrayItem.environmentNode.type + ' ' + arrayItem.networkNode.name
|
||||
/*
|
||||
We delete all the existing Time Machines related to the market we are currently installing.
|
||||
For that, we make a new array with the existing Time Machines so that the deleting
|
||||
of each node does not affect the proccessing of the whole set.
|
||||
*/
|
||||
let timeMachines = []
|
||||
for (let i = 0; i < dashboard.timeMachines.length; i++) {
|
||||
let timeMachine = dashboard.timeMachines[i]
|
||||
timeMachines.push(timeMachine)
|
||||
}
|
||||
|
||||
let exchangeDataProducts = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(dataMinesData, 'Exchange Data Products', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeDataProducts.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketDataProducts = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeDataProducts, 'Market Data Products', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
marketDataProducts.payload.floatingObject.collapseToggle()
|
||||
|
||||
UI.projects.superalgos.utilities.menu.menuClick(marketDataProducts, 'Add All Data Mine Products', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(marketDataProducts.dataMineProducts, 'Add All Data Products', true)
|
||||
}
|
||||
|
||||
function installLearningMinesData() {
|
||||
/*
|
||||
Here we complete the missing stuff at Learning Mines Data
|
||||
*/
|
||||
let learningMinesData = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, 'Learning Mines Data', node, true)
|
||||
if (learningMinesData === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('Learning Mines Data node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
}
|
||||
|
||||
let exchangeLearningProducts = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(learningMinesData, 'Exchange Learning Products', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeLearningProducts.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketLearningProducts = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeLearningProducts, 'Market Learning Products', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
marketLearningProducts.payload.floatingObject.collapseToggle()
|
||||
/*
|
||||
Create the new session references.
|
||||
*/
|
||||
for (let i = 0; i < learningSessionsCreatedArray.length; i++) {
|
||||
let session = learningSessionsCreatedArray[i]
|
||||
if (UI.projects.superalgos.utilities.children.isMissingChildren(marketLearningProducts, session, true) === true) {
|
||||
functionLibraryDataStorageFunctions.createSessionReference(marketLearningProducts, session, 'Learning Session Reference', functionLibraryUiObjectsFromNodes)
|
||||
for (let i = 0; i < timeMachines.length; i++) {
|
||||
let timeMachine = timeMachines[i]
|
||||
let session = timeMachine.payload.referenceParent
|
||||
if (session === undefined || session.cleaned === true) {
|
||||
/*
|
||||
This is what usually happens, that the intall process make these
|
||||
time machines to lose their reference parent since the install
|
||||
process deletes them.
|
||||
*/
|
||||
functionLibraryNodeDeleter.deleteUIObject(timeMachine, rootNodes)
|
||||
continue
|
||||
}
|
||||
let marketTradingTasks = UI.projects.superalgos.utilities.meshes.findNodeInNodeMesh(session, 'Market Trading Tasks', undefined, true, false, true, false)
|
||||
if (marketTradingTasks === undefined) { continue }
|
||||
if (marketTradingTasks.payload === undefined) { continue }
|
||||
if (marketTradingTasks.payload.referenceParent === undefined) { continue }
|
||||
if (marketTradingTasks.payload.referenceParent.id === market.id) {
|
||||
functionLibraryNodeDeleter.deleteUIObject(timeMachine, rootNodes)
|
||||
}
|
||||
}
|
||||
/*
|
||||
Create everything inside the session references.
|
||||
We create a time machine for each session added during the previous processing.
|
||||
*/
|
||||
for (let j = 0; j < marketLearningProducts.learningSessionReferences.length; j++) {
|
||||
let sessionReference = marketLearningProducts.learningSessionReferences[j]
|
||||
UI.projects.superalgos.utilities.menu.menuClick(sessionReference, 'Add All Learning Mine Products', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(sessionReference.learningMineProducts, 'Add All Data Products', true)
|
||||
sessionReference.payload.floatingObject.collapseToggle()
|
||||
}
|
||||
}
|
||||
|
||||
function installTradingMineData() {
|
||||
/*
|
||||
Finally we complete the missing stuff at Trading Mines Data
|
||||
*/
|
||||
let tradingMinesData = UI.projects.superalgos.utilities.branches.findInBranch(networkNode, 'Trading Mines Data', node, true)
|
||||
if (tradingMinesData === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('Trading Mines Data node not found at Network Node ' + networkNode.name)
|
||||
return
|
||||
}
|
||||
|
||||
let exchangeTradingProducts = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(tradingMinesData, 'Exchange Trading Products', cryptoExchange, functionLibraryUiObjectsFromNodes)
|
||||
exchangeTradingProducts.payload.floatingObject.angleToParent = ANGLE_TO_PARENT.RANGE_180
|
||||
let marketTradingProducts = UI.projects.superalgos.utilities.children.findAndRecreateChildWithReference(exchangeTradingProducts, 'Market Trading Products', market, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
marketTradingProducts.payload.floatingObject.collapseToggle()
|
||||
/*
|
||||
Create the new session references.
|
||||
*/
|
||||
for (let i = 0; i < tradingSessionsCreatedArray.length; i++) {
|
||||
let session = tradingSessionsCreatedArray[i]
|
||||
if (UI.projects.superalgos.utilities.children.isMissingChildren(marketTradingProducts, session, true) === true) {
|
||||
functionLibraryDataStorageFunctions.createSessionReference(marketTradingProducts, session, 'Trading Session Reference', functionLibraryUiObjectsFromNodes)
|
||||
}
|
||||
}
|
||||
/*
|
||||
Create everything inside the session references.
|
||||
*/
|
||||
for (let j = 0; j < marketTradingProducts.tradingSessionReferences.length; j++) {
|
||||
let sessionReference = marketTradingProducts.tradingSessionReferences[j]
|
||||
UI.projects.superalgos.utilities.menu.menuClick(sessionReference, 'Add All Trading Mine Products', true)
|
||||
UI.projects.superalgos.utilities.menu.menuClickOfNodeArray(sessionReference.tradingMineProducts, 'Add All Data Products', true)
|
||||
sessionReference.payload.floatingObject.collapseToggle()
|
||||
for (let j = 0; j < arrayItem.sessionsArray.length; j++) {
|
||||
let session = arrayItem.sessionsArray[j]
|
||||
functionLibraryChartingSpaceFunctions.createTimeMachine(dashboard, session, node, arrayItem.networkNode, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function installInChartingSpace(chartingSpace) {
|
||||
function uninstallMarket(node, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter, functionLibraryChartingSpaceFunctions, functionLibraryDataStorageFunctions) {
|
||||
|
||||
for (let i = 0; i < dashboardsArray.length; i++) {
|
||||
/*
|
||||
If the Dashboard we need is not already there we create a new one.
|
||||
*/
|
||||
let arrayItem = dashboardsArray[i]
|
||||
let dashboard = UI.projects.superalgos.utilities.children.findOrCreateChildWithReference(chartingSpace, 'Dashboard', arrayItem.environmentNode, functionLibraryUiObjectsFromNodes)
|
||||
dashboard.name = arrayItem.environmentNode.type + ' ' + arrayItem.networkNode.name
|
||||
/*
|
||||
We delete all the existing Time Machines related to the market we are currently installing.
|
||||
For that, we make a new array with the existing Time Machines so that the deleting
|
||||
of each node does not affect the proccessing of the whole set.
|
||||
*/
|
||||
let timeMachines = []
|
||||
for (let i = 0; i < dashboard.timeMachines.length; i++) {
|
||||
let timeMachine = dashboard.timeMachines[i]
|
||||
timeMachines.push(timeMachine)
|
||||
node.payload.uiObject.setInfoMessage('This market is being uninstalled. Please hold on that it might take a while.')
|
||||
|
||||
setTimeout(uninstallMarketProcedure, 500)
|
||||
|
||||
function uninstallMarketProcedure() {
|
||||
let market = node
|
||||
for (let i = 0; i < rootNodes.length; i++) {
|
||||
let rootNode = rootNodes[i]
|
||||
if (rootNode.type === 'Charting Space') {
|
||||
uninstallInChartingSpace(rootNode)
|
||||
}
|
||||
}
|
||||
|
||||
node.payload.uiObject.setInfoMessage('Market uninstall is complete.')
|
||||
|
||||
function uninstallInChartingSpace(chartingSpace) {
|
||||
|
||||
/* Delete all time machines which are referencing sessions inside the market being unistalled. */
|
||||
let timeMachines = UI.projects.superalgos.utilities.branches.nodeBranchToArray(chartingSpace, 'Time Machine')
|
||||
for (let i = 0; i < timeMachines.length; i++) {
|
||||
let timeMachine = timeMachines[i]
|
||||
let session = timeMachine.payload.referenceParent
|
||||
if (session === undefined || session.cleaned === true) {
|
||||
/*
|
||||
This is what usually happens, that the intall process make these
|
||||
time machines to lose their reference parent since the install
|
||||
process deletes them.
|
||||
*/
|
||||
functionLibraryNodeDeleter.deleteUIObject(timeMachine, rootNodes)
|
||||
continue
|
||||
}
|
||||
if (session === undefined) { continue }
|
||||
let marketTradingTasks = UI.projects.superalgos.utilities.meshes.findNodeInNodeMesh(session, 'Market Trading Tasks', undefined, true, false, true, false)
|
||||
if (marketTradingTasks === undefined) { continue }
|
||||
if (marketTradingTasks.payload === undefined) { continue }
|
||||
@@ -473,84 +525,49 @@ function newCryptoEcosystemFunctions() {
|
||||
functionLibraryNodeDeleter.deleteUIObject(timeMachine, rootNodes)
|
||||
}
|
||||
}
|
||||
/*
|
||||
We create a time machine for each session added during the previous processing.
|
||||
*/
|
||||
for (let j = 0; j < arrayItem.sessionsArray.length; j++) {
|
||||
let session = arrayItem.sessionsArray[j]
|
||||
functionLibraryChartingSpaceFunctions.createTimeMachine(dashboard, session, node, arrayItem.networkNode, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter)
|
||||
|
||||
/* Delete all Dashboards that does not have time machines inside. */
|
||||
let dashboardArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(chartingSpace, 'Dashboard')
|
||||
for (let i = 0; i < dashboardArray.length; i++) {
|
||||
let dashboard = dashboardArray[i]
|
||||
if (dashboard.timeMachines.length === 0) {
|
||||
functionLibraryNodeDeleter.deleteUIObject(dashboard, rootNodes)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function uninstallMarket(node, rootNodes, functionLibraryUiObjectsFromNodes, functionLibraryNodeDeleter, functionLibraryChartingSpaceFunctions, functionLibraryDataStorageFunctions) {
|
||||
let market = node
|
||||
for (let i = 0; i < rootNodes.length; i++) {
|
||||
let rootNode = rootNodes[i]
|
||||
if (rootNode.type === 'Charting Space') {
|
||||
uninstallInChartingSpace(rootNode)
|
||||
}
|
||||
}
|
||||
|
||||
function uninstallInChartingSpace(chartingSpace) {
|
||||
|
||||
/* Delete all time machines which are referencing sessions inside the market being unistalled. */
|
||||
let timeMachines = UI.projects.superalgos.utilities.branches.nodeBranchToArray(chartingSpace, 'Time Machine')
|
||||
for (let i = 0; i < timeMachines.length; i++) {
|
||||
let timeMachine = timeMachines[i]
|
||||
let session = timeMachine.payload.referenceParent
|
||||
if (session === undefined) { continue }
|
||||
let marketTradingTasks = UI.projects.superalgos.utilities.meshes.findNodeInNodeMesh(session, 'Market Trading Tasks', undefined, true, false, true, false)
|
||||
if (marketTradingTasks === undefined) { continue }
|
||||
if (marketTradingTasks.payload === undefined) { continue }
|
||||
if (marketTradingTasks.payload.referenceParent === undefined) { continue }
|
||||
if (marketTradingTasks.payload.referenceParent.id === market.id) {
|
||||
functionLibraryNodeDeleter.deleteUIObject(timeMachine, rootNodes)
|
||||
/* Scan Networks for the market being unistalled to delete it. */
|
||||
for (let i = 0; i < rootNodes.length; i++) {
|
||||
let rootNode = rootNodes[i]
|
||||
if (rootNode.type === 'Network') {
|
||||
uninstallInNetwork(rootNode)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Delete all Dashboards that does not have time machines inside. */
|
||||
let dashboardArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(chartingSpace, 'Dashboard')
|
||||
for (let i = 0; i < dashboardArray.length; i++) {
|
||||
let dashboard = dashboardArray[i]
|
||||
if (dashboard.timeMachines.length === 0) {
|
||||
functionLibraryNodeDeleter.deleteUIObject(dashboard, rootNodes)
|
||||
}
|
||||
}
|
||||
function uninstallInNetwork(network) {
|
||||
|
||||
/* Scan Networks for the market being unistalled to delete it. */
|
||||
for (let i = 0; i < rootNodes.length; i++) {
|
||||
let rootNode = rootNodes[i]
|
||||
if (rootNode.type === 'Network') {
|
||||
uninstallInNetwork(rootNode)
|
||||
}
|
||||
}
|
||||
}
|
||||
let marketDataTasksArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Data Tasks')
|
||||
let marketTradingTasksArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Trading Tasks')
|
||||
let marketLearningTasksArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Learning Tasks')
|
||||
let marketDataProductsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Data Products')
|
||||
let marketTradingProductsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Trading Products')
|
||||
let marketLearningProductsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Learning Products')
|
||||
|
||||
function uninstallInNetwork(network) {
|
||||
uninstalMarketArray(marketDataTasksArray)
|
||||
uninstalMarketArray(marketTradingTasksArray)
|
||||
uninstalMarketArray(marketLearningTasksArray)
|
||||
uninstalMarketArray(marketDataProductsArray)
|
||||
uninstalMarketArray(marketTradingProductsArray)
|
||||
uninstalMarketArray(marketLearningProductsArray)
|
||||
|
||||
let marketDataTasksArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Data Tasks')
|
||||
let marketTradingTasksArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Trading Tasks')
|
||||
let marketLearningTasksArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Learning Tasks')
|
||||
let marketDataProductsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Data Products')
|
||||
let marketTradingProductsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Trading Products')
|
||||
let marketLearningProductsArray = UI.projects.superalgos.utilities.branches.nodeBranchToArray(network, 'Market Learning Products')
|
||||
|
||||
uninstalMarketArray(marketDataTasksArray)
|
||||
uninstalMarketArray(marketTradingTasksArray)
|
||||
uninstalMarketArray(marketLearningTasksArray)
|
||||
uninstalMarketArray(marketDataProductsArray)
|
||||
uninstalMarketArray(marketTradingProductsArray)
|
||||
uninstalMarketArray(marketLearningProductsArray)
|
||||
|
||||
function uninstalMarketArray(marketArray) {
|
||||
for (let i = 0; i < marketArray.length; i++) {
|
||||
let marketReference = marketArray[i]
|
||||
if (marketReference.payload === undefined) { continue }
|
||||
if (marketReference.payload.referenceParent === undefined) { continue }
|
||||
if (marketReference.payload.referenceParent.id === market.id) {
|
||||
functionLibraryNodeDeleter.deleteUIObject(marketReference, rootNodes)
|
||||
function uninstalMarketArray(marketArray) {
|
||||
for (let i = 0; i < marketArray.length; i++) {
|
||||
let marketReference = marketArray[i]
|
||||
if (marketReference.payload === undefined) { continue }
|
||||
if (marketReference.payload.referenceParent === undefined) { continue }
|
||||
if (marketReference.payload.referenceParent.id === market.id) {
|
||||
functionLibraryNodeDeleter.deleteUIObject(marketReference, rootNodes)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ function newPluginsFunctions() {
|
||||
}
|
||||
return thisObject
|
||||
|
||||
function getPluginFileNames(pluginType, callBack) {
|
||||
callWebServer(undefined, 'PluginFileNames/' + 'Superalgos' + '/' + pluginType, onResponse)
|
||||
function getPluginFileNames(projectName, pluginType, callBack) {
|
||||
callWebServer(undefined, 'PluginFileNames/' + projectName + '/' + pluginType, onResponse)
|
||||
|
||||
function onResponse(err, data) {
|
||||
if (err.result !== GLOBAL.DEFAULT_OK_RESPONSE.result) {
|
||||
@@ -46,13 +46,37 @@ function newPluginsFunctions() {
|
||||
if (UI.projects.superalgos.utilities.children.isMissingChildrenByName(node, project) === true) {
|
||||
let child = functionLibraryUiObjectsFromNodes.addUIObject(node, 'Plugin Project')
|
||||
child.name = project
|
||||
let config = JSON.parse(child.config)
|
||||
config.codeName = project
|
||||
child.config = JSON.stringify(config)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getProjectName(node) {
|
||||
/* Validations to see if we can do this or not. */
|
||||
if (node.payload === undefined) { return }
|
||||
if (node.payload.uiObject === undefined) { return }
|
||||
|
||||
if (node.payload.parentNode === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('You need to have a Plugin Project node as a parent to execute this action.')
|
||||
return
|
||||
}
|
||||
if (node.payload.parentNode.payload === undefined) {
|
||||
node.payload.uiObject.setErrorMessage('You need to have a Plugin Project node as a parent to execute this action.')
|
||||
return
|
||||
}
|
||||
let pluginProject = node.payload.parentNode
|
||||
let config = JSON.parse(pluginProject.config)
|
||||
|
||||
return config.codeName
|
||||
}
|
||||
|
||||
function pluginMissingDataMines(node, rootNodes, functionLibraryUiObjectsFromNodes) {
|
||||
getPluginFileNames('Data-Mines', onNamesArrived)
|
||||
let projectName = getProjectName(node)
|
||||
|
||||
getPluginFileNames(projectName, 'Data-Mines', onNamesArrived)
|
||||
|
||||
function onNamesArrived(fileNames) {
|
||||
addPluginFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
|
||||
@@ -60,7 +84,9 @@ function newPluginsFunctions() {
|
||||
}
|
||||
|
||||
function pluginMissingTradingMines(node, rootNodes, functionLibraryUiObjectsFromNodes) {
|
||||
getPluginFileNames('Trading-Mines', onNamesArrived)
|
||||
let projectName = getProjectName(node)
|
||||
|
||||
getPluginFileNames(projectName, 'Trading-Mines', onNamesArrived)
|
||||
|
||||
function onNamesArrived(fileNames) {
|
||||
addPluginFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
|
||||
@@ -68,7 +94,9 @@ function newPluginsFunctions() {
|
||||
}
|
||||
|
||||
function pluginMissingTradingSystems(node, rootNodes, functionLibraryUiObjectsFromNodes) {
|
||||
getPluginFileNames('Trading-Systems', onNamesArrived)
|
||||
let projectName = getProjectName(node)
|
||||
|
||||
getPluginFileNames(projectName, 'Trading-Systems', onNamesArrived)
|
||||
|
||||
function onNamesArrived(fileNames) {
|
||||
addPluginFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
|
||||
@@ -76,7 +104,9 @@ function newPluginsFunctions() {
|
||||
}
|
||||
|
||||
function pluginMissingTradingEngines(node, rootNodes, functionLibraryUiObjectsFromNodes) {
|
||||
getPluginFileNames('Trading-Engines', onNamesArrived)
|
||||
let projectName = getProjectName(node)
|
||||
|
||||
getPluginFileNames(projectName, 'Trading-Engines', onNamesArrived)
|
||||
|
||||
function onNamesArrived(fileNames) {
|
||||
addPluginFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
|
||||
@@ -84,7 +114,9 @@ function newPluginsFunctions() {
|
||||
}
|
||||
|
||||
function pluginMissingSuperScripts(node, rootNodes, functionLibraryUiObjectsFromNodes) {
|
||||
getPluginFileNames('Super-Scripts', onNamesArrived)
|
||||
let projectName = getProjectName(node)
|
||||
|
||||
getPluginFileNames(projectName, 'Super-Scripts', onNamesArrived)
|
||||
|
||||
function onNamesArrived(fileNames) {
|
||||
addPluginFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
|
||||
@@ -92,7 +124,9 @@ function newPluginsFunctions() {
|
||||
}
|
||||
|
||||
function pluginMissingTutorials(node, rootNodes, functionLibraryUiObjectsFromNodes) {
|
||||
getPluginFileNames('Tutorials', onNamesArrived)
|
||||
let projectName = getProjectName(node)
|
||||
|
||||
getPluginFileNames(projectName, 'Tutorials', onNamesArrived)
|
||||
|
||||
function onNamesArrived(fileNames) {
|
||||
addPluginFileIfNeeded(node, fileNames, functionLibraryUiObjectsFromNodes)
|
||||
|
||||
@@ -2,7 +2,7 @@ function newUiObjectsFromNodes() {
|
||||
thisObject = {
|
||||
syncronizeTasksFoundAtWorkspaceWithBackEnd: syncronizeTasksFoundAtWorkspaceWithBackEnd,
|
||||
syncronizeTradingSessionsFoundAtWorkspaceWithBackEnd: syncronizeTradingSessionsFoundAtWorkspaceWithBackEnd,
|
||||
syncronizeLearningSessionsFoundAtWorkspaceWithBackEnd: syncronizeLearningSessionsFoundAtWorkspaceWithBackEnd,
|
||||
syncronizeLearningSessionsFoundAtWorkspaceWithBackEnd: syncronizeLearningSessionsFoundAtWorkspaceWithBackEnd,
|
||||
playTutorials: playTutorials,
|
||||
recreateWorkspace: recreateWorkspace,
|
||||
getNodeById: getNodeById,
|
||||
@@ -332,19 +332,21 @@ function newUiObjectsFromNodes() {
|
||||
}
|
||||
}
|
||||
|
||||
function addUIObject(parentNode, type, rootNodes) {
|
||||
function addUIObject(parentNode, type, rootNodes, project) {
|
||||
if (project === undefined) { project = parentNode.project }
|
||||
|
||||
let object = {
|
||||
name: 'New ' + type,
|
||||
type: type,
|
||||
project: parentNode.project
|
||||
project: project
|
||||
}
|
||||
|
||||
let parentNodeDefinition = getNodeDefinition(parentNode)
|
||||
let parentNodeDefinition = getNodeDefinition(parentNode, project)
|
||||
if (parentNodeDefinition === undefined) {
|
||||
console.log('Cannot addUIOBject from parent of ' + type + ' because that type it is not defined at the APP_SCHEMA.')
|
||||
}
|
||||
/* Resolve Initial Values */
|
||||
let nodeDefinition = getNodeDefinition(object)
|
||||
let nodeDefinition = getNodeDefinition(object, project)
|
||||
|
||||
if (nodeDefinition === undefined) {
|
||||
console.log('Cannot addUIOBject of ' + type + ' because that type it is not defined at the APP_SCHEMA.')
|
||||
@@ -362,7 +364,7 @@ function newUiObjectsFromNodes() {
|
||||
}
|
||||
}
|
||||
|
||||
if (nodeDefinition.isHierarchyHead === true) {
|
||||
if (nodeDefinition.isHierarchyHead === true || nodeDefinition.isProjectHead) {
|
||||
rootNodes.push(object)
|
||||
createUiObject(true, object.type, object.name, object, parentNode, undefined)
|
||||
return object
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
function newWorkspaceFunctions() {
|
||||
thisObject = {
|
||||
addMissingWorkspaceProjects: addMissingWorkspaceProjects
|
||||
}
|
||||
|
||||
return thisObject
|
||||
|
||||
function addMissingWorkspaceProjects(node, rootNodes, functionLibraryUiObjectsFromNodes) {
|
||||
let url = 'ProjectNames'
|
||||
callWebServer(undefined, url, onResponse)
|
||||
|
||||
function onResponse(err, pProjects) {
|
||||
let projects = JSON.parse(pProjects)
|
||||
for (let i = 0; i < projects.length; i++) {
|
||||
let project = projects[i]
|
||||
let alreadyExist = false
|
||||
|
||||
for (let j = 0; j < rootNodes.length; j++) {
|
||||
let rootNode = rootNodes[j]
|
||||
if (rootNode.type === project + ' Project') {
|
||||
alreadyExist = true
|
||||
}
|
||||
}
|
||||
|
||||
if (alreadyExist === false) {
|
||||
let child = functionLibraryUiObjectsFromNodes.addUIObject(node, project + ' Project', rootNodes, project)
|
||||
child.project = project
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 8.7 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 13 KiB |
@@ -1 +1 @@
|
||||
{"type":"Data Mine","name":"Masters","config":"{\n\"codeName\": \"Masters\"\n}","project":"Superalgos","sensorBots":[{"type":"Sensor Bot","name":"Exchange Raw Data","config":"{\n\"codeName\": \"Exchange-Raw-Data\",\n\"repo\": \"Exchange-Raw-Data-Sensor-Bot\"\n}","project":"Superalgos","processes":[{"type":"Process Definition","name":"Historic-OHLCVs","config":"{\n \"codeName\": \"Historic-OHLCVs\",\n \"description\": \"Retrieves and saves historical maket data\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 60000,\n \"retryWaitTime\": 10000\n}","project":"Superalgos","processOutput":{"type":"Process Output","name":"New Process Output","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[],"id":"dfe2556e-a765-4e38-9d30-7f91090c0069","savedPayload":{"position":{"x":7743.093065585781,"y":17657.26070065566},"targetPosition":{"x":7723.051525995295,"y":18063.790438218573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","project":"Superalgos","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\n \"mainUtility\": \"Self Reference\"\n}","project":"Superalgos","id":"ea39c98b-18e2-44ce-9f7f-86a8a76a688a","savedPayload":{"position":{"x":8159.968121568774,"y":17392.017795274412},"targetPosition":{"x":7941.750591738466,"y":17727.773847360382},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[],"dataMineDataDependencies":[],"id":"5c7fae5a-6da6-4864-a167-f2f21d578c72","savedPayload":{"position":{"x":7941.750591738466,"y":17727.773847360382},"targetPosition":{"x":7723.051525995295,"y":18063.790438218573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","project":"Superalgos","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e","savedPayload":{"position":{"x":8080.14992890308,"y":17881.860565405637},"targetPosition":{"x":7723.051525995295,"y":18063.790438218573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"","project":"Superalgos","id":"957e7e3a-b167-40be-93b5-9ba4ceff56e5","savedPayload":{"position":{"x":8123.742665378901,"y":18084.134120101407},"targetPosition":{"x":7723.051525995295,"y":18063.790438218573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","project":"Superalgos","id":"fe40a546-43ee-49df-908a-7e72f598f0cd","savedPayload":{"position":{"x":8067.94916479235,"y":18272.098978495884},"targetPosition":{"x":7723.051525995295,"y":18063.790438218573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc","savedPayload":{"position":{"x":7723.051525995295,"y":18063.790438218573},"targetPosition":{"x":7327.141714623944,"y":18266.006678666803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Trades","config":"{\n\"codeName\": \"Trades\"\n}","project":"Superalgos","datasets":[{"type":"Dataset Definition","name":"Trades","config":"{\n\"codeName\": \"Trades\"\n}","project":"Superalgos","id":"fbb7c17e-a909-4fa2-b3c5-eb8ca86297c4","savedPayload":{"position":{"x":7988.166640893156,"y":18161.91023332179},"targetPosition":{"x":7789.749141672932,"y":18193.51426197839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"id":"38dbb942-a15b-450b-a867-02a94030965f","savedPayload":{"position":{"x":7789.749141672932,"y":18193.51426197839},"targetPosition":{"x":7327.141714623944,"y":18266.006678666803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name"Line truncated
|
||||
{"type":"Data Mine","name":"Masters","config":"{\n\"codeName\": \"Masters\"\n}","project":"Superalgos","sensorBots":[{"type":"Sensor Bot","name":"Exchange Raw Data","config":"{\n\"codeName\": \"Exchange-Raw-Data\",\n\"repo\": \"Exchange-Raw-Data-Sensor-Bot\"\n}","project":"Superalgos","processes":[{"type":"Process Definition","name":"Historic-OHLCVs","config":"{\n \"codeName\": \"Historic-OHLCVs\",\n \"description\": \"Retrieves and saves historical maket data\",\n \"startMode\": {\n \"noTime\": {\n \"run\": \"true\"\n },\n \"fixedInterval\": {\n \"run\": \"false\",\n \"interval\": 0\n }\n },\n \"deadWaitTime\": 0,\n \"normalWaitTime\": 60000,\n \"retryWaitTime\": 10000\n}","project":"Superalgos","processOutput":{"type":"Process Output","name":"New Process Output","project":"Superalgos","outputDatasets":[],"outputDatasetFolders":[],"id":"dfe2556e-a765-4e38-9d30-7f91090c0069","savedPayload":{"position":{"x":7743.093065585781,"y":17657.26070065566},"targetPosition":{"x":7723.051525995295,"y":18063.790438218573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"processDependencies":{"type":"Process Dependencies","name":"New Process Dependencies","project":"Superalgos","statusDependencies":[{"type":"Status Dependency","name":"Exchange Raw Data Historic-OHLCVs","config":"{\n \"mainUtility\": \"Self Reference\"\n}","project":"Superalgos","id":"ea39c98b-18e2-44ce-9f7f-86a8a76a688a","savedPayload":{"position":{"x":8159.968121568774,"y":17392.017795274412},"targetPosition":{"x":7941.750591738466,"y":17727.773847360382},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":3,"arrangementStyle":0},"uiObject":{},"referenceParent":{"type":"Status Report","name":"New Status Report","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e"}}}],"dataDependencies":[],"dataMineDataDependencies":[],"id":"5c7fae5a-6da6-4864-a167-f2f21d578c72","savedPayload":{"position":{"x":7941.750591738466,"y":17727.773847360382},"targetPosition":{"x":7723.051525995295,"y":18063.790438218573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},"statusReport":{"type":"Status Report","name":"New Status Report","project":"Superalgos","id":"181c7c34-7243-497a-9ddb-1b0067c6d66e","savedPayload":{"position":{"x":8080.14992890308,"y":17881.860565405637},"targetPosition":{"x":7723.051525995295,"y":18063.790438218573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionStartedEvent":{"type":"Execution Started Event","name":"","project":"Superalgos","id":"957e7e3a-b167-40be-93b5-9ba4ceff56e5","savedPayload":{"position":{"x":8123.742665378901,"y":18084.134120101407},"targetPosition":{"x":7723.051525995295,"y":18063.790438218573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"executionFinishedEvent":{"type":"Execution Finished Event","name":"New Execution Finished Event","project":"Superalgos","id":"fe40a546-43ee-49df-908a-7e72f598f0cd","savedPayload":{"position":{"x":8067.94916479235,"y":18272.098978495884},"targetPosition":{"x":7723.051525995295,"y":18063.790438218573},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":2,"distanceToParent":3,"arrangementStyle":0},"uiObject":{}}},"id":"5eb11d6a-022e-4f60-97c4-d6cf90b249dc","savedPayload":{"position":{"x":7723.051525995295,"y":18063.790438218573},"targetPosition":{"x":7327.141714623944,"y":18266.006678666803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}}],"products":[{"type":"Product Definition","name":"Trades","config":"{\n\"codeName\": \"Trades\"\n}","project":"Superalgos","datasets":[{"type":"Dataset Definition","name":"Trades","config":"{\n\"codeName\": \"Trades\"\n}","project":"Superalgos","id":"fbb7c17e-a909-4fa2-b3c5-eb8ca86297c4","savedPayload":{"position":{"x":7988.166640893156,"y":18161.91023332179},"targetPosition":{"x":7789.749141672932,"y":18193.51426197839},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":1,"distanceToParent":2,"arrangementStyle":0},"uiObject":{}}}],"id":"38dbb942-a15b-450b-a867-02a94030965f","savedPayload":{"position":{"x":7789.749141672932,"y":18193.51426197839},"targetPosition":{"x":7327.141714623944,"y":18266.006678666803},"floatingObject":{"isPinned":false,"isFrozen":false,"isCollapsed":false,"angleToParent":3,"distanceToParent":3,"arrangementStyle":0},"uiObject":{"isRunning":false}}},{"type":"Product Definition","name"Line truncated
|
||||
@@ -1,19 +1,84 @@
|
||||
[
|
||||
{
|
||||
"type": "Superalgos Project",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Add Missing Children",
|
||||
"label": "Add Missing Children",
|
||||
"relatedUiObject": "Superalgos Project",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"actionFunction": "payload.executeAction",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete"
|
||||
}
|
||||
],
|
||||
"isProjectHead": true,
|
||||
"isTitleAllwaysVisible": false,
|
||||
"addLeftIcons": true,
|
||||
"isPinned": true,
|
||||
"positionLocked": true,
|
||||
"icon": "superalgos",
|
||||
"properties": [
|
||||
{
|
||||
"name": "spaces",
|
||||
"type": "node",
|
||||
"childType": "Spaces",
|
||||
"autoAdd": true
|
||||
},
|
||||
{
|
||||
"name": "mines",
|
||||
"type": "node",
|
||||
"childType": "Mines",
|
||||
"autoAdd": true
|
||||
},
|
||||
{
|
||||
"name": "otherHierarchies",
|
||||
"type": "node",
|
||||
"childType": "Other Hierarchies",
|
||||
"autoAdd": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Spaces",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"label": "Add Trading System",
|
||||
"relatedUiObject": "Trading System",
|
||||
"label": "Add Charting Space",
|
||||
"relatedUiObject": "Charting Space",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"label": "Add Network",
|
||||
"relatedUiObject": "Network",
|
||||
"label": "Add Design Space",
|
||||
"relatedUiObject": "Design Space",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"actionFunction": "payload.executeAction",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete"
|
||||
}
|
||||
],
|
||||
"isTitleAllwaysVisible": false,
|
||||
"addLeftIcons": true,
|
||||
"isPinned": false,
|
||||
"level": 2,
|
||||
"propertyNameAtParent": "spaces"
|
||||
},
|
||||
{
|
||||
"type": "Mines",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"label": "Add Data Mine",
|
||||
@@ -32,6 +97,37 @@
|
||||
"relatedUiObject": "Learning Mine",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"actionFunction": "payload.executeAction",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete"
|
||||
}
|
||||
],
|
||||
"isTitleAllwaysVisible": false,
|
||||
"addLeftIcons": true,
|
||||
"isPinned": false,
|
||||
"level": 2,
|
||||
"propertyNameAtParent": "mines"
|
||||
},
|
||||
{
|
||||
"type": "Other Hierarchies",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"label": "Add Trading System",
|
||||
"relatedUiObject": "Trading System",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"label": "Add Network",
|
||||
"relatedUiObject": "Network",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"label": "Add Super Scripts",
|
||||
@@ -49,14 +145,22 @@
|
||||
"label": "Add Tutorial",
|
||||
"relatedUiObject": "Tutorial",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"actionFunction": "payload.executeAction",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete"
|
||||
}
|
||||
],
|
||||
"isProjectHead": true,
|
||||
"isTitleAllwaysVisible": false,
|
||||
"addLeftIcons": true,
|
||||
"isPinned": true,
|
||||
"positionLocked": true,
|
||||
"icon": "bitcoin"
|
||||
"isPinned": false,
|
||||
"level": 2,
|
||||
"propertyNameAtParent": "otherHierarchies"
|
||||
},
|
||||
{
|
||||
"type": "Workspace",
|
||||
@@ -80,6 +184,15 @@
|
||||
"iconPathOff": "backup",
|
||||
"actionFunction": "UI.projects.superalgos.spaces.designSpace.workspace.backup",
|
||||
"ring": 1
|
||||
},
|
||||
{
|
||||
"action": "Add Missing Workspace Projects",
|
||||
"label": "Add Missing Projects",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Proceed",
|
||||
"workDoneLabel": "Done",
|
||||
"relatedUiObject": "Workspace",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"isTitleAllwaysVisible": true,
|
||||
@@ -2271,8 +2384,7 @@
|
||||
"autoAdd": false
|
||||
}
|
||||
],
|
||||
"propertyNameAtParent": "bot",
|
||||
"icon": "bitcoin"
|
||||
"propertyNameAtParent": "bot"
|
||||
},
|
||||
{
|
||||
"type": "Sensor Process Instance",
|
||||
@@ -2483,8 +2595,7 @@
|
||||
"autoAdd": false
|
||||
}
|
||||
],
|
||||
"propertyNameAtParent": "processes",
|
||||
"icon": "bitcoin"
|
||||
"propertyNameAtParent": "processes"
|
||||
},
|
||||
{
|
||||
"type": "Backtesting Session",
|
||||
@@ -9251,8 +9362,7 @@
|
||||
"autoAdd": true
|
||||
}
|
||||
],
|
||||
"propertyNameAtParent": "learningParameters",
|
||||
"icon": "bitcoin"
|
||||
"propertyNameAtParent": "learningParameters"
|
||||
},
|
||||
{
|
||||
"type": "Trading System Reference",
|
||||
@@ -9673,8 +9783,7 @@
|
||||
"chainAttachesTo": {
|
||||
"compatibleTypes": "->Learning Parameters->"
|
||||
},
|
||||
"propertyNameAtParent": "learningAlgorithm",
|
||||
"icon": "bitcoin"
|
||||
"propertyNameAtParent": "learningAlgorithm"
|
||||
},
|
||||
{
|
||||
"type": "User Defined Parameters",
|
||||
@@ -10170,8 +10279,7 @@
|
||||
"childType": "Social Bots"
|
||||
}
|
||||
],
|
||||
"propertyNameAtParent": "session",
|
||||
"icon": "bitcoin"
|
||||
"propertyNameAtParent": "session"
|
||||
},
|
||||
{
|
||||
"type": "Sensor Bot Instance",
|
||||
@@ -10461,8 +10569,7 @@
|
||||
"type": "array",
|
||||
"childType": "Plotter"
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Sensor Bot",
|
||||
@@ -11624,8 +11731,7 @@
|
||||
"autoAdd": true
|
||||
}
|
||||
],
|
||||
"propertyNameAtParent": "learningBots",
|
||||
"icon": "bitcoin"
|
||||
"propertyNameAtParent": "learningBots"
|
||||
},
|
||||
{
|
||||
"type": "Plotter",
|
||||
@@ -14321,6 +14427,15 @@
|
||||
"label": "Add Space Settings",
|
||||
"relatedUiObject": "Space Settings",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"actionFunction": "payload.executeAction",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete"
|
||||
}
|
||||
],
|
||||
"isHierarchyHead": true,
|
||||
@@ -14448,6 +14563,15 @@
|
||||
"workDoneLabel": "Done",
|
||||
"relatedUiObject": "Dashboard",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"actionFunction": "payload.executeAction",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete"
|
||||
}
|
||||
],
|
||||
"isHierarchyHead": true,
|
||||
@@ -14898,11 +15022,9 @@
|
||||
"actionFunction": "uiObject.configEditor.activate"
|
||||
},
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"disableIfPropertyIsDefined": true,
|
||||
"propertyToCheckFor": "timeFrameScale",
|
||||
"label": "Add Time Frame Scale",
|
||||
"relatedUiObject": "Time Frame Scale",
|
||||
"action": "Add Missing Children",
|
||||
"label": "Add Missing Children",
|
||||
"relatedUiObject": "Layer",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
@@ -14936,12 +15058,181 @@
|
||||
"propertyNameAtParent": "layers",
|
||||
"properties": [
|
||||
{
|
||||
"name": "timeFrameScale",
|
||||
"name": "layerPanels",
|
||||
"type": "node",
|
||||
"childType": "Time Frame Scale"
|
||||
"childType": "Layer Panels"
|
||||
},
|
||||
{
|
||||
"name": "layerPolygons",
|
||||
"type": "node",
|
||||
"childType": "Layer Polygons"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Layer Panels",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"label": "Add Layer Panel",
|
||||
"relatedUiObject": "Layer Panel",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Add All Layer Panels",
|
||||
"label": "Add All Layer Panels",
|
||||
"relatedUiObject": "Layer Panel",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"addLeftIcons": true,
|
||||
"level": 3,
|
||||
"chainAttachesTo": {
|
||||
"compatibleTypes": "->Layer->"
|
||||
},
|
||||
"propertyNameAtParent": "layerPanels",
|
||||
"properties": [
|
||||
{
|
||||
"name": "layerPanels",
|
||||
"type": "array",
|
||||
"childType": "Layer Panel"
|
||||
}
|
||||
],
|
||||
"icon": "under-construction"
|
||||
},
|
||||
{
|
||||
"type": "Layer Panel",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Configure",
|
||||
"label": "Configure",
|
||||
"iconPathOn": "configuration",
|
||||
"iconPathOff": "configuration",
|
||||
"dontShowAtFullscreen": true,
|
||||
"actionFunction": "uiObject.configEditor.activate"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"title": [
|
||||
"Use Reference Parent"
|
||||
],
|
||||
"initialValues": {
|
||||
"config": "{ \n\"status\": \"on\"\n}"
|
||||
},
|
||||
"editors": {
|
||||
"config": true
|
||||
},
|
||||
"addLeftIcons": true,
|
||||
"level": 3,
|
||||
"referenceAttachesTo": {
|
||||
"compatibleTypes": "->Plotter Panel->"
|
||||
},
|
||||
"chainAttachesTo": {
|
||||
"compatibleTypes": "->Layer Panels->"
|
||||
},
|
||||
"propertyNameAtParent": "layerPanels",
|
||||
"properties": [],
|
||||
"icon": "under-construction"
|
||||
},
|
||||
{
|
||||
"type": "Layer Polygons",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Add UI Object",
|
||||
"label": "Add Layer Polygon",
|
||||
"relatedUiObject": "Layer Polygon",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Add All Layer Polygons",
|
||||
"label": "Add All Layer Polygons",
|
||||
"relatedUiObject": "Layer Polygon",
|
||||
"actionFunction": "payload.executeAction"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"addLeftIcons": true,
|
||||
"level": 3,
|
||||
"chainAttachesTo": {
|
||||
"compatibleTypes": "->Layer->"
|
||||
},
|
||||
"propertyNameAtParent": "layerPolygons",
|
||||
"properties": [
|
||||
{
|
||||
"name": "layerPolygons",
|
||||
"type": "array",
|
||||
"childType": "Layer Polygon"
|
||||
}
|
||||
],
|
||||
"icon": "under-construction"
|
||||
},
|
||||
{
|
||||
"type": "Layer Polygon",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Configure",
|
||||
"label": "Configure",
|
||||
"iconPathOn": "configuration",
|
||||
"iconPathOff": "configuration",
|
||||
"dontShowAtFullscreen": true,
|
||||
"actionFunction": "uiObject.configEditor.activate"
|
||||
},
|
||||
{
|
||||
"action": "Delete UI Object",
|
||||
"askConfirmation": true,
|
||||
"confirmationLabel": "Confirm to Delete",
|
||||
"label": "Delete",
|
||||
"iconPathOn": "delete",
|
||||
"iconPathOff": "delete",
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"title": [
|
||||
"Use Reference Parent"
|
||||
],
|
||||
"initialValues": {
|
||||
"config": "{ \n\"status\": \"on\"\n}"
|
||||
},
|
||||
"editors": {
|
||||
"config": true
|
||||
},
|
||||
"addLeftIcons": true,
|
||||
"level": 3,
|
||||
"referenceAttachesTo": {
|
||||
"compatibleTypes": "->Polygon->"
|
||||
},
|
||||
"chainAttachesTo": {
|
||||
"compatibleTypes": "->Layer Polygons->"
|
||||
},
|
||||
"propertyNameAtParent": "layerPolygons",
|
||||
"properties": [],
|
||||
"icon": "under-construction"
|
||||
},
|
||||
{
|
||||
"type": "Bot Layers",
|
||||
"menuItems": [
|
||||
@@ -15309,8 +15600,7 @@
|
||||
"childType": "Task Manager",
|
||||
"monitorChildrenRunning": true
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Market Data Tasks",
|
||||
@@ -15526,8 +15816,7 @@
|
||||
"childType": "Learning Mine Tasks",
|
||||
"monitorChildrenRunning": true
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Exchange Data Tasks",
|
||||
@@ -15740,8 +16029,7 @@
|
||||
"childType": "Market Learning Tasks",
|
||||
"monitorChildrenRunning": true
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Data Mining",
|
||||
@@ -15867,8 +16155,7 @@
|
||||
"childType": "Exchange Learning Tasks",
|
||||
"monitorChildrenRunning": true
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Testing Environment",
|
||||
@@ -16188,8 +16475,7 @@
|
||||
"childType": "Market Learning Products",
|
||||
"autoAdd": false
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Trading Mines Data",
|
||||
@@ -16273,8 +16559,7 @@
|
||||
"type": "array",
|
||||
"childType": "Exchange Learning Products"
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Trading Session Reference",
|
||||
@@ -16404,8 +16689,7 @@
|
||||
"childType": "Learning Mine Products",
|
||||
"autoAdd": false
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Market Data Products",
|
||||
@@ -16568,8 +16852,7 @@
|
||||
"type": "array",
|
||||
"childType": "Learning Session Reference"
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Data Product",
|
||||
@@ -16747,8 +17030,7 @@
|
||||
"childType": "Bot Products",
|
||||
"autoAdd": false
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Bot Products",
|
||||
@@ -16871,6 +17153,13 @@
|
||||
{
|
||||
"type": "Plugin Project",
|
||||
"menuItems": [
|
||||
{
|
||||
"action": "Configure",
|
||||
"actionFunction": "uiObject.configEditor.activate",
|
||||
"label": "Configure",
|
||||
"iconPathOn": "configuration",
|
||||
"iconPathOff": "configuration"
|
||||
},
|
||||
{
|
||||
"action": "Add Missing Children",
|
||||
"label": "Add Missing Children",
|
||||
@@ -16887,6 +17176,12 @@
|
||||
"actionFunction": "payload.executeAction"
|
||||
}
|
||||
],
|
||||
"initialValues": {
|
||||
"config": "{ \n \"codeName\": \"\"\n}"
|
||||
},
|
||||
"editors": {
|
||||
"config": true
|
||||
},
|
||||
"addLeftIcons": true,
|
||||
"level": 1,
|
||||
"propertyNameAtParent": "pluginProjects",
|
||||
@@ -16931,7 +17226,16 @@
|
||||
"autoAdd": false
|
||||
}
|
||||
],
|
||||
"icon": "bitcoin"
|
||||
"alternativeIcons": [
|
||||
{
|
||||
"codeName": "Superalgos",
|
||||
"iconName": "superalgos"
|
||||
},
|
||||
{
|
||||
"codeName": "Ethereum",
|
||||
"iconName": "ethereum"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "Plugin Data Mines",
|
||||
|
||||
@@ -418,7 +418,7 @@ function newPlotter() {
|
||||
records = []
|
||||
|
||||
while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) {
|
||||
let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2)
|
||||
let stringDate = currentDate.getUTCFullYear() + '-' + pad(currentDate.getUTCMonth() + 1, 2) + '-' + pad(currentDate.getUTCDate(), 2)
|
||||
|
||||
let dailyFile = fileCursor.files.get(stringDate)
|
||||
|
||||
|
||||
@@ -7,9 +7,9 @@ function newSuperalgosUtilitiesDates() {
|
||||
|
||||
function formatDate(date) {
|
||||
var d = new Date(date),
|
||||
month = '' + (d.getMonth() + 1),
|
||||
day = '' + d.getDate(),
|
||||
year = d.getFullYear();
|
||||
month = '' + (d.getUTCMonth() + 1),
|
||||
day = '' + d.getUTCDate(),
|
||||
year = d.getUTCFullYear();
|
||||
|
||||
if (month.length < 2)
|
||||
month = '0' + month;
|
||||
|
||||
@@ -335,7 +335,7 @@
|
||||
|
||||
while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) {
|
||||
|
||||
let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2);
|
||||
let stringDate = currentDate.getUTCFullYear() + '-' + pad(currentDate.getUTCMonth() + 1, 2) + '-' + pad(currentDate.getUTCDate(), 2);
|
||||
|
||||
let dailyFile = fileCursor.files.get(stringDate);
|
||||
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
|
||||
while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) {
|
||||
|
||||
let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2);
|
||||
let stringDate = currentDate.getUTCFullYear() + '-' + pad(currentDate.getUTCMonth() + 1, 2) + '-' + pad(currentDate.getUTCDate(), 2);
|
||||
|
||||
let dailyFile = fileCursor.files.get(stringDate);
|
||||
|
||||
|
||||
@@ -317,7 +317,7 @@
|
||||
|
||||
while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) {
|
||||
|
||||
let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2);
|
||||
let stringDate = currentDate.getUTCFullYear() + '-' + pad(currentDate.getUTCMonth() + 1, 2) + '-' + pad(currentDate.getUTCDate(), 2);
|
||||
|
||||
let dailyFile = fileCursor.files.get(stringDate);
|
||||
|
||||
|
||||
@@ -312,7 +312,7 @@
|
||||
|
||||
while (currentDate.valueOf() <= farRightDate.valueOf() + ONE_DAY_IN_MILISECONDS) {
|
||||
|
||||
let stringDate = currentDate.getFullYear() + '-' + pad(currentDate.getMonth() + 1, 2) + '-' + pad(currentDate.getDate(), 2);
|
||||
let stringDate = currentDate.getUTCFullYear() + '-' + pad(currentDate.getUTCMonth() + 1, 2) + '-' + pad(currentDate.getUTCDate(), 2);
|
||||
|
||||
let dailyFile = fileCursor.files.get(stringDate);
|
||||
|
||||
|
||||