treeview_support.js

来自「精美的AJAX树形菜单」· JavaScript 代码 · 共 773 行 · 第 1/2 页

JS
773
字号
var qqSr=new Array();
function qqSw(qzt,qqSs){
	this.qzt=qzt;
	this.qqSs=qqSs;
	this.X=0;
	this.Y=0;
	this.Height=0;
	this.Width=0;
	}
;
function ComponentArt_TreeRegisterCoords(qzt){
	var qqSs=document.getElementById(qzt.TreeViewID+'_div');
	qqSr[qqSr.length]=new qqSw(qzt,qqSs);
	}
;
function qqSy(){
	for(var qzba=0;qzba<qqSr.length;qzba++){
		var qqSs=qqSr[qzba].qqSs;
		qqSr[qzba].X=qzhg(qqSs);
		qqSr[qzba].Y=qzfb(qqSs);
		qqSr[qzba].Height=qqSs.offsetHeight;
		qqSr[qzba].Width=qqSs.offsetWidth;
		}
	;
	}
;
var qzle=20,ComponentArt_TreeView_CalcTargetIntervalDelay=100,qzbj=null,qzjd;
function ComponentArt_ExpandDivStep(qzeq,qzfu,qzeb){
	var qzcp=( new Date()).getTime()-qzjd,qzcc=qzAjr(qzcp,qzfu,qzeb);

	if(qzcc==1){
		qzbj.style.height=qzeq;
		qzbj.style.overflow='visible';
		qzbj.style.height='';
		qzbj=null;
		}
	else{
		qzbj.style.height=Math.max(1,Math.floor(qzeq*qzcc));
		setTimeout('ComponentArt_ExpandDivStep('+qzeq+','+qzfu+','+qzeb+');',qzle);
		};
	}
;
function qzzn(qzt,qzn,qzm,qzcu,qqZj){
	if(qzbj){
		return;
		};
	if(qzdc==qzn){
		return;
		};
	if(qzt.ClientSideOnNodeExpand&&!qzt.ClientSideOnNodeExpand(qzm)){
		return;
		};
	if(qzm.AutoPostBackOnExpand){
		__doPostBack(qzt.ControlId,'EXPAND '+qzm.PostBackID);
		return;
		};
	var qzAhx=document.getElementById(qzt.TreeViewID+'_div');
	if(qzn.childNodes.length==0){
		qzm.qzcu=qzcu;
		if(qzm.ContentCallbackUrl&&qzm.ContentCallbackUrl!=''&&qzm.ChildIndices.length==0){
			qzm.FetchContent();
			return;
			};
		qzn.innerHTML=qzm.qzuc();
		};
	var qzlc=qzn.cloneNode(true);
	qzlc.style.visibility='hidden';
	qzlc.style.display='block';
	qzlc.style.height='';
	document.body.appendChild(qzlc);
	var qzeq=qzlc.offsetHeight;
	qzff(qzlc);
	qzm.Expanded=true;
	qzm.SaveState();
	var qzfu=qqZj?0:qzt.ExpandDuration;
	if(qzeq>qzAhx.offsetHeight){
		qzfu=0;
		};
	qzbj=qzn;
	qzbj.style.height=1;
	qzbj.style.width='100%';
	qzbj.style.overflow='hidden';
	qzbj.style.display='block';
	if((qzt.ExpandTransition>0||qzt.ExpandTransitionCustomFilter!='')&&qzfu>0&&cart_browser_transitions){
		if(!qzn.ExpandTransitionFilterDefined){
			var qzdi=qzAhv(qzt.ExpandTransition,qzt.ExpandTransitionCustomFilter);
			qzn.ExpandTransitionFilterIndex=qzn.filters.length;
			qzn.ExpandTransitionFilterDefined=true;
			qzn.runtimeStyle.filter=qzn.currentStyle.filter+' '+qzdi;
			};
		qzn.style.visibility='hidden';
		qzn.filters[qzn.ExpandTransitionFilterIndex].apply();
		qzn.style.visibility='visible';
		qzn.filters[qzn.ExpandTransitionFilterIndex].play(qzfu/1000);
		};
	qzjd=( new Date()).getTime();
	ComponentArt_ExpandDivStep(qzeq,qzfu,qzt.ExpandSlide);
	var qzAeb=qzt.TreeViewID+'_item_'+qzm.StorageIndex+'_expcol',qzsr=document.getElementById(qzAeb);
	if(qzsr){
		qzsr.childNodes[0].style.display='none';
		qzsr.childNodes[1].style.display='inline';
		};
	var qzih=qzm.ExpandedImageUrl;
	if(!qzih||qzih=='')
		qzih=qzt.ExpandedParentNodeImageUrl;
	if(qzih&&qzih!=''){
		var qzzo=document.getElementById(qzt.TreeViewID+'_item_'+qzm.StorageIndex+'_icon');
		if(qzzo){
			qzzo.src=qzih;
			};
		};

	if(qzt.ExpandSinglePath){
		var qzep,qzzi=qzm.GetParentNode();
		if(qzzi!=null){
			qzep=qzzi.Nodes();
			}
		else{
			qzep=qzt.Nodes();
			};
		for(var qzba=0;qzba<qzep.length;qzba++){
			if(qzep[qzba].Expanded&&qzep[qzba].StorageIndex!=qzm.StorageIndex){
				qzep[qzba].Collapse(qqZj);
				};
			}
		;
		var qzdy=document.getElementById(qzt.TreeViewID+'_item_'+qzm.StorageIndex);
		qzdy.onmouseout();
		};
	}
;
var qzdc=null,qzig;
function ComponentArt_CollapseDivStep(qzky,qzfu,qzeb){
	var qzcp=( new Date()).getTime()-qzig,qzcc=qzAjr(qzcp,qzfu,qzeb);

	if(qzcc==1){
		qzdc.style.display='none';
		qzdc=null;
		}
	else{
		qzdc.style.height=Math.ceil((1-qzcc)*qzky);
		setTimeout('ComponentArt_CollapseDivStep('+qzky+','+qzfu+','+qzeb+');',qzle);
		};
	}
;
function qzqp(qzt,qzn,qzm,qqZj){
	if(qzdc){
		return;
		};
	if(qzbj==qzn){
		return;
		};
	if(qzt.ClientSideOnNodeCollapse&&!qzt.ClientSideOnNodeCollapse(qzm)){
		return;
		};
	if(qzm.AutoPostBackOnCollapse){
		__doPostBack(qzt.ControlId,'COLLAPSE '+qzm.PostBackID);
		return;
		};
	qzm.Expanded=false;
	qzm.SaveState();
	qzdc=qzn;
	qzdc.style.overflow='hidden';
	var qzfu=qqZj?0:qzt.CollapseDuration;
	if((qzt.CollapseTransition>0||qzt.CollapseTransitionCustomFilter!='')&&qzfu>0&&cart_browser_transitions){
		if(!qzn.CollapseTransitionFilterDefined){
			var qzcy=qzAhv(qzt.CollapseTransition,qzt.CollapseTransitionCustomFilter);
			qzn.CollapseTransitionFilterIndex=qzn.filters.length;
			qzn.CollapseTransitionFilterDefined=true;
			qzn.runtimeStyle.filter=qzn.currentStyle.filter+' '+qzcy;
			};
		qzn.style.visibility='visible';
		qzn.filters[qzn.CollapseTransitionFilterIndex].apply();
		qzn.style.visibility='hidden';
		qzn.filters[qzn.CollapseTransitionFilterIndex].play(qzfu/1000);
		};
	if(qzt.CollapseSlide==0&&qzfu>0){
		setTimeout('ComponentArt_TreeView_CollapseStartTime=(new Date()).getTime();ComponentArt_CollapseDivStep(0,0,0);',
							 qzfu);
		}
	else{
		qzig=( new Date()).getTime();
		ComponentArt_CollapseDivStep(qzn.offsetHeight,qzfu,qzt.CollapseSlide);
		};
	var qzAeb=qzt.TreeViewID+'_item_'+qzm.StorageIndex+'_expcol',qzsr=document.getElementById(qzAeb);
	if(qzsr){
		qzsr.childNodes[1].style.display='none';
		qzsr.childNodes[0].style.display='inline';
		};
	var qzih=qzm.ExpandedImageUrl;
	if(!qzih||qzih=='')
		qzih=qzt.ExpandedParentNodeImageUrl;

	if(qzih&&qzih!=''){
		var qzzo=document.getElementById(qzt.TreeViewID+'_item_'+qzm.StorageIndex+'_icon');
		if(qzzo){
			var qzAas=qzm.ImageUrl;
			if(!qzAas||qzAas==''){
				qzAas=qzt.ParentNodeImageUrl;
				};
			qzzo.src=qzAas;
			};
		};
	}
;
function ComponentArt_ExpandCollapse(qzea,treeViewId,qzcu){
	var qzt=qzlh(treeViewId),qzm=qzt.qzo(qzea);
	qzm.qzcu=qzcu;
	var qzAgf=treeViewId+'_item_'+qzea+'_div',qzxz=document.getElementById(qzAgf);
	if(!qzm.Expanded){
		qzzn(qzt,qzxz,qzm,qzcu);
		}
	else{
		qzqp(qzt,qzxz,qzm);
		};

	if(qzt.qzad&&qzt.qzad.StorageIndex==qzm.StorageIndex){
		qzt.qzad.Expanded=qzm.Expanded;
		};
	}
;
var qzog,qzof,qqQn=0,qqQo=0,qzdt=null,qzbm=null,qzbb=null,qzgn,qzod=0,qzoc=0,ComponentArt_TargetCalcInterval,qqQh,qqQj,
		qqQi,qqQr,qqQl,  qqQm;
function qzAaq(qzim){
	ComponentArt_CancelEvent(qzim);
	var qzp=document.all?event.clientX+document.body.scrollLeft:qzim.pageX,
			qzf=document.all?event.clientY+document.body.scrollTop:qzim.pageY;
	window.status='NodeDrag in '+qqQm.id+': '+qzp+' '+qzf+' '+(qqQj?qqQj.Text:'none')+' '+qqQi;
	qqQn=qzp;
	qqQo=qzf;
	if(!qzgn&&Math.max(Math.abs(qzp-qzog),Math.abs(qzf-qzof))>1){
		qzgn=true;
		var qzea=qzdu(qzdt.id);
		qzbb=qze.qzo(qzea);
		qzbm=document.createElement('DIV');
		qzbm.style.position='absolute';
		qzbm.style.cursor='default';
		var qza=new Array();
		qza[qza.length]="<table><tr>";
		var qzAjv=qzbb.qzAey();
		if(qzAjv!=''){
			qza[qza.length]="<td><img src='"+qzAjv+"'></td>";
			};
		qza[qza.length]="<td class='"+qzbb.qzao(false,false,false)+"'>"+qzbb.qzll()+"</td><tr></table>";
		qzbm.innerHTML=qza.join('');
		document.body.appendChild(qzbm);
		if(document.all){
			qzbm.style.filter='alpha(opacity=50)';
			}
		else{
			qzbm.style.opacity=0.5;
			qzbm.style.setProperty('-moz-opacity',0.5,"");
			};
		ComponentArt_TargetCalcInterval=setInterval('ComponentArt_CalcDragTarget();',
																								ComponentArt_TreeView_CalcTargetIntervalDelay);
		};
	if(qqQm&&qqQm.scrollHeight>qqQm.offsetHeight){
		var qzAbk=qzfb(qqQm);
		if(qqQm.scrollTop>0&&qzf>=qzAbk&&qzf-qzAbk<25){
			qqQm.scrollTop=Math.max(0,qqQm.scrollTop-5);
			}
		else if(qzf<=qzAbk+qqQm.offsetHeight&&(qzAbk+qqQm.offsetHeight)-qzf<25){
			qqQm.scrollTop=qqQm.scrollTop+5;
			};
		};
	if(qzgn){
		qzbm.style.left=qzp-(document.all?qzod:0);
		qzbm.style.top=qzf-(document.all?qzoc:0);
		};

	return false;
	}
;
function qzAap(qzim){
	clearInterval(ComponentArt_TargetCalcInterval);
	qqSt();
	document.onmousemove=null;
	document.onmouseup=null;
	qzdt=null;
	if(!qzgn){
		return false;
		};
	qzff(qzbm);
	qzbm=null;
	if(!qqQl){
		return false;
		};
	qqQm.onmousemove=ComponentArt_CancelEvent;
	if(qqQi||(qqQj&&!qzyq(qzbb,qqQj))){
		var qqZa=(qqQl!=qzbb.ParentTreeView);
		if(qqZa&&!qzbb.DraggingAcrossTreesEnabled){
			return false;
			};
		if(qqQj&&(!qqZa&&!qqQj.DroppingEnabled)||(qqZa&&!qqQj.DroppingAcrossTreesEnabled)){
			return false;
			};
		if(!qqQi&&qqQj&&!qqQl.DropChildEnabled){
			return false;
			};
		if(qqQi&&qqQj&&!qqQl.DropSiblingEnabled){
			return false;
			};
		qzbb.ResolveAncestors();
		var qzfh,qqSf;
		if(qqQi){
			if(qqQj){
				if(qqQj.ChildIndices.length>0&&qqQj.Expanded){
					qzfh=qqQj;
					qqSf=0;
					}
				else{
					var qqSa=qqQj.GetParentNode();
					if(qqSa){
						for(qqSf=0;qqSf<qqSa.ChildIndices.length;qqSf++){
							if(qqSa.ChildIndices[qqSf]==qqQj.StorageIndex){
								break;
								};
							}
						;
						qqSf++;
						qzfh=qqSa;
						}
					else{
						var qqZd=qqQj.ParentTreeView.Nodes();
						for(qqSf=0;qqSf<qqZd.length;qqSf++){
							if(qqZd[qqSf].StorageIndex==qqQj.StorageIndex){
								break;
								};
							}
						;
						qqSf++;
						qzfh=null;
						};
					};
				}
			else{
				qzfh=null;
				qqSf=0;
				};
			}
		else{
			qzfh=qqQj;
			qqSf=qzfh.ChildIndices.length;
			};
		if(qzfh&&qqZa&&!qzfh.DroppingAcrossTreesEnabled){
			return false;
			};
		if(!qzfh&&!qzbb.ParentTreeView.DropRootEnabled){
			return false;
			};
		if(qzbb.ParentTreeView.ClientSideOnNodeMove){
			if(qzfh){
				qzfh.ResolveAncestors();
				};
			if(qzbb.ParentTreeView.SelectedNode!=null){
				qzbb.ParentTreeView.SelectedNode.ResolveAncestors();
				};
			if(!qzbb.ParentTreeView.ClientSideOnNodeMove(qzbb,qzfh,qqSf,qqQl)){
				return false;
				};
			};
		if(qzbb.AutoPostBackOnMove||qqZa||!qzfh){
			if(qzfh&&!qzfh.Expanded){
				qzfh.Expanded=true;
				qzfh.SaveState();
				};
			var qqSo='MOVE '+qzbb.PostBackID+' '+qqQl.ControlId+' '+(qzfh?qzfh.PostBackID:'')+' '+qqSf;
			__doPostBack(qzbb.ParentTreeView.ControlId,qqSo);
			return;
			};
		if(qzbb.ParentNode){
			qzbb.ParentNode.RemoveNode(qzbb.StorageIndex);
			};
		if(qzfh){
			qzfh.AddNode(qzbb,qqSf);
			}
		else{
			qqQl.AddNode(qzbb);
			};
		qztx(qzbb,qzbb.ParentTreeView,qzfh,qqSf);
		qze.Render();
		if(qzfh&&!qzfh.Expanded){
			var qzcu=qzfh.CalculateDepth();
			ComponentArt_ExpandCollapse(qzfh.StorageIndex,qzfh.ParentTreeView.TreeViewID,qzcu);
			};
		ComponentArt_InitKeyboard(qze);
		};

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?