blob: 2b87647fc0fc7cc2ee569ebc3d83f013e6f4e1c9 (
plain) (
tree)
|
|
<html>
<head>
<style type="text/css">
html, body, div, p {
/* FIXME: how do we set the application font? */
padding: 0;
margin: 0;
}
div.row {
margin-left: 1em;
}
div.row p {
display: inline;
white-space: pre-wrap;
}
</style>
<script type="text/javascript">
function filterNodes (node, tagName)
{
var out = new Array();
for (var i = 0; i < node.childNodes.length; i++)
{
var elem = node.childNodes[i];
if (elem.tagName == tagName)
out.push(elem);
}
return out;
}
function getNodes(node)
{
return filterNodes(node, 'DIV');
}
function getContent(node)
{
return filterNodes(node, 'P')[0];
}
function insertRow (path, text)
{
var treeview = document.getElementById('treeview');
var parentnode = treeview;
var i;
// walk the tree
for (i = 0; i < path.length - 1; i++)
parentnode = getNodes(parentnode)[path[i]];
// create a new node
var newnode = document.createElement('div');
newnode.setAttribute('class', 'row');
// insert the new node into the tree
var nodes = getNodes(parentnode);
// console.log("path = " + path);
// console.log("i = " + i + ", path[i] = " + path[i] + ", nodes.length = " +
// nodes.length);
if (path[i] >= nodes.length)
parentnode.appendChild(newnode);
else
parentnode.insertBefore(newnode, nodes[path[i]]);
var contents = document.createElement('p');
newnode.appendChild(contents);
contents.innerHTML = text;
}
function changeRow (path, text)
{
var treeview = document.getElementById('treeview');
var node = treeview;
// console.log("path = " + path + ", text = '" + text + "'");
// walk the tree
for (var i = 0; i < path.length; i++)
node = getNodes(node)[path[i]];
// set the contents
var contents = getContent(node);
contents.innerHTML = text;
}
function deleteRow (path)
{
var treeview = document.getElementById('treeview');
var node = treeview;
// walk the tree
for (var i = 0; i < path.length; i++)
node = getNodes(node)[path[i]];
node.parentNode.removeChild(node);
}
function reorderRows (path, new_order)
{
var treeview = document.getElementById('treeview');
var node = treeview;
// walk the tree
for (var i = 0; i < path.length; i++)
node = getNodes(node)[path[i]];
var nodes = getNodes(node);
// remove all the nodes from the DOM
for (var i = 0; i < nodes.length; i++)
node.removeChild(nodes[i]);
// put them back in the new order
// For reference: new_order[new_pos] = old_pos
for (var i = 0; i < nodes.length; i++)
node.appendChild(nodes[new_order[i]]);
}
</script>
</head>
<body>
<div id="treeview">
</div>
</body>
</html>
|