⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dhtmlxtree.js

📁 dhtmlxGrid 是跨浏览器的 JavaScript 表格控制组件(Grid Control)
💻 JS
📖 第 1 页 / 共 5 页
字号:
		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 + -