/* Product Name: dhtmlxSuite Version: 4.0.3 Edition: Professional License: content of this file is covered by DHTMLX Commercial or Enterprise license. Usage without proper license is prohibited. To obtain it contact sales@dhtmlx.com Copyright UAB Dinamenta http://www.dhtmlx.com */ /** * @desc: enable smart rendering mode * @type: public * @param: mode - true|false - enable|disable mode * @param: buffer - has sense only in dynamic loading mode, count of rows requrested from server by single operation, optional * @topic: 0 */ dhtmlXGridObject.prototype.enableSmartRendering=function(mode,buffer,reserved){ if (arguments.length>2){ if (buffer && !this.rowsBuffer[buffer-1]) this.rowsBuffer[buffer-1]=0; buffer=reserved; } this._srnd=convertStringToBoolean(mode); this._srdh=this._srdh||20; this._dpref=buffer||0; }; /** * @desc: allows to pre-render rows during scrolling, make scrolling more smooth, but with small drop in overall perfomance * @type: public * @param: buffer - count of rows, which will be prerendered * @topic: 0 */ dhtmlXGridObject.prototype.enablePreRendering=function(buffer){ this._srnd_pr=parseInt(buffer||50); }; /** * @desc: force grid in dyn. srnd mode fully load itself from server side * @type: public * @param: buffer - how much rows grid can request from server side in one operation * @topic: 0 */ dhtmlXGridObject.prototype.forceFullLoading=function(buffer, callback){ for (var i=0; i 0) { pxHeight-=this.rowsCol[min]?this.rowsCol[min].offsetHeight:this._srdh; min++; } // Calculate the max max=min+this._get_view_size(); if (min>0) min--; } max+=(this._srnd_pr||0);//pre-rendering if (max>this.rowsBuffer.length) max=this.rowsBuffer.length; for (var j=min; jind ){ //filler found var pos=ind-f[0]; if (pos==0){ //start this._insert_before(ind,row,f[2]); this._update_fillers(i,-1,1); } else if (pos == f[1]-1){ this._insert_after(ind,row,f[2]); this._update_fillers(i,-1,0); } else { this._fillers.push(this._add_filler(ind+1,f[1]-pos-1,f[2],1)); this._insert_after(ind,row,f[2]); this._update_fillers(i,-f[1]+pos,0); } return; } } } dhtmlXGridObject.prototype._update_fillers=function(ind,right,left){ var f=this._fillers[ind]; f[1]=f[1]+right; f[0]=f[0]+left; if (!f[1]){ this.callEvent("onRemoveFiller",[f[2]]); f[2].parentNode.removeChild(f[2]); this._fillers.splice(ind,1); } else { f[2].firstChild.style.height=parseFloat(f[2].firstChild.style.height)+right*this._srdh+"px"; this.callEvent("onUpdateFiller",[f[2]]); } } dhtmlXGridObject.prototype._insert_before=function(ind,row,fil){ fil.parentNode.insertBefore(row,fil); this.rowsCol[ind]=row; this.callEvent("onRowInserted",[row,null,fil,"before"]); } dhtmlXGridObject.prototype._insert_after=function(ind,row,fil){ if (fil.nextSibling) fil.parentNode.insertBefore(row,fil.nextSibling); else fil.parentNode.appendChild(row); this.rowsCol[ind]=row; this.callEvent("onRowInserted",[row,null,fil,"after"]); }