<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Dojo Tree Widget Test (dynamic node creation)</title> <script type="text/javascript"> var djConfig = {isDebug: true, debugAtAllCosts: true }; </script> <script type="text/javascript" src="../../../dojo.js"></script> <script type="text/javascript"> delete dojo["profile"]; dojo.require("dojo.widget.*"); dojo.require("dojo.widget.TreeV3"); dojo.require("dojo.widget.TreeNodeV3"); dojo.require("dojo.widget.TreeBasicControllerV3"); dojo.require("dojo.profile"); dojo.hostenv.writeIncludes(); </script> <script type="text/javascript"> dojo.addOnLoad(function(){ var depth = 0; function addChildren(title,nodeOrTree) { //dojo.debug("addChildren to "+nodeOrTree+" depth" + depth) depth++; var children = []; for (var i=1; i<=10; i++) { var t = title+'.'+i dojo.profile.start("createWidget"); var node = dojo.widget.TreeNodeV3.prototype.createSimple({title: t, tree: tree}) // slow generic method (1.5-3x diff) //var node = dojo.widget.createWidget("TreeNodeV3", {title: t, tree:tree.widgetId}); dojo.profile.end("createWidget"); if (depth<3) { addChildren(t, node); } children.push(node); } nodeOrTree.setChildren(children) //dojo.debug("out "+nodeOrTree); depth--; } dojo.profile.start("createController"); var controller = dojo.widget.createWidget("TreeBasicControllerV3"); dojo.profile.end("createController"); dojo.profile.start("createTree"); var tree = dojo.widget.createWidget("TreeV3", {listeners: [controller.widgetId]}); dojo.profile.end("createTree"); document.body.appendChild(tree.domNode); dojo.profile.start("createNodes"); addChildren('node', tree) dojo.profile.end("createNodes"); var nodeCount = 0; dojo.lang.forEach(tree.getDescendants(), function() { nodeCount++ }); dojo.debug("Nodes total: "+nodeCount); dojo.profile.dump(true); }); </script> </head> <body> <h4>Test/profile fast nested nodes generation and adoptation</h4> </body> </html>