/*
Product Name: dhtmlxSuite
Version: 5.2.0
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: hide pivot table related to grid, if any exists, switch grid back to normal mode
* @type: public
* @topic: 0
*/
dhtmlXGridObject.prototype.hidePivot=function(cont){
if (this._pgridCont){
if (this._pgrid) this._pgrid.destructor();
var c=this._pgridCont.parentNode;
c.innerHTML="";
if (c.parentNode==this.entBox)
this.entBox.removeChild(c);
this._pgrid=this._pgridSelect=this._pUNI=this._pgridCont=null;
}
}
/**
* @desc: show pivot table based on grid
* @type: public
* @param: cont - html container in which pivot rendered, but default pivot will be rendered over existing grid
* details: collection of settings; details.column_list - list of columns used in pivot selects; details.readonly - created pivot with fixed configuration, details.action, details.value, action.x, action.y - default values for 4 pivot's selects
* @topic: 0
*/
dhtmlXGridObject.prototype.makePivot=function(cont,details){
details=details||{};
this.hidePivot();
if (!cont){
var cont=document.createElement("DIV");
cont.style.cssText="position:absolute; top:0px; left:0px;background-color:white;";
cont.style.height=this.entBox.offsetHeight+"px";
cont.style.width=this.entBox.offsetWidth+"px";
if (this.entBox.style.position!="absolute")
this.entBox.style.position="relative";
this.entBox.appendChild(cont);
}
if (typeof(cont)!="object") cont=document.getElementById(cont)
if (details.column_list)
this._column_list=details.column_list;
else{
this._column_list=[];
for (var i=0; i= 0; i--)
if (resA[i]==av && resB[i]==bv)
ret+=this.parseFloat(resC[i]);
return ret;
}
dhtmlXGridObject.prototype._pivot_action_1=function(a,b,c,av,bv,data){
ret=9999999999;
var resA=data[a];
var resB=data[b];
var resC=data[c];
for (var i = resA.length - 1; i >= 0; i--)
if (resA[i]==av && resB[i]==bv)
ret=Math.min(this.parseFloat(resC[i]),ret);
if (ret==9999999999) ret="";
return ret;
}
dhtmlXGridObject.prototype._pivot_action_2=function(a,b,c,av,bv,data){
ret=-9999999999;
var resA=data[a];
var resB=data[b];
var resC=data[c];
for (var i = resA.length - 1; i >= 0; i--)
if (resA[i]==av && resB[i]==bv)
ret=Math.max(this.parseFloat(resC[i]),ret);
if (ret==-9999999999) ret="";
return ret;
}
dhtmlXGridObject.prototype._pivot_action_3=function(a,b,c,av,bv,data){
var ret=0;
var count=0;
var resA=data[a];
var resB=data[b];
var resC=data[c];
for (var i = resA.length - 1; i >= 0; i--)
if (resA[i]==av && resB[i]==bv) {
ret+=this.parseFloat(resC[i]);
count++;
}
return count?ret/count:"";
}
dhtmlXGridObject.prototype._pivot_action_4=function(a,b,c,av,bv,data){
var ret=0;
var count=0;
var resA=data[a];
var resB=data[b];
var resC=data[c];
for (var i = resA.length - 1; i >= 0; i--)
if (resA[i]==av && resB[i]==bv) {
ret++;
}
return ret;
}
dhtmlXGridObject.prototype.parseFloat = function(val){
val = parseFloat(val);
if (isNaN(val)) return 0;
return val;
}
dhtmlXGridObject.prototype._renderPivot2=function(){
if (!(this._pivotS.x && this._pivotS.y && this._pivotS.value && this._pivotS.action)) return;
var action=this["_pivot_action_"+this._pivotS.action];
var x=this._getUniList(this._pivotS.x);
var y=this._getUniList(this._pivotS.y);
for (var i=0; i < x.length; i++) {
for (var j=0; j < y.length; j++) {
this._pgrid.cells2(j,i+1).setValue(Math.round(action(this._pivotS.x,this._pivotS.y,this._pivotS.value,x[i],y[j],this._pData)*100)/100);
};
};
}
dhtmlXGridObject.prototype._getUniList=function(col){
if (!this._pUNI[col]){
var t={};
var a=[];
for (var i = this._pData[col].length - 1; i >= 0; i--){
t[this._pData[col][i]]=true;
}
for (var n in t)
if (t[n]===true) a.push(n);
this._pUNI[col]=a.sort();
}
return this._pUNI[col];
}
dhtmlXGridObject.prototype._fillPivotList=function(z,list,miss,v){
if (!miss){
miss={};
v=-1;
}
z.innerHTML="";
z.options[z.options.length]=new Option("-select-",-1);
for (var i=0; i