📄 dhtmlxtree.js
字号:
return this._attachChildNode(parentObject,itemId,itemText,itemActionHandler,image1,image2,image3,optionStr,childs);
};
/**
* @desc: parse xml
* @type: private
* @param: dhtmlObject - jsTree object
* @param: node - top XML node
* @param: parentId - parent node id
* @param: level - level of tree
* @topic: 2
*/
dhtmlXTreeObject.prototype._parseXMLTree=function(dhtmlObject,node,parentId,level){
//alert("s"+dhtmlObject.parsCount+"-"+parentId);
if (!dhtmlObject.parsCount) dhtmlObject.parsCount=1; else dhtmlObject.parsCount++;
//alert("x"+dhtmlObject.parsCount+"-"+parentId);
dhtmlObject.XMLloadingWarning=1;
var nodeAskingCall="";
if (!node) {
node=dhtmlObject.XMLLoader.getXMLTopNode("tree");
parentId=node.getAttribute("id");
dhtmlObject.parsingOn=parentId;
dhtmlObject.parsedArray=new Array();
dhtmlObject.setCheckList="";
}
if (node.getAttribute("order"))
dhtmlObject._reorderXMLBranch(node);
for(var i=0; i<node.childNodes.length; i++)
{
if ((node.childNodes[i].nodeType==1)&&(node.childNodes[i].tagName == "item"))
{
var nodx=node.childNodes[i];
var name=nodx.getAttribute("text");
var cId=nodx.getAttribute("id");
if ((!dhtmlObject.waitUpdateXML)||(dhtmlObject.waitUpdateXML.toString().search(","+cId+",")!=-1))
{
var im0=nodx.getAttribute("im0");
var im1=nodx.getAttribute("im1");
var im2=nodx.getAttribute("im2");
var aColor=nodx.getAttribute("aCol");
var sColor=nodx.getAttribute("sCol");
var chd=nodx.getAttribute("child");
var atop=nodx.getAttribute("top");
var aopen=nodx.getAttribute("open");
var aselect=nodx.getAttribute("select");
var acall=nodx.getAttribute("call");
var achecked=nodx.getAttribute("checked");
var closeable=nodx.getAttribute("closeable");
var tooltip = nodx.getAttribute("tooltip");
var nocheckbox = nodx.getAttribute("nocheckbox");
var style = nodx.getAttribute("style");
var zST="";
if (aselect) zST+=",SELECT";
if (atop) zST+=",TOP";
//if (acall) zST+=",CALL";
if (acall) nodeAskingCall=cId;
if (achecked==-1) zST+=",HCHECKED";
else if (achecked) zST+=",CHECKED";
if (aopen) zST+=",OPEN";
var temp=dhtmlObject._globalIdStorageFind(parentId);
temp.XMLload=1;
var newNode=dhtmlObject.insertNewItem(parentId,cId,name,0,im0,im1,im2,zST,chd);
if (tooltip) newNode.span.parentNode.title=tooltip;
if (style) newNode.span.style.cssText+=(";"+style);
if (nocheckbox){
newNode.span.parentNode.previousSibling.previousSibling.childNodes[0].style.display='none';
newNode.nocheckbox=true;
}
newNode._acc=chd||0;
if (dhtmlObject.parserExtension) dhtmlObject.parserExtension._parseExtension(node.childNodes[i],dhtmlObject.parserExtension,cId,parentId);
dhtmlObject.setItemColor(newNode,aColor,sColor);
if ((closeable=="0")||(closeable=="1")) dhtmlObject.setItemCloseable(newNode,closeable);
var zcall="";
if ((!dhtmlObject.slowParse)||(dhtmlObject.waitUpdateXML))
{
zcall=dhtmlObject._parseXMLTree(dhtmlObject,node.childNodes[i],cId,1);
}
else{
if (node.childNodes[i].childNodes.length>0) {
for (var a=0; a<node.childNodes[i].childNodes.length; a++)
if (node.childNodes[i].childNodes[a].tagName=="item") {
newNode.unParsed=node.childNodes[i];
break;
}
}
}
if (zcall!="") nodeAskingCall=zcall;
}
else dhtmlObject._parseXMLTree(dhtmlObject,node.childNodes[i],cId,1);
}
else
if ((node.childNodes[i].nodeType==1)&&(node.childNodes[i].tagName == "userdata"))
{
var name=node.childNodes[i].getAttribute("name");
if ((name)&&(node.childNodes[i].childNodes[0])) {
if ((!dhtmlObject.waitUpdateXML)||(dhtmlObject.waitUpdateXML.toString().search(","+parentId+",")!=-1))
dhtmlObject.setUserData(parentId,name,node.childNodes[i].childNodes[0].data);
};
};
};
if (!level) {
if (dhtmlObject.waitUpdateXML)
dhtmlObject.waitUpdateXML="";
else{
var parsedNodeTop=dhtmlObject._globalIdStorageFind(dhtmlObject.parsingOn);
for (var i=0; i<dhtmlObject.parsedArray.length; i++)
parsedNodeTop.htmlNode.childNodes[0].appendChild(dhtmlObject.parsedArray[i]);
dhtmlObject.parsingOn=0;
dhtmlObject.lastLoadedXMLId=parentId;
dhtmlObject.XMLloadingWarning=0;
var chArr=dhtmlObject.setCheckList.split(",");
for (var n=0; n<chArr.length; n++)
if (chArr[n]) dhtmlObject.setCheck(chArr[n],1);
dhtmlObject._redrawFrom(dhtmlObject);
if (nodeAskingCall!="") dhtmlObject.selectItem(nodeAskingCall,true);
if (dhtmlObject.waitCall) dhtmlObject.waitCall();
}
}
//alert(dhtmlObject.parsCount);
if (dhtmlObject.parsCount==1) {
dhtmlObject.xmlstate=1;
}
dhtmlObject.parsCount--;
return nodeAskingCall;
};
/**
* @desc: reset tree images from selected level
* @type: private
* @param: dhtmlObject - tree
* @param: itemObject - current item
* @topic: 6
*/
dhtmlXTreeObject.prototype._redrawFrom=function(dhtmlObject,itemObject){
if (!itemObject) {
var tempx=dhtmlObject._globalIdStorageFind(dhtmlObject.lastLoadedXMLId);
dhtmlObject.lastLoadedXMLId=-1;
if (!tempx) return 0;
}
else tempx=itemObject;
var acc=0;
for (var i=0; i<tempx.childsCount; i++)
{
if (!itemObject) tempx.childNodes[i].htmlNode.parentNode.parentNode.style.display="";
if (tempx.childNodes[i].openMe==1)
{
this._openItem(tempx.childNodes[i]);
tempx.childNodes[i].openMe=0;
}
dhtmlObject._redrawFrom(dhtmlObject,tempx.childNodes[i]);
if (this.childCalc!=null){
if ((tempx.childNodes[i].unParsed)||((!tempx.childNodes[i].XMLload)&&(this.XMLsource)))
{
if (tempx.childNodes[i]._acc)
tempx.childNodes[i].span.innerHTML=tempx.childNodes[i].label+this.htmlcA+tempx.childNodes[i]._acc+this.htmlcB;
else
tempx.childNodes[i].span.innerHTML=tempx.childNodes[i].label;
}
if ((tempx.childNodes[i].childNodes.length)&&(this.childCalc))
{
if (this.childCalc==1)
{
tempx.childNodes[i].span.innerHTML=tempx.childNodes[i].label+this.htmlcA+tempx.childNodes[i].childsCount+this.htmlcB;
}
if (this.childCalc==2)
{
var zCount=tempx.childNodes[i].childsCount-(tempx.childNodes[i].pureChilds||0);
if (zCount)
tempx.childNodes[i].span.innerHTML=tempx.childNodes[i].label+this.htmlcA+zCount+this.htmlcB;
if (tempx.pureChilds) tempx.pureChilds++; else tempx.pureChilds=1;
}
if (this.childCalc==3)
{
tempx.childNodes[i].span.innerHTML=tempx.childNodes[i].label+this.htmlcA+tempx.childNodes[i]._acc+this.htmlcB;
}
if (this.childCalc==4)
{
var zCount=tempx.childNodes[i]._acc;
if (zCount)
tempx.childNodes[i].span.innerHTML=tempx.childNodes[i].label+this.htmlcA+zCount+this.htmlcB;
}
}
else if (this.childCalc==4) {
acc++;
}
acc+=tempx.childNodes[i]._acc;
if (this.childCalc==3){
acc++;
}
}
//dhtmlObject._correctLine(tempx.childNodes[i]);
//dhtmlObject._correctPlus(tempx.childNodes[i]);
};
if ((!tempx.unParsed)&&((tempx.XMLload)||(!this.XMLsource)))
tempx._acc=acc;
dhtmlObject._correctLine(tempx);
dhtmlObject._correctPlus(tempx);
};
/**
* @desc: create and return main html element of tree
* @type: private
* @topic: 0
*/
dhtmlXTreeObject.prototype._createSelf=function(){
var div=document.createElement('div');
div.className="containerTableStyle";
div.style.width=this.width;
div.style.height=this.height;
this.parentObject.appendChild(div);
return div;
};
/**
* @desc: collapse target node
* @type: private
* @param: itemObject - item object
* @topic: 4
*/
dhtmlXTreeObject.prototype._xcloseAll=function(itemObject)
{
if (this.rootId!=itemObject.id) this._HideShow(itemObject,1);
for (var i=0; i<itemObject.childsCount; i++)
this._xcloseAll(itemObject.childNodes[i]);
};
/**
* @desc: expand target node
* @type: private
* @param: itemObject - item object
* @topic: 4
*/
dhtmlXTreeObject.prototype._xopenAll=function(itemObject)
{
this._HideShow(itemObject,2);
for (var i=0; i<itemObject.childsCount; i++)
this._xopenAll(itemObject.childNodes[i]);
};
/**
* @desc: set correct tree-line and node images
* @type: private
* @param: itemObject - item object
* @topic: 6
*/
dhtmlXTreeObject.prototype._correctPlus=function(itemObject){
// return;
var workArray=this.lineArray;
if ((this.XMLsource)&&(!itemObject.XMLload))
{
var workArray=this.plusArray;
itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src=this.imPath+itemObject.images[2];
}
else
if ((itemObject.childsCount)||(itemObject.unParsed))
{
if ((itemObject.htmlNode.childNodes[0].childNodes[1])&&( itemObject.htmlNode.childNodes[0].childNodes[1].style.display!="none" ))
{
if (!itemObject.wsign) var workArray=this.minusArray;
itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src=this.imPath+itemObject.images[1];
}
else
{
if (!itemObject.wsign) var workArray=this.plusArray;
itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src=this.imPath+itemObject.images[2];
}
}
else
{
itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0].src=this.imPath+itemObject.images[0];
}
var tempNum=2;
if (!itemObject.treeNod.treeLinesOn) itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[0].childNodes[0].src=this.imPath+workArray[3];
else {
if (itemObject.parentObject) tempNum=this._getCountStatus(itemObject.id,itemObject.parentObject);
itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[0].childNodes[0].src=this.imPath+workArray[tempNum];
}
};
/**
* @desc: set correct tree-line images
* @type: private
* @param: itemObject - item object
* @topic: 6
*/
dhtmlXTreeObject.prototype._correctLine=function(itemObject){ //alert(itemObject.id);
var sNode=itemObject.parentObject;
try{
if (sNode)
if ((this._getLineStatus(itemObject.id,sNode)==0)||(!this.treeLinesOn))
{
for(var i=1; i<=itemObject.childsCount; i++)
{
itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundImage="";
itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundRepeat="";
}
}
else
for(var i=1; i<=itemObject.childsCount; i++)
{
itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundImage="url("+this.imPath+"line1.gif)";
itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundRepeat="repeat-y";
}
}
catch(e) {};
};
/**
* @desc: return type of node
* @type: private
* @param: itemId - item id
* @param: itemObject - parent node object
* @topic: 6
*/
dhtmlXTreeObject.prototype._getCountStatus=function(itemId,itemObject){
try{
if (itemObject.childsCount<=1) { if (itemObject.id==this.rootId) return 4; else return 0; }
if (itemObject.htmlNode.childNodes[0].childNodes[1].nodem.id==itemId) if (!itemObject.id) return 2; else return 1;
if (itemObject.htmlNode.childNodes[0].childNodes[itemObject.childsCount].nodem.id==itemId) return 0;
}
catch(e){};
return 1;
};
/**
* @desc: return type of node
* @type: private
* @param: itemId - node id
* @param: itemObject - parent node object
* @topic: 6
*/
dhtmlXTreeObject.prototype._getLineStatus =function(itemId,itemObject){
if (itemObject.htmlNode.childNodes[0].childNodes[itemObject.childsCount].nodem.id==itemId) return 0;
return 1;
}
/**
* @desc: open/close node
* @type: private
* @param: itemObject - node object
* @param: mode - open/close mode [1-close 2-open](optional)
* @topic: 6
*/
dhtmlXTreeObject.prototype._HideShow=function(itemObject,mode){
if ((this.XMLsource)&&(!itemObject.XMLload)) { itemObject.XMLload=1; this.loadXML(this.XMLsource+getUrlSymbol(this.XMLsource)+"id="+escape(itemObject.id)); return; };
var Nodes=itemObject.htmlNode.childNodes[0].childNodes; var Count=Nodes.length;
if (Count>1){
if ( ( (Nodes[1].style.display!="none") || (mode==1) ) && (mode!=2) ) {
//nb:solves standard doctype prb in IE
this.allTree.childNodes[0].border = "1";
this.allTree.childNodes[0].border = "0";
nodestyle="none";
}
else nodestyle="";
for (var i=1; i<Count; i++)
Nodes[i].style.display=nodestyle;
}
this._correctPlus(itemObject);
}
/**
* @desc: return node state
* @type: private
* @param: itemObject - node object
* @topic: 6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -