"+this.cell.atag+">";
this.er.childNodes[0].onmousedown = function(e){(e||event).cancelBubble = true}
this.er.childNodes[0].onselectstart=function(e){ if (!e) e=event; e.cancelBubble=true; return true; };
this.er.className+=" editable";
this.er.firstChild.onclick = function(e){(e||event).cancelBubble = true};
this.er.firstChild.value=this.val;
this.obj=this.er.firstChild;
this.er.firstChild.style.width=Math.max(0,this.cell.offsetWidth-this.er.offsetLeft-2)+"px";
this.er.firstChild.focus();
if (_isIE)
this.er.firstChild.focus();
}
this.detach = function(){
if (!this.er) return;
this.setLabel(this.er.firstChild.value);
this.er.className=this.er.className.replace("editable","");
var z=(this.val!=this.er.innerHTML);
this.obj=this.er=null;
return (z);
}
this.getValue = function(){
return this.getLabel();
}
/**
* @desc: get image of treegrid item
* @param: content - new text of label
* @type: private
*/
this.setImage = function(url){
this.cell.parentNode.imgTag.nextSibling.src=this.grid.iconURL+url;
this.grid._h2.get[this.cell.parentNode.idd].image=url;
}
/**
* @desc: set image of treegrid item
* @param: content - new text of label
* @type: private
*/
this.getImage = function(){
return this.grid._h2.get[this.cell.parentNode.idd].image;
}
/**
* @desc: sets text representation of cell ( setLabel doesn't triger math calculations as setValue do)
* @param: val - new value
* @type: public
*/
this.setLabel = function(val){
this.setValueA(val);
}
/**
* @desc: sets text representation of cell ( setLabel doesn't triger math calculations as setValue do)
* @param: val - new value
* @type: public
*/
this.getLabel = function(val){
return this.cell.parentNode.valTag.innerHTML;
}
}
/**
* @desc: set value of grid item
* @param: val - new value (for treegrid this method only used while adding new rows)
* @type: private
*/
eXcell_tree.prototype = new eXcell;
/**
* @desc: set label of treegrid item
* @param: content - new text of label
* @type: private
*/
eXcell_tree.prototype.setValueA = function(content){
this.cell.parentNode.valTag.innerHTML=content;
this.grid.callEvent("onCellChanged",[this.cell.parentNode.idd,this.cell._cellIndex,content])
}
eXcell_tree.prototype.setValue = function(valAr){
if (this.cell.parentNode.imgTag)
return this.setLabel(valAr);
if ((this.grid._tgc.iconTree==null)||(this.grid._tgc.iconTree!=this.grid.iconTree)){
var _tgc={};
_tgc.spacer="
";
_tgc.imst="
"
_tgc.plus=_tgc.imst+"plus.gif"+_tgc.imact;
_tgc.minus=_tgc.imst+"minus.gif"+_tgc.imact;
_tgc.blank=_tgc.imst+"blank.gif"+_tgc.imact;
_tgc.start="";
_tgc.itemim="' align='top' "+(this.grid._img_height?(" height=\""+this.grid._img_height+"\""):"")+(this.grid._img_width?(" width=\""+this.grid._img_width+"\""):"")+" >";
_tgc.close="
";
this.grid._tgc=_tgc;
}
var _h2=this.grid._h2;
var _tgc=this.grid._tgc;
var rid=this.cell.parentNode.idd;
var row=this.grid._h2.get[rid];
if (this.grid.kidsXmlFile || this.grid._slowParse) {
row.has_kids=(row.has_kids||(this.cell.parentNode._attrs["xmlkids"]&&(row.state!="minus")));
row._xml_await=!!row.has_kids;
}
row.image=row.image||(this.cell._attrs["image"]||"leaf.gif");
row.label=valAr;
var html=[_tgc.start];
for(var i=0;i1)
this._fake.rowsCol.splice(ind+1,len-1);
}
this.rowsCol.splice(ind,len);
this.rowsBuffer.splice(ind,len);
}
if (!x) return;
this._removeTrGrRow(null,x);
delete this.rowsAr[x.id];
if (x.parent.childs.length==1){
this._h2.change(x.parent.id,"state",dhtmlXGridObject._emptyLineImg);
this._updateTGRState(x.parent);
}
this._h2.remove(x.id);
}
/**
* @desc: expand row
* @param: rowId - id of row
* @type: public
* @edition: Professional
* @topic: 7
*/
dhtmlXGridObject.prototype.openItem=function(rowId){
var y=this._h2.get[rowId||0];
var x=this.getRowById(rowId||0);
if (!x) return;
if (y.parent && y.parent.id!=0)
this.openItem(y.parent.id);
this.expandKids(x);
}
dhtmlXGridObject.prototype._addRowClassic=dhtmlXGridObject.prototype.addRow;
/**
* @desc: add new row to treeGrid
* @param: new_id - new row id
* @param: text - array of row label
* @param: ind - position of row (set to null, for using parentId)
* @param: parent_id - id of parent row
* @param: img - img url for new row
* @param: child - child flag [optional]
* @type: public
* @edition: Professional
*/
dhtmlXGridObject.prototype.addRow=function(new_id,text,ind,parent_id,img,child){
if (!this._h2) return this._addRowClassic(new_id,text,ind);
parent_id=parent_id||0;
var trcol=this.cellType._dhx_find("tree");
if (typeof(text)=="string") text=text.split(this.delim);
var row=this._h2.get[new_id];
if (!row){
if (parent_id==0) ind=this.rowsBuffer.length;
else{
ind=this.getRowIndex(parent_id)+1;
if (this._h2.get[parent_id].state=="minus")
ind+=this._getOpenLenght(parent_id,0);
else
this._skipInsert=true;
}
}
row=row||this._h2.add(new_id,parent_id);
row.image=img;
row.has_kids=child;
return row.buff=this._addRowClassic(new_id,text,ind);
}
/**
* @desc: add new row to treeGrid, before some other row
* @param: new_id - new row id
* @param: text - array of row label
* @param: sibl_id - id of row, related to which new one will be added
* @param: img - img url for new row
* @param: child - child flag [optional]
* @type: public
* @edition: Professional
*/
dhtmlXGridObject.prototype.addRowBefore=function(new_id,text,sibl_id,img,child){
var sb=this.rowsAr[sibl_id];
if (!sb) return;
if (!this._h2) return this.addRow(new_id,text,this.getRowIndex(sibl_id));
var pid=this._h2.get[sibl_id].parent.id;
var ind=this.getRowIndex(sibl_id);
if (ind==-1) this._skipInsert=true;
this._h2.addBefore(new_id,pid,sibl_id);
return this.addRow(new_id,text,ind,this._h2.get[sibl_id].parent.id,img,child);
}
/**
* @desc: add new row to treeGrid, after some other row
* @param: new_id - new row id
* @param: text - array of row label
* @param: sibl_id - id of row, related to which new one will be added
* @param: img - img url for new row
* @param: child - child flag [optional]
* @type: public
* @edition: Professional
*/
dhtmlXGridObject.prototype.addRowAfter=function(new_id,text,sibl_id,img,child){
var sb=this.rowsAr[sibl_id];
if (!sb) return;
if (!this._h2) return this.addRow(new_id,text,this.getRowIndex(sibl_id)+1);
var pid=this._h2.get[sibl_id].parent.id;
var ind=this.getRowIndex(sibl_id);
if (ind==-1) this._skipInsert=true;
if (this._h2.get[sibl_id].state=="minus") ind+=this._getOpenLenght(sibl_id,0)+1;
else ind++;
this._h2.addAfter(new_id,pid,sibl_id);
return this.addRow(new_id,text,ind,pid,img,child);
}
dhtmlXGridObject.prototype.enableSmartXMLParsing=function(mode) {
this._slowParse=convertStringToBoolean(mode);
};
/**
* @desc: copy content between different rows
* @param: frRow - source row object
* @param: from_row_id - source row id
* @param: to_row_id - target row id
* @type: private
*/
dhtmlXGridObject.prototype._copyTreeGridRowContent=function(frRow,from_row_id,to_row_id){
var z=this.cellType._dhx_find("tree");
for(i=0;i