// // Job Engine & Task... // jet.js // // Created by Sam Gateau, 2018/03/28 // Copyright 2018 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // "use strict"; // traverse task tree function task_traverse(root, functor, depth) { if (root.isTask()) { depth++; for (var i = 0; i 0 ? "." : "") + node[jobTreePath[n]].name node = node[jobTreePath[n]].subNode } newNodeFunctor(newItem) node.push((newItem)) numJobs++ jobTreePath.push(0); } else if (jobTreePath.length >= depth) { var node = jobsRoot; for (var n = 0; n < (depth - 1); n++) { newItem.path += (n > 0 ? "." : "") + node[jobTreePath[n]].name node = node[jobTreePath[n]].subNode } newNodeFunctor(newItem) node.push((newItem)) numJobs++ jobTreePath[depth-1] = index; while (jobTreePath.length > depth) { jobTreePath.pop(); } } } return true; } } function job_tree_model_functor(jobTreeModel, maxLevel, newNodeFunctor) { var jobsRoot; var numJobs = 0; var jobTreePath = [] if (newNodeFunctor === undefined) newNodeFunctor = function (node) {} return function (job, depth, index) { var id = numJobs var newItem = {"name": job.objectName, "level": depth, "index": index, "id": id, "subNode": [], "path": "", "init": (depth < maxLevel), "ud": {}} if (depth == 0) { newNodeFunctor(newItem) jobTreeModel.append(newItem) numJobs++ jobsRoot = jobTreeModel.get(0).subNode; } else { if (jobTreePath.length < depth) { var node = jobsRoot; var path; for (var n = 0; n < jobTreePath.length; n++) { newItem.path += (n > 0 ? "." : "") + node.get(jobTreePath[n]).name node = node.get(jobTreePath[n]).subNode } newNodeFunctor(newItem) node.append((newItem)) numJobs++ jobTreePath.push(0); } else if (jobTreePath.length >= depth) { var node = jobsRoot; for (var n = 0; n < (depth - 1); n++) { newItem.path += (n > 0 ? "." : "") + node.get(jobTreePath[n]).name node = node.get(jobTreePath[n]).subNode } newNodeFunctor(newItem) node.append((newItem)) numJobs++ jobTreePath[depth-1] = index; while (jobTreePath.length > depth) { jobTreePath.pop(); } } } return true; } } // Traverse the jobTreenode data structure created above function job_traverseTreeNode(root, functor, depth) { if (root.subNode.length) { depth++; for (var i = 0; i