Files
Superalgos/Projects/Visual-Scripting/UI/Function-Libraries/NodePath.js
T

57 lines
2.0 KiB
JavaScript

function newVisualScriptingFunctionLibraryNodePath() {
let thisObject = {
getNodePath: getNodePath
}
return thisObject
function getNodePath(node) {
let nodePath = 'value'
recursiveGet(node)
return 'tradingEngine.' + nodePath
function recursiveGet(node) {
if (node.payload === undefined) { return }
if (node.payload.parentNode === undefined) { return }
let schemaDocument = getSchemaDocument(node.payload.parentNode)
if (schemaDocument === undefined) { return }
if (schemaDocument.childrenNodesProperties === undefined) { return }
for (let i = 0; i < schemaDocument.childrenNodesProperties.length; i++) {
let property = schemaDocument.childrenNodesProperties[i]
let parentProperty = node.payload.parentNode[property.name]
if (parentProperty === undefined) { continue }
switch (property.type) {
case 'node': {
if (parentProperty.id === node.id) {
/* We found it */
nodePath = property.name + '.' + nodePath
recursiveGet(node.payload.parentNode)
}
}
break
case 'array': {
for (let j = 0; j < parentProperty.length; j++) {
let arrayProperty = parentProperty[j]
if (arrayProperty === undefined) {continue}
if (arrayProperty.id === node.id) {
/* We found it */
nodePath = property.name + '[' + j + ']' + '.' + nodePath
recursiveGet(node.payload.parentNode)
}
}
}
break
}
}
}
}
}