![]() | Using the Rollup Function | Managing Runtime Data | ![]() |
We have a hierachy object called "aHier" with the following structure;
aHier product color hasLimiter
Where you have a hierachy object called "aHier";
#aHier.run();
Set the value of the first root node [i.e. "product"] on the hierachy to "THX-3911";
#aHier.tree[0].item.val("THX-3911"); #aHier = hierachy object .tree[0] = reference the FIRST root node on the hierachy [product] .item = get the object referenced by this node .val("v") = set the object's value (the STANDARD javascript object value reference method)
Get the value of the second root node [i.e. "hasLimiter"] on the hierachy;
var v = #aHier .tree[1].item.val(); #aHier = hierachy object .tree[1] = reference the SECOND root node on the hierachy [hasLimiter] .item = get the object referenced by this node .val() = get the object's value (the STANDARD javascript object value reference method)
Set the value of the first root node's [i.e. "product"] first child [i.e. "color"] on the hierachy to "Red";
#aHier.tree[0].children[0].item.val("Red"); #aHier = hierachy object .tree[0] = reference the FIRST root node on the hierachy [product] .children[0] = reference the FIRST child node of the reference node [color] .item = get the object referenced by this node .val("Red") = set the object's value (the STANDARD javascript object value reference method)
var rollup = function(nodes) { var cst = 0; // running cost for this list of node for (var c=0; c < nodes.length; c++){ // for each node in the list var aNode = nodes[c]; if (aNode.selected()) { // if the node is selected try { cst += aNode.item.prop("cost"); // add the "cost" object control property } catch(e) { } if ((aNode.item.aType == TYPE_LIST) || (aNode.item.aType == TYPE_BOOLEAN)) { try { cst += aNode.item.inst("cost"); // add the "cost" object instance property of the selected instance } catch(e) { } } // recurse for any children if (aNode.children) cst += rollup(aNode.children); // optionally set the node's "total_cost" back in an object control property // node.prop("total_cost",cst); } } return cst; } // call rollup var hierachyCost = rollup(#aHier.tree);