📄 dhtmlxtree.js
字号:
if (this.waitUpdateXML){
this.waitUpdateXML=false;
for (var i=temp.childsCount-1; i>=0; i--)
if (temp.childNodes[i]._dmark)
this.deleteItem(temp.childNodes[i].id);
}
var parsedNodeTop=this._globalIdStorageFind(this.parsingOn);
for (var i=0; i<this.parsedArray.length; i++)
temp.htmlNode.childNodes[0].appendChild(this.parsedArray[i]);
this.lastLoadedXMLId=parentId;
this.XMLloadingWarning=0;
var chArr=this.setCheckList.split(this.dlmtr);
for (var n=0; n<chArr.length; n++)
if (chArr[n]) this.setCheck(chArr[n],1);
if ((this.XMLsource)&&(this.tscheck)&&(this.smcheck)&&(temp.id!=this.rootId)){
if (temp.checkstate===0)
this._setSubChecked(0,temp);
else if (temp.checkstate===1)
this._setSubChecked(1,temp);
}
if (this.onXLE) this.onXLE(this,parentId);
this._redrawFrom(this,null,start)
if (p.get("order") && p.get("order")!="none")
this._reorderBranch(temp,p.get("order"),true);
if (this.nodeAskingCall!="") this.selectItem(this.nodeAskingCall,true);
if (this._branchUpdate) this._branchUpdateNext(p);
}
if (this.parsCount==1) {
this.parsingOn=null;
if ((!this._edsbps)||(!this._edsbpsA.length)){
var that=this;
window.setTimeout( function(){ that.callEvent("onXLE",[that,parentId]); },1);
this.xmlstate=0;
}
this.skipLock=false;
}
this.parsCount--;
if ((this._epgps)&&(start))
this._setPrevPageSign(temp,(start||0),level,node);
return this.nodeAskingCall;
};
dhtmlXTreeObject.prototype._branchUpdateNext=function(p){
p.each("item",function(c){
var nid=c.get("id");
if (this._idpull[nid] && (!this._idpull[nid].XMLload)) return;
this._branchUpdate++;
this.smartRefreshItem(c.get("id"),c);
},this)
this._branchUpdate--;
}
dhtmlXTreeObject.prototype.checkUserData=function(node,parentId){
if ((node.nodeType==1)&&(node.tagName == "userdata"))
{
var name=node.getAttribute("name");
if ((name)&&(node.childNodes[0]))
this.setUserData(parentId,name,node.childNodes[0].data);
}
}
/**
* @desc: reset tree images from selected level
* @type: private
* @param: dhtmlObject - tree
* @param: itemObject - current item
* @topic: 6
*/
dhtmlXTreeObject.prototype._redrawFrom=function(dhtmlObject,itemObject,start,visMode){
if (!itemObject) {
var tempx=dhtmlObject._globalIdStorageFind(dhtmlObject.lastLoadedXMLId);
dhtmlObject.lastLoadedXMLId=-1;
if (!tempx) return 0;
}
else tempx=itemObject;
var acc=0;
for (var i=(start?start-1:0); i<tempx.childsCount; i++)
{
if ((!this._branchUpdate)||(this._getOpenState(tempx)==1))
if ((!itemObject)||(visMode==1)) 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 ((!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 (itemObject.unParsed) return;
if (this.rootId!=itemObject.id) {
var Nodes=itemObject.htmlNode.childNodes[0].childNodes;
var Count=Nodes.length;
for (var i=1; i<Count; i++)
Nodes[i].style.display="none";
this._correctPlus(itemObject);
}
for (var i=0; i<itemObject.childsCount; i++)
if (itemObject.childNodes[i].childsCount)
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){
if (!itemObject.htmlNode) return;
var imsrc=itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[0].lastChild;
var imsrc2=itemObject.htmlNode.childNodes[0].childNodes[0].childNodes[2].childNodes[0];
var workArray=this.lineArray;
if ((this.XMLsource)&&(!itemObject.XMLload))
{
var workArray=this.plusArray;
this._setSrc(imsrc2,this.imPath+itemObject.images[2]);
if (this._txtimg) return (imsrc.innerHTML="[+]");
}
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;
this._setSrc(imsrc2,this.imPath+itemObject.images[1]);
if (this._txtimg) return (imsrc.innerHTML="[-]");
}
else
{
if (!itemObject.wsign) var workArray=this.plusArray;
this._setSrc(imsrc2,this.imPath+itemObject.images[2]);
if (this._txtimg) return (imsrc.innerHTML="[+]");
}
}
else
{
this._setSrc(imsrc2,this.imPath+itemObject.images[0]);
}
var tempNum=2;
if (!itemObject.treeNod.treeLinesOn) this._setSrc(imsrc,this.imPath+workArray[3]);
else {
if (itemObject.parentObject) tempNum=this._getCountStatus(itemObject.id,itemObject.parentObject);
this._setSrc(imsrc,this.imPath+workArray[tempNum]);
}
};
/**
* @desc: set correct tree-line images
* @type: private
* @param: itemObject - item object
* @topic: 6
*/
dhtmlXTreeObject.prototype._correctLine=function(itemObject){
if (!itemObject.htmlNode) return;
var sNode=itemObject.parentObject;
if (sNode)
if ((this._getLineStatus(itemObject.id,sNode)==0)||(!this.treeLinesOn))
for(var i=1; i<=itemObject.childsCount; i++){
if (!itemObject.htmlNode.childNodes[0].childNodes[i]) break;
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++){
if (!itemObject.htmlNode.childNodes[0].childNodes[i]) break;
itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundImage="url("+this.imPath+this.lineArray[5]+")";
itemObject.htmlNode.childNodes[0].childNodes[i].childNodes[0].style.backgroundRepeat="repeat-y";
}
};
/**
* @desc: return type of node
* @type: private
* @param: itemId - item id
* @param: itemObject - parent node object
* @topic: 6
*/
dhtmlXTreeObject.prototype._getCountStatus=function(itemId,itemObject){
if (itemObject.childsCount<=1) { if (itemObject.id==this.rootId) return 4; else return 0; }
if (itemObject.childNodes[0].id==itemId) if (!itemObject.id) return 2; else return 1;
if (itemObject.childNodes[itemObject.childsCount-1].id==itemId) return 0;
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.childNodes[itemObject.childsCount-1].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)) {
if (mode==1) return; //close for not loaded node - ignore it
itemObject.XMLload=1;
this._loadDynXML(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
*/
dhtmlXTreeObject.prototype._getOpenState=function(itemObject){
var z=itemObject.htmlNode.childNodes[0].childNodes;
if (z.length<=1) return 0;
if (z[1].style.display!="none") return 1;
else return -1;
}
/**
* @desc: ondblclick item event handler
* @type: private
* @topic: 0
*/
dhtmlXTreeObject.prototype.onRowClick2=function(){
var that=this.parentObject.treeNod;
if (!that.callEvent("onDblClick",[this.parentObject.id,that])) return 0;
if ((this.parentObject.closeble)&&(this.parentObject.closeble!="0"))
that._HideShow(this.parentObject);
else
that._HideShow(this.parentObject,2);
if (that.checkEvent("onOpenEnd"))
if (!that.xmlstate)
that.callEvent("onOpenEnd",[this.parentObject.id,that._getOpenState(this.parentObject)]);
else{
that._oie_onXLE.push(that.onXLE);
that.onXLE=that._epnFHe;
}
};
/**
* @desc: onclick item event handler
* @type: private
* @topic: 0
*/
dhtmlXTreeObject.prototype.onRowClick=function(){
var that=this.parentObject.treeNod;
if (!that.callEvent("onOpenStart",[this.parentObject.id,that._getOpenState(this.parentObject)])) return 0;
if ((this.parentObject.closeble)&&(this.parentObject.closeble!="0"))
that._HideShow(this.parentObject);
else
that._HideShow(this.parentObject,2);
//#on_open_end_event:11052006{
if (that.checkEvent("onOpenEnd"))
if (!that.xmlstate)
that.callEvent("onOpenEnd",[this.parentObject.id,that._getOpenState(this.parentObject)]);
else{
that._oie_onXLE.push(that.onXLE);
that.onXLE=that._epnFHe;
}
//#}
};
//#on_open_end_event:11052006{
dhtmlXTreeObject.prototype._epnFHe=function(that,id,flag){
if (id!=this.rootId)
this.callEvent("onOpenEnd",[id,that.getOpenState(id)]);
that.onXLE=that._oie_onXLE.pop();
if (!flag && !that._oie_onXLE.length)
if (that.onXLE) that.onXLE(that,id);
}
//#}
/**
* @desc: onclick item image event handler
* @type: private
* @edition: Professional
* @topic: 0
*/
dhtmlXTreeObject.prototype.onRowClickDown=function(e){
e=e||window.event;
var that=this.parentObject.treeNod;
that._selectItem(this.parentObject,e);
};
/*****
SELECTION
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -