📄 dhtmlxtree.js
字号:
dhtmlXTreeObject.prototype.getUserData=function(itemId,name){
var sNode=this._globalIdStorageFind(itemId,0,true);
if (!sNode) return;
return sNode.userData["t_"+name];
};
/**
* @desc: get node color
* @param: itemId - id of node
* @type: public
* @return: color of node (empty string for default color);
* @topic: 6
*/
dhtmlXTreeObject.prototype.getItemColor=function(itemId)
{
var temp=this._globalIdStorageFind(itemId);
if (!temp) return 0;
var res= new Object();
if (temp.acolor) res.acolor=temp.acolor;
if (temp.acolor) res.scolor=temp.scolor;
return res;
};
/**
* @desc: set node color
* @param: itemId - id of node
* @param: defaultColor - node color
* @param: selectedColor - selected node color
* @type: public
* @topic: 6
*/
dhtmlXTreeObject.prototype.setItemColor=function(itemId,defaultColor,selectedColor)
{
if ((itemId)&&(itemId.span))
var temp=itemId;
else
var temp=this._globalIdStorageFind(itemId);
if (!temp) return 0;
else {
if (temp.i_sel)
{ if (selectedColor) temp.span.style.color=selectedColor; }
else
{ if (defaultColor) temp.span.style.color=defaultColor; }
if (selectedColor) temp.scolor=selectedColor;
if (defaultColor) temp.acolor=defaultColor;
}
};
/**
* @desc: return item text
* @param: itemId - id of node
* @type: public
* @return: text of item (with HTML formatting, if any)
* @topic: 6
*/
dhtmlXTreeObject.prototype.getItemText=function(itemId)
{
var temp=this._globalIdStorageFind(itemId);
if (!temp) return 0;
return(temp.htmlNode.childNodes[0].childNodes[0].childNodes[3].childNodes[0].innerHTML);
};
/**
* @desc: return parent item id
* @param: itemId - id of node
* @type: public
* @return: id of parent item
* @topic: 4
*/
dhtmlXTreeObject.prototype.getParentId=function(itemId)
{
var temp=this._globalIdStorageFind(itemId);
if ((!temp)||(!temp.parentObject)) return "";
return temp.parentObject.id;
};
/**
* @desc: change item id
* @type: public
* @param: itemId - old node id
* @param: newItemId - new node id
* @topic: 4
*/
dhtmlXTreeObject.prototype.changeItemId=function(itemId,newItemId)
{
var temp=this._globalIdStorageFind(itemId);
if (!temp) return 0;
temp.id=newItemId;
temp.span.contextMenuId=newItemId;
for (var i=0; i<this._globalIdStorageSize; i++)
if (this._globalIdStorage[i]==itemId)
{
this._globalIdStorage[i]=newItemId;
}
};
/**
* @desc: mark selected item as cutted
* @type: public
* @topic: 2
*/
dhtmlXTreeObject.prototype.doCut=function(){
if (this.nodeCut) this.clearCut();
this.nodeCut=(new Array()).concat(this._selected);
for (var i=0; i<this.nodeCut.length; i++){
var tempa=this.nodeCut[i];
tempa._cimgs=new Array();
tempa._cimgs[0]=tempa.images[0];
tempa._cimgs[1]=tempa.images[1];
tempa._cimgs[2]=tempa.images[2];
tempa.images[0]=tempa.images[1]=tempa.images[2]=this.cutImage;
this._correctPlus(tempa);
}
};
/**
* @desc: insert previously cutted branch
* @param: itemId - id of new parent node
* @type: public
* @topic: 2
*/
dhtmlXTreeObject.prototype.doPaste=function(itemId){
var tobj=this._globalIdStorageFind(itemId);
if (!tobj) return 0;
for (var i=0; i<this.nodeCut.length; i++){
if (this._checkPNodes(tobj,this.nodeCut[i])) continue;
this._moveNode(this.nodeCut[i],tobj);
}
this.clearCut();
};
/**
* @desc: clear cut
* @type: public
* @topic: 2
*/
dhtmlXTreeObject.prototype.clearCut=function(){
for (var i=0; i<this.nodeCut.length; i++)
{
var tempa=this.nodeCut[i];
tempa.images[0]=tempa._cimgs[0];
tempa.images[1]=tempa._cimgs[1];
tempa.images[2]=tempa._cimgs[2];
this._correctPlus(tempa);
}
this.nodeCut=new Array();
};
/**
* @desc: move node with subnodes
* @type: private
* @param: itemObject - moved node object
* @param: targetObject - new parent node
* @topic: 2
*/
dhtmlXTreeObject.prototype._moveNode=function(itemObject,targetObject){
return this._moveNodeTo(itemObject,targetObject);
}
/**
* @desc: fix order of nodes in collection
* @type: private
* @param: target - parent item node
* @param: zParent - before node
* @edition: Professional
* @topic: 2
*/
dhtmlXTreeObject.prototype._fixNodesCollection=function(target,zParent){
var flag=0; var icount=0;
var Nodes=target.childNodes;
var Count=target.childsCount-1;
if (zParent==Nodes[Count]) return;
for (var i=0; i<Count; i++)
if (Nodes[i]==Nodes[Count]) { Nodes[i]=Nodes[i+1]; Nodes[i+1]=Nodes[Count]; }
// Count=target.childsCount;
for (var i=0; i<Count+1; i++)
{
if (flag) {
var temp=Nodes[i];
Nodes[i]=flag;
flag=temp;
}
else
if (Nodes[i]==zParent) { flag=Nodes[i]; Nodes[i]=Nodes[Count]; }
}
};
/**
* @desc: recreate branch
* @type: private
* @param: itemObject - moved node object
* @param: targetObject - new parent node
* @param: level - top level flag
* @param: beforeNode - node for sibling mode
* @mode: mode - DragAndDrop mode (0 - as child, 1 as sibling)
* @edition: Professional
* @topic: 2
*/
dhtmlXTreeObject.prototype._recreateBranch=function(itemObject,targetObject,beforeNode,level){
var i; var st="";
if (beforeNode){
for (i=0; i<targetObject.childsCount; i++)
if (targetObject.childNodes[i]==beforeNode) break;
if (i!=0)
beforeNode=targetObject.childNodes[i-1];
else{
st="TOP";
beforeNode="";
}
}
var newNode=this._attachChildNode(targetObject,itemObject.id,itemObject.label,0,itemObject.images[0],itemObject.images[1],itemObject.images[2],st,0,beforeNode);
//copy user data
newNode._userdatalist=itemObject._userdatalist;
newNode.userData=itemObject.userData.clone();
newNode.XMLload=itemObject.XMLload;
for (var i=0; i<itemObject.childsCount; i++)
this._recreateBranch(itemObject.childNodes[i],newNode,0,1);
return newNode;
}
/**
* @desc: move single node
* @type: private
* @param: itemObject - moved node object
* @param: targetObject - new parent node
* @edition: Professional
* @mode: mode - DragAndDrop mode (0 - as child, 1 as sibling)
* @topic: 2
*/
dhtmlXTreeObject.prototype._moveNodeTo=function(itemObject,targetObject,beforeNode){
//return;
if (itemObject.treeNod._nonTrivialNode)
return itemObject.treeNod._nonTrivialNode(this,targetObject,beforeNode,itemObject);
if (targetObject.mytype)
var framesMove=(itemObject.treeNod.lWin!=targetObject.lWin);
else
var framesMove=(itemObject.treeNod.lWin!=targetObject.treeNod.lWin);
if (this.dragFunc) if (!this.dragFunc(itemObject.id,targetObject.id,(beforeNode?beforeNode.id:null),itemObject.treeNod,targetObject.treeNod)) return false;
if ((targetObject.XMLload==0)&&(this.XMLsource))
{
targetObject.XMLload=1;
this._loadDynXML(targetObject.id);
}
this.openItem(targetObject.id);
var oldTree=itemObject.treeNod;
var c=itemObject.parentObject.childsCount;
var z=itemObject.parentObject;
if ((framesMove)||(oldTree.dpcpy)) {//interframe drag flag
var _otiid=itemObject.id;
itemObject=this._recreateBranch(itemObject,targetObject,beforeNode);
if (!oldTree.dpcpy) oldTree.deleteItem(_otiid);
}
else
{
var Count=targetObject.childsCount; var Nodes=targetObject.childNodes;
Nodes[Count]=itemObject;
itemObject.treeNod=targetObject.treeNod;
targetObject.childsCount++;
var tr=this._drawNewTr(Nodes[Count].htmlNode);
if (!beforeNode)
{
targetObject.htmlNode.childNodes[0].appendChild(tr);
if (this.dadmode==1) this._fixNodesCollection(targetObject,beforeNode);
}
else
{
targetObject.htmlNode.childNodes[0].insertBefore(tr,beforeNode.tr);
this._fixNodesCollection(targetObject,beforeNode);
Nodes=targetObject.childNodes;
}
}
if ((!oldTree.dpcpy)&&(!framesMove)) {
var zir=itemObject.tr;
if ((document.all)&&(navigator.appVersion.search(/MSIE\ 5\.0/gi)!=-1))
{
window.setTimeout(function() { zir.removeNode(true); } , 250 );
}
else //if (zir.parentNode) zir.parentNode.removeChild(zir,true);
itemObject.parentObject.htmlNode.childNodes[0].removeChild(itemObject.tr);
//itemObject.tr.removeNode(true);
if ((!beforeNode)||(targetObject!=itemObject.parentObject)){
for (var i=0; i<z.childsCount; i++){
if (z.childNodes[i].id==itemObject.id) {
z.childNodes[i]=0;
break; }}}
else z.childNodes[z.childsCount-1]=0;
oldTree._compressChildList(z.childsCount,z.childNodes);
z.childsCount--;
}
if ((!framesMove)&&(!oldTree.dpcpy)) {
itemObject.tr=tr;
tr.nodem=itemObject;
itemObject.parentObject=targetObject;
if (oldTree!=targetObject.treeNod) { if(itemObject.treeNod._registerBranch(itemObject,oldTree)) return; this._clearStyles(itemObject); this._redrawFrom(this,itemObject.parentObject); };
this._correctPlus(targetObject);
this._correctLine(targetObject);
this._correctLine(itemObject);
this._correctPlus(itemObject);
//fix target siblings
if (beforeNode)
{
this._correctPlus(beforeNode);
//this._correctLine(beforeNode);
}
else
if (targetObject.childsCount>=2)
{
this._correctPlus(Nodes[targetObject.childsCount-2]);
this._correctLine(Nodes[targetObject.childsCount-2]);
}
this._correctPlus(Nodes[targetObject.childsCount-1]);
//this._correctLine(Nodes[targetObject.childsCount-1]);
if (this.tscheck) this._correctCheckStates(targetObject);
if (oldTree.tscheck) oldTree._correctCheckStates(z);
}
//fix source parent
if (c>1) { oldTree._correctPlus(z.childNodes[c-2]);
oldTree._correctLine(z.childNodes[c-2]);
}
// if (z.childsCount==0)
oldTree._correctPlus(z);
oldTree._correctLine(z);
if (this.dropFunc) this.dropFunc(itemObject.id,targetObject
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -