Files
luos/gulliver/js/common/tree/tree.js

68 lines
2.4 KiB
JavaScript
Raw Normal View History

2010-12-02 23:34:41 +00:00
/* Manages a table of Tree type.
* @author David Callizaya
*/
function G_Tree() {
this.lastSelected = false;
this.lastSelectedClassName = 'treeNode';
var me = this;
this.changeSign = function( element, newSign ){
/*element must be the TR of the current node */
var spans = element.cells[0].childNodes;//getElementsByTagName('SPAN');
for(var r= 0 ; r<spans.length ; r++ ) {
if(spans[r].nodeName==='SPAN') {
if(spans[r].getAttribute('name')===newSign) {
spans[r].style.display='';
} else {
spans[r].style.display='none';
}
}
}
};
this.getRowOf=function (element) {
//NOTE: IF (element.offsetParent==null) there is no efect.
while(element.nodeName!='BODY') {
if (element.getAttribute('name')) {
if (element.getAttribute('name').substr(0,9)==='treeNode[') {
var regexp = /^treeNode\[[^\]]+\]\[([^\]]+)\]$/;
result = regexp.exec(element.getAttribute('name'));
if (!(result && result.length>=2)) return false;
//Now element is the TR of the current node.
return element.parentNode;
}
}
element = element.parentNode;
}
return false;
};
this.contract=function( element ){
if (!(element = this.getRowOf(element))) return;
var row = element.rowIndex;
if ( (row+1)>= element.parentNode.rows.length ) return;
element.parentNode.rows[row+1].style.display = 'none';
this.changeSign( element , 'plus' );
};
this.expand=function( element ){
if (!(element = this.getRowOf(element))) return;
var row = element.rowIndex;
if ( (row+1)>= element.parentNode.rows.length ) return;
element.parentNode.rows[row+1].style.display = '';
this.changeSign( element , 'minus' );
};
this.select=function( element ){
if (!(element = this.getRowOf(element))) return;
if (me.lastSelected) {
if (me.lastSelected.cells[1]) me.lastSelected.cells[1].className=me.lastSelectedClassName;
}
me.lastSelected = element ;
//me.lastSelected.cells[1].style.filter='Light';
//me.lastSelected.cells[1].filters['Light'].addAmbient(155,155,155,255);
me.lastSelectedClassName=me.lastSelected.cells[1].className;
me.lastSelected.cells[1].className="treeNodeSelected";
};
this.refresh=function( div , server ) {
div.innerHTML = ajax_function( server ,'','' );
};
};
var tree = new G_Tree();