Commit fda84270 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Made a couple of minor performance tweeks to navtree.js

parent 16bc7735
var SYNCONMSG = 'click to disable panel synchronisation';
var SYNCOFFMSG = 'click to enable panel synchronisation';
var navTreeSubIndices = new Array(); var navTreeSubIndices = new Array();
function getData(varName) function getData(varName)
...@@ -78,12 +80,12 @@ function createIndent(o,domNode,node,level) ...@@ -78,12 +80,12 @@ function createIndent(o,domNode,node,level)
var level=-1; var level=-1;
var n = node; var n = node;
while (n.parentNode) { level++; n=n.parentNode; } while (n.parentNode) { level++; n=n.parentNode; }
var imgNode = document.createElement("img");
imgNode.style.paddingLeft=(16*level).toString()+'px';
imgNode.width = 16;
imgNode.height = 22;
imgNode.border = 0;
if (node.childrenData) { if (node.childrenData) {
var imgNode = document.createElement("img");
imgNode.style.paddingLeft=(16*level).toString()+'px';
imgNode.width = 16;
imgNode.height = 22;
imgNode.border = 0;
node.plus_img = imgNode; node.plus_img = imgNode;
node.expandToggle = document.createElement("a"); node.expandToggle = document.createElement("a");
node.expandToggle.href = "javascript:void(0)"; node.expandToggle.href = "javascript:void(0)";
...@@ -100,8 +102,12 @@ function createIndent(o,domNode,node,level) ...@@ -100,8 +102,12 @@ function createIndent(o,domNode,node,level)
domNode.appendChild(node.expandToggle); domNode.appendChild(node.expandToggle);
imgNode.src = node.relpath+"ftv2pnode.png"; imgNode.src = node.relpath+"ftv2pnode.png";
} else { } else {
imgNode.src = node.relpath+"ftv2node.png"; var span = document.createElement("span");
domNode.appendChild(imgNode); span.style.display = 'inline-block';
span.style.width = 16*(level+1)+'px';
span.style.height = '22px';
span.innerHTML = ' ';
domNode.appendChild(span);
} }
} }
...@@ -320,7 +326,7 @@ function showNode(o, node, index, hash) ...@@ -320,7 +326,7 @@ function showNode(o, node, index, hash)
if (!node.childrenVisited) { if (!node.childrenVisited) {
getNode(o, node); getNode(o, node);
} }
$(node.getChildrenUL()).show(); $(node.getChildrenUL()).css({'display':'block'});
if (node.isLast) { if (node.isLast) {
node.plus_img.src = node.relpath+"ftv2mlastnode.png"; node.plus_img.src = node.relpath+"ftv2mlastnode.png";
} else { } else {
...@@ -352,8 +358,22 @@ function showNode(o, node, index, hash) ...@@ -352,8 +358,22 @@ function showNode(o, node, index, hash)
} }
} }
function removeToInsertLater(element) {
var parentNode = element.parentNode;
var nextSibling = element.nextSibling;
parentNode.removeChild(element);
return function() {
if (nextSibling) {
parentNode.insertBefore(element, nextSibling);
} else {
parentNode.appendChild(element);
}
};
}
function getNode(o, po) function getNode(o, po)
{ {
var insertFunction = removeToInsertLater(po.li);
po.childrenVisited = true; po.childrenVisited = true;
var l = po.childrenData.length-1; var l = po.childrenData.length-1;
for (var i in po.childrenData) { for (var i in po.childrenData) {
...@@ -361,6 +381,7 @@ function getNode(o, po) ...@@ -361,6 +381,7 @@ function getNode(o, po)
po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],
i==l); i==l);
} }
insertFunction();
} }
function gotoNode(o,subIndex,root,hash,relpath) function gotoNode(o,subIndex,root,hash,relpath)
...@@ -466,6 +487,7 @@ function initNavTree(toroot,relpath) ...@@ -466,6 +487,7 @@ function initNavTree(toroot,relpath)
$(window).load(function(){ $(window).load(function(){
navTo(o,toroot,window.location.hash,relpath); navTo(o,toroot,window.location.hash,relpath);
showRoot();
}); });
$(window).bind('hashchange', function(){ $(window).bind('hashchange', function(){
...@@ -489,7 +511,5 @@ function initNavTree(toroot,relpath) ...@@ -489,7 +511,5 @@ function initNavTree(toroot,relpath)
navTo(o,toroot,window.location.hash,relpath); navTo(o,toroot,window.location.hash,relpath);
} }
}) })
$(window).load(showRoot);
} }
"var SYNCONMSG = 'click to disable panel synchronisation';\n"
"var SYNCOFFMSG = 'click to enable panel synchronisation';\n"
"var navTreeSubIndices = new Array();\n" "var navTreeSubIndices = new Array();\n"
"\n" "\n"
"function getData(varName)\n" "function getData(varName)\n"
...@@ -78,12 +80,12 @@ ...@@ -78,12 +80,12 @@
" var level=-1;\n" " var level=-1;\n"
" var n = node;\n" " var n = node;\n"
" while (n.parentNode) { level++; n=n.parentNode; }\n" " while (n.parentNode) { level++; n=n.parentNode; }\n"
" var imgNode = document.createElement(\"img\");\n"
" imgNode.style.paddingLeft=(16*level).toString()+'px';\n"
" imgNode.width = 16;\n"
" imgNode.height = 22;\n"
" imgNode.border = 0;\n"
" if (node.childrenData) {\n" " if (node.childrenData) {\n"
" var imgNode = document.createElement(\"img\");\n"
" imgNode.style.paddingLeft=(16*level).toString()+'px';\n"
" imgNode.width = 16;\n"
" imgNode.height = 22;\n"
" imgNode.border = 0;\n"
" node.plus_img = imgNode;\n" " node.plus_img = imgNode;\n"
" node.expandToggle = document.createElement(\"a\");\n" " node.expandToggle = document.createElement(\"a\");\n"
" node.expandToggle.href = \"javascript:void(0)\";\n" " node.expandToggle.href = \"javascript:void(0)\";\n"
...@@ -100,8 +102,12 @@ ...@@ -100,8 +102,12 @@
" domNode.appendChild(node.expandToggle);\n" " domNode.appendChild(node.expandToggle);\n"
" imgNode.src = node.relpath+\"ftv2pnode.png\";\n" " imgNode.src = node.relpath+\"ftv2pnode.png\";\n"
" } else {\n" " } else {\n"
" imgNode.src = node.relpath+\"ftv2node.png\";\n" " var span = document.createElement(\"span\");\n"
" domNode.appendChild(imgNode);\n" " span.style.display = 'inline-block';\n"
" span.style.width = 16*(level+1)+'px';\n"
" span.style.height = '22px';\n"
" span.innerHTML = ' ';\n"
" domNode.appendChild(span);\n"
" } \n" " } \n"
"}\n" "}\n"
"\n" "\n"
...@@ -320,7 +326,7 @@ ...@@ -320,7 +326,7 @@
" if (!node.childrenVisited) {\n" " if (!node.childrenVisited) {\n"
" getNode(o, node);\n" " getNode(o, node);\n"
" }\n" " }\n"
" $(node.getChildrenUL()).show();\n" " $(node.getChildrenUL()).css({'display':'block'});\n"
" if (node.isLast) {\n" " if (node.isLast) {\n"
" node.plus_img.src = node.relpath+\"ftv2mlastnode.png\";\n" " node.plus_img.src = node.relpath+\"ftv2mlastnode.png\";\n"
" } else {\n" " } else {\n"
...@@ -352,8 +358,22 @@ ...@@ -352,8 +358,22 @@
" }\n" " }\n"
"}\n" "}\n"
"\n" "\n"
"function removeToInsertLater(element) {\n"
" var parentNode = element.parentNode;\n"
" var nextSibling = element.nextSibling;\n"
" parentNode.removeChild(element);\n"
" return function() {\n"
" if (nextSibling) {\n"
" parentNode.insertBefore(element, nextSibling);\n"
" } else {\n"
" parentNode.appendChild(element);\n"
" }\n"
" };\n"
"}\n"
"\n"
"function getNode(o, po)\n" "function getNode(o, po)\n"
"{\n" "{\n"
" var insertFunction = removeToInsertLater(po.li);\n"
" po.childrenVisited = true;\n" " po.childrenVisited = true;\n"
" var l = po.childrenData.length-1;\n" " var l = po.childrenData.length-1;\n"
" for (var i in po.childrenData) {\n" " for (var i in po.childrenData) {\n"
...@@ -361,6 +381,7 @@ ...@@ -361,6 +381,7 @@
" po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],\n" " po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2],\n"
" i==l);\n" " i==l);\n"
" }\n" " }\n"
" insertFunction();\n"
"}\n" "}\n"
"\n" "\n"
"function gotoNode(o,subIndex,root,hash,relpath)\n" "function gotoNode(o,subIndex,root,hash,relpath)\n"
...@@ -466,6 +487,7 @@ ...@@ -466,6 +487,7 @@
"\n" "\n"
" $(window).load(function(){\n" " $(window).load(function(){\n"
" navTo(o,toroot,window.location.hash,relpath);\n" " navTo(o,toroot,window.location.hash,relpath);\n"
" showRoot();\n"
" });\n" " });\n"
"\n" "\n"
" $(window).bind('hashchange', function(){\n" " $(window).bind('hashchange', function(){\n"
...@@ -489,7 +511,5 @@ ...@@ -489,7 +511,5 @@
" navTo(o,toroot,window.location.hash,relpath);\n" " navTo(o,toroot,window.location.hash,relpath);\n"
" }\n" " }\n"
" })\n" " })\n"
"\n"
" $(window).load(showRoot);\n"
"}\n" "}\n"
"\n" "\n"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment