-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathjquery.pivot.min.js
More file actions
1 lines (1 loc) · 12 KB
/
jquery.pivot.min.js
File metadata and controls
1 lines (1 loc) · 12 KB
1
var Jquerypivot;!function(a){!function(a){function b(a,b,c){var d,e,f,g=[];if(a){for(d=0,e=a.length;e>d;d+=1)f=b.call(c,a[d],d,a),null!==f&&g.push(f);return g}}function c(b,c,d){var e;return e="function"==typeof b.filter?b.filter(c,d):a.map(b,function(a,b,e){return c.call(d,a,b,e)?a:null},d),e.length>0?e[0]:null}function d(a,b,c){var d,e;if(a){if("function"==typeof a.some)return a.some(b,c);for(d=0,e=a.length;e>d;d+=1)if(b.call(c,a[d],d,a))return!0}return!1}var e=function(){function a(a){this.strings=[""],this.append(a)}return a.prototype.append=function(a){null!==a&&this.strings.push(a)},a.prototype.clear=function(){this.strings.length=1},a.prototype.toString=function(){return this.strings.join("")},a}();a.StringBuilder=e,a.map=b,a.find=c,a.exists=d}(a.Lib||(a.Lib={}));a.Lib}(Jquerypivot||(Jquerypivot={}));var Jquerypivot;!function(a){!function(b){function c(a,b){var c=+a.groupbyrank,d=+b.groupbyrank;return d>c?-1:c>d?1:0}function d(a){return"string"==typeof a||null===a?$.trim(a):a}var e=function(){function a(){this.children=[],this.pivotvalues=[],this.uniqueGroupByValuesLookup={},this.pivotResultValuesLookup={}}return a.prototype.visible=function(){return void 0===this.parent||!this.parent.collapsed&&(!this.parent.visible||this.parent.visible())},a}();b.TreeNode=e;var f=function(){function b(){this.uniquePivotValuesLookup={},this.alGroupByCols=[],this.pivotCol=null,this.resultCol=[],this.bInvSort=!1,this.tree=new e,this.uniquePivotValues=[],this.dataid=null,this.sortPivotColumnHeaders=!0}return b.prototype.sortTree=function(a){var b,c;if(a.children&&a.children.length>0){for(b=0;b<a.children.length;b+=1)this.sortTree(a.children[b]);c=this.findCell(this.alGroupByCols,a.children[0].colindex).datatype,a.children.sort(this.getcomparer(this.bInvSort)[c])}},b.prototype.findCell=function(b,c){return a.Lib.find(b,function(a){return a.colindex==this},c)},b.prototype.getcomparer=function(a){function b(b){return function(c,d){var e=b(c.sortby)<b(d.sortby)?-1:b(c.sortby)>b(d.sortby)?1:0;return a?-e:e}}return{string:b(function(a){return a}),number:b(function(a){return+a})}},b.prototype.parseJSONsource=function(a){var b,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;for(this.dataid=a.dataid,b=0,f=a.columns.length;f>b;b+=1)j=a.columns[b],k={colvalue:j.colvalue,coltext:j.coltext,text:j.header||j.coltext||j.colvalue,colindex:b,datatype:j.datatype||"string",sortbycol:j.sortbycol||j.coltext||j.colvalue,dataid:j.dataid||j.colvalue,groupbyrank:j.groupbyrank},"number"==typeof k.groupbyrank&&isFinite(k.groupbyrank)?this.alGroupByCols.push(k):j.pivot?this.pivotCol=k:j.result&&this.resultCol.push(k);for(this.alGroupByCols.sort(c),g=0,h=a.rows.length;h>g;g+=1){for(u=a.rows[g],l=this.tree,i=0;i<this.alGroupByCols.length;i+=1)n=d(u[this.alGroupByCols[i].colvalue]),o=u[this.alGroupByCols[i].coltext],p=d(u[this.alGroupByCols[i].sortbycol]),m=l.uniqueGroupByValuesLookup[n],m||(m=new e,m.groupbyValue=n,m.groupbyText=o,m.colindex=this.alGroupByCols[i].colindex,m.children=[],m.sortby=p,m.parent=l,m.dataid=this.alGroupByCols[i].dataid,m.collapsed=!0,m.groupbylevel=i,l.uniqueGroupByValuesLookup[n]=m,l.children.push(m)),l=m;for(q=d(u[this.pivotCol.colvalue]),r=d(u[this.pivotCol.sortbycol]),s=[],i=0;i<this.resultCol.length;i+=1)s.push(d(u[this.resultCol[i].colvalue]));t={pivotValue:q,resultValues:s,sortby:r,dataid:this.pivotCol.dataid},l.pivotvalues.push(t),this.uniquePivotValuesLookup.hasOwnProperty(q)||(this.uniquePivotValues.push(t),this.uniquePivotValuesLookup[q]=null)}this.sortTree(this.tree),this.sortPivotColumnHeaders&&this.uniquePivotValues.sort(this.getcomparer(this.bInvSort)[this.pivotCol.datatype])},b.prototype.parseFromHtmlTable=function(a){var b,c,d,e,f,g,h,i,j,k={dataid:a.data("pivot-dataid"),columns:[],rows:[]},l=$("tbody > tr",a),m=[];for(b=0,c=l[0].cells.length;c>b;b+=1)f=$(l[0].cells[b]),g=f.text(),h={colvalue:f.data("pivot-colvalue")||g,coltext:f.data("pivot-coltext")||g,header:f.data("pivot-header")||f.text(),datatype:f.data("pivot-datatype"),sortbycol:f.data("pivot-sortbycol")||g,dataid:f.data("pivot-dataid"),groupbyrank:parseInt(f.data("pivot-groupbyrank"),10),pivot:f.data("pivot-pivot"),result:f.data("pivot-result")},k.columns.push(h),m.push(g);for(d=1,e=l.length;e>d;d+=1){for(i=l[d].cells,j={},b=0,c=m.length;c>b;b+=1)g=i[b].innerHTML,j[m[b]]="number"===k.columns[b].datatype?parseFloat(g):g;k.rows.push(j)}this.parseJSONsource(k)},b}();b.Adapter=f}(a.Adapter||(a.Adapter={}));a.Adapter}(Jquerypivot||(Jquerypivot={}));var Jquerypivot;!function(a){!function(b){function c(a){var b,c,d=0;for(b=0,c=a.length;c>b;b+=1)d+=a[b];return d}function d(a,b){return this.formatLocale(a,b,".",",")}function e(a,b){return this.formatLocale(a,b,",",".")}function f(a,b,c,d){var e,f=0>a,g=Math.round(a*Math.pow(10,b)),h=Math.abs(g).toString().split(""),i=h.length-b;if(0>=i){for(e=0;-i>=e;e+=1)h.unshift("0");i=1}for(b>0&&h.splice(i,0,d);i>3;)i-=3,h.splice(i,0,c);return f&&h.splice(0,0,"-"),h.join("")}$=jQuery;var g=function(){function a(a,b,d,e,f,g,h,i,j,k){"undefined"==typeof a&&(a=null),"undefined"==typeof b&&(b=!0),"undefined"==typeof d&&(d=!0),"undefined"==typeof e&&(e=c),"undefined"==typeof f&&(f=function(a){return null===a?null:a.toString()}),"undefined"==typeof g&&(g=function(a){return+a}),"undefined"==typeof h&&(h=null),"undefined"==typeof i&&(i="No value"),"undefined"==typeof j&&(j="No data"),"undefined"==typeof k&&(k=!0),this.source=a,this.bTotals=b,this.bCollapsible=d,this.aggregatefunc=e,this.formatFunc=f,this.parseNumFunc=g,this.onResultCellClicked=h,this.noGroupByText=i,this.noDataText=j,this.sortPivotColumnHeaders=k}return a}();b.jqueryPivotOptions=g;var h=function(){function a(a,b,c){this.dataidPivot=a,this.pivotvalue=b,this.pivotsortvalue=c}return a}();b.resultCellClickedInfoPivotInfo=h;var i=function(){function a(a,b){this.dataidGroup=a,this.groupbyval=b}return a}();b.resultCellClickedInfoGroupByInfo=i;var j=function(){function a(a,b){this.colKeyName=a,this.colName=b}return a}();b.resultCellClickedInfoResultColInfo=j;var k=function(){function a(a,b,c,d){this.dataidTable=a,this.pivot=b,this.groups=c,this.resultcol=d}return a}();b.resultCellClickedInfo=k;var l=function(){function a(a,b,c){this.pivot=a,this.treeNode=b,this.resultcol=c}return a}(),m=function(){function a(a,b){this.bDatabound=a,this.treeNode=b}return a}(),n=function(){function b(b){var c=this;this.resultCellClicked=function(a){var b,d=$(a.target),e=d.closest("table.pivot").data("jquery.pivot.adapter"),f=[],g=d.data("def"),l=g.treeNode;if(c.opts.onResultCellClicked){for(d.closest("table.pivot").find(".resultcell").removeClass("clickedResultCell"),d.addClass("clickedResultCell");l.parent;)f.unshift(new i(l.dataid,l.groupbyValue)),l=l.parent;b=new k(e.dataid,new h(g.pivot.dataid,g.pivot.pivotValue,g.pivot.sortby),f,new j(g.resultcol.dataid,g.resultcol.coltext)),c.opts.onResultCellClicked(b,d)}},this.flattenFunc=function(a){return function(b){return b[a]}},this.getResValues=function(b,d){var e,f,g=[],h=[],i=function(a){return c.opts.parseNumFunc(a)};if(!b.pivotResultValuesLookup.hasOwnProperty(d)){if(c.opts.aggregatefunc){if(b.pivotvalues.length>0)if(f=a.Lib.map(b.pivotvalues||[],function(a){return a.pivotValue===d?a.resultValues:null}),c.opts.parseNumFunc)for(e=0;e<f.length;e+=1)h.push(a.Lib.map(f[e],i));else h=f;else if(c.opts.bTotals)for(e=0;e<b.children.length;e+=1)h.push(c.getResValues(b.children[e],d));for(e=0;e<c.adapter.resultCol.length;e+=1){var j=a.Lib.map(h,c.flattenFunc(e));g.push(c.opts.aggregatefunc(j))}}else g=null;b.pivotResultValuesLookup[d]=g}return b.pivotResultValuesLookup[d]},this.appendChildRows=function(b,d,e){var f,g,h,i,j,k,n,o,p,q,r,s,t=e.alGroupByCols,u=e.uniquePivotValues,v=c.opts.bCollapsible?"foldunfold":"nonfoldunfold",w="."+v,x=[];for(f=0;f<b.children.length;f+=1){for(j=new a.Lib.StringBuilder,k=b.children[f],n=void 0===k.groupbyText||null===k.groupbyText||" "===k.groupbyText||""===k.groupbyText?c.opts.noGroupByText:k.groupbyText,j.append('<tr class="level'),j.append(k.groupbylevel),j.append('">'),h=0;h<t.length;h+=1)j.append('<th class="groupby level'),j.append(h),j.append('">'),t[h].colindex===k.colindex?k.children.length>0?(j.append('<span class="'),j.append(v),j.append(' collapsed">'),j.append(n),j.append(" </span>")):j.append(n):j.append(" "),j.append("</th>");for(j.append("</tr>"),d=$(j.toString()).insertAfter(d),d.find(w).data("status",new m(!1,k)),x=[],i=0;i<u.length;i+=1){for(s=c.getResValues(k,u[i].pivotValue),c.opts.bTotals&&x.push(s),j.clear(),g=0;g<s.length;g+=1)j.append('<td class="resultcell resultcell'),j.append(g),j.append('" title="'),j.append(c.adapter.resultCol[g].coltext),j.append('">'),j.append(c.opts.formatFunc(s[g])),j.append("</td>");for(o=$(j.toString()).appendTo(d),g=0;g<s.length;g+=1)o.eq(g).data("def",new l(u[i],k,c.adapter.resultCol[g]))}if(c.opts.bTotals){for(j.clear(),r=[],g=0;g<c.adapter.resultCol.length;g+=1){var y=a.Lib.map(x,c.flattenFunc(g));r.push(c.opts.aggregatefunc(y))}for(g=0;g<s.length;g+=1)j.append('<td class="total total'),j.append(g),j.append('" title="'),j.append(c.adapter.resultCol[g].coltext),j.append('">'),j.append(c.opts.formatFunc(r[g])),j.append("</td>");$(j.toString()).appendTo(d)}c.opts.bCollapsible||(p=d.find(w),p.length>0&&(q=p.removeClass("collapsed").data("status"),q.treeNode.collapsed=!1,q.bDatabound=!0,c.appendChildRows(q.treeNode,d,e),d=d.nextUntil(".total").last()))}},this.makeCollapsed=function(b,d){var e,f,g,h,i,j=[],k=new a.Lib.StringBuilder('<table class="pivot">'),l=b.alGroupByCols,m=b.uniquePivotValues;for(c.adapter=b,k.append('<tr class="head">'),e=0;e<l.length;e+=1)k.append('<th class="groupby level'),k.append(e),k.append('">'),k.append(l[e].text),k.append("</th>");for(e=0;e<m.length;e+=1)k.append('<th class="pivotcol" colspan="'),k.append(c.adapter.resultCol.length),k.append('">'),k.append(m[e].pivotValue),k.append("</th>");if(c.opts.bTotals&&(k.append('<th class="total" colspan="'),k.append(c.adapter.resultCol.length),k.append('">Total</th>')),k.append("</tr>"),c.opts.bTotals){for(k.append('<tr class="total">'),k.append('<th class="total" colspan="'),k.append(l.length),k.append('">Total</th>'),g=0;g<m.length;g+=1)for(i=c.getResValues(b.tree,m[g].pivotValue),c.opts.bTotals&&j.push(i),f=0;f<c.adapter.resultCol.length;f+=1)k.append('<td class="coltotal total'),k.append(f),k.append('" title="'),k.append(c.adapter.resultCol[f].coltext),k.append('">'),k.append(c.opts.formatFunc(i[f])),k.append("</td>");for(f=0;f<c.adapter.resultCol.length;f+=1){var n=a.Lib.map(j,c.flattenFunc(f));k.append('<td class="total total'),k.append(f),k.append('" title="'),k.append(c.adapter.resultCol[f].coltext),k.append('">'),k.append(c.opts.formatFunc(c.opts.aggregatefunc(n))),k.append("</td>")}k.append("</tr>")}k.append("</table>"),d.html(""),h=$(k.toString()).appendTo(d),h.data("jquery.pivot.adapter",b),c.appendChildRows(b.tree,$("tr:first",h),b)},this.foldunfoldElem=function(a){var b,d,e,f=a.closest("table.pivot").data("jquery.pivot.adapter"),g=a.data("status"),h=a.closest("tr"),i=!1;if(g.treeNode.collapsed=!g.treeNode.collapsed,g.treeNode.collapsed?a.addClass("collapsed"):a.removeClass("collapsed"),g.bDatabound)for(b=h,d=g;(b=b.next()).length>0&&(e=b.find(".foldunfold").data("status"),!(e&&e.treeNode.groupbylevel<=g.treeNode.groupbylevel||b.is(".total")));)e?(d=e,i=d.treeNode.visible()):i=d.treeNode.visible()&&!d.treeNode.collapsed,b.toggle(i);else c.appendChildRows(g.treeNode,h,f),g.bDatabound=!0},this.foldunfold=function(a){c.foldunfoldElem($(a.target))},this.opts=$.extend({},$.fn.pivot.defaults,b)}return b}();b.pivot=n,$.fn.pivot=function(b){var c=new n(b);return this.each(function(){var b=$(this),d=new a.Adapter.Adapter,e=c.opts;d.sortPivotColumnHeaders=e.sortPivotColumnHeaders,b.empty(),("object"==typeof e.source&&e.source.jquery||e.source.columns)&&(e.source.jquery?e.source.find("tr").length>0&&d.parseFromHtmlTable(e.source):d.parseJSONsource(e.source),b.off("click.jquery.pivot"),b.on("click.jquery.pivot",".pivot .foldunfold",c.foldunfold),e.onResultCellClicked&&b.on("click.jquery.pivot",".resultcell",c.resultCellClicked),c.makeCollapsed(d,b)),""===b.html()&&b.html("<h1>"+e.noDataText+"</h1>")})},$.fn.pivot.defaults=new g,$.fn.pivot.formatDK=d,$.fn.pivot.formatUK=e,$.fn.pivot.formatLocale=f}(a.Pivot||(a.Pivot={}));a.Pivot}(Jquerypivot||(Jquerypivot={}));