-
-
Notifications
You must be signed in to change notification settings - Fork 39
/
fattable.min.js
25 lines (25 loc) · 12.1 KB
/
fattable.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(function(){function H(c,a){function b(){this.constructor=c}for(var d in a)N.call(a,d)&&(c[d]=a[d]);b.prototype=a.prototype;c.prototype=new b;c.la=a.prototype}var I,z,v,A,J,w,x,B,K,u,L,C,D,E,F,G,M,N={}.hasOwnProperty;L=function(c){var a,b,d,g,e;a=[0];d=g=0;for(b=c.length;d<b;d++)e=c[d],g+=e,a.push(g);return a};u=function(c,a,b){return c<a?a:c>b?b:c};C=new (function(){function c(){this.$=[];this.ja=this.result=!1}c.prototype.then=function(a){return this.ja?a(this.result):this.$.push(a)};c.prototype.resolve=
function(a){var b,d,c,e,f;this.ja=!0;this.result=a;e=this.$;f=[];c=0;for(d=e.length;c<d;c++)b=e[c],f.push(b(a));return f};return c}());F=function(){document.removeEventListener("DOMContentLoaded",F);return C.resolve()};document.addEventListener("DOMContentLoaded",F);G=function(){var c,a,b,d,g;c=document.createElement("div");d=["transform","WebkitTransform","MozTransform","OTransform","MsTransform"];b=0;for(a=d.length;b<a;b++)if(g=d[b],void 0!==c.style[g])return g}();x=function(){function c(){}c.prototype.L=
function(){return!1};c.prototype.ga=function(){return!1};c.prototype.G=function(a,b,d){null==d&&(d=function(){});return d("getCell not implemented")};c.prototype.H=function(a,b){null==b&&(b=function(){});return b("getHeader not implemented")};return c}();w=function(c){function a(){return a.la.constructor.apply(this,arguments)}H(a,c);a.prototype.oa=function(b,a){return b+","+a};a.prototype.pa=function(b){return"col "+b};a.prototype.L=function(){return!0};a.prototype.ga=function(){return!0};a.prototype.G=
function(b,a,c){null==c&&(c=function(){});return c(this.oa(b,a))};a.prototype.H=function(b,a){null==a&&(a=function(){});return a(this.pa(b))};return a}(x);z=function(){function c(a){this.size=null!=a?a:100;this.data={};this.K=[]}c.prototype.has=function(a){return this.data.hasOwnProperty(a)};c.prototype.get=function(a){return this.data[a]};c.prototype.set=function(a,b){var d;d=this.K.indexOf(a);0<=d&&this.K.splice(d,1);this.K.push(a);this.K.length>=this.size&&(d=this.K.shift(),delete this.data[d]);
return this.data[a]=b};return c}();v=function(c){function a(a){null==a&&(a=100);this.Y=new z(a);this.X=new z(a);this.V={};this.I={}}H(a,c);a.prototype.H=function(a){if(this.X.has(void 0))return cb(this.X.get(void 0)(a));if(null!=this.I[void 0])return this.I[void 0].push([a,cb]);this.I[void 0]=[[a,cb]];return this.Ja(void 0,function(d){return function(c){var e,f,k,h;d.X.set(void 0,c);h=d.I[void 0];k=0;for(f=h.length;k<f;k++)e=h[k],a=e[0],e=e[1],e(c(a));return delete d.I[void 0]}}(this))};a.prototype.L=
function(){return this.Y.has(void 0)};a.prototype.G=function(a,d,c){null==c&&(c=function(){});if(this.Y.has(void 0))return c(this.Y.get(void 0)(a,d));if(null!=this.V[void 0])return this.V[void 0].push([a,d,c]);this.V[void 0]=[[a,d,c]]};a.prototype.H=function(a,d){null==d&&(d=function(){});return d("col "+a)};return a}(x);K=function(c,a){var b,d,g,e;if(c[0]>a)return 0;b=0;for(d=c.length;b+2<d;)if(g=(b+d)/2|0,e=c[g],e<a)b=g;else if(e>a)d=g;else return g;return b};A=function(){function c(){}c.prototype.S=
function(a){var b,d;d=a.cells;for(b in d);a=a.m;d=[];for(b in a)d.push(void 0);return d};c.prototype.da=function(a,b){return a.textContent=b};c.prototype.W=function(a,b){return a.textContent=b};c.prototype.na=function(a){a.textContent="NA"};c.prototype.ca=function(a){return a.textContent="NA"};return c}();M=function(c,a){var b,d;b=1;for(d=0;d+b<c.length;)c[d+b]-c[d]>a?d+=1:b+=1;return b};I=function(){function c(){this.R=[]}c.prototype.bind=function(a,b,d){this.R.push([a,b,d]);return a.addEventListener(b,
d)};c.prototype.ya=function(){var a,b,d,c,e,f;e=this.R;c=0;for(d=e.length;c<d;c++)a=e[c],f=a[0],b=a[1],a=a[2],f.removeEventListener(b,a);this.R=[]};return c}();J=function(){function c(a,b,c,g,e,f,k){var h,l;this.a=a;this.b=b;this.B=c;this.A=g;this.visible=null!=f?f:!0;this.aa=null!=k?k:!0;this.g=document.createElement("div");this.g.className+=" fattable-v-scrollbar";this.f=document.createElement("div");this.f.className+=" fattable-h-scrollbar";this.visible&&(this.a.appendChild(this.g),this.a.appendChild(this.f));
a=document.createElement("div");a.style.height="1px";a.style.width=this.B+"px";b=document.createElement("div");b.style.width="1px";b.style.height=this.A+"px";this.f.appendChild(a);this.g.appendChild(b);this.ka=Math.max(this.f.offsetHeight,this.g.offsetWidth);this.g.style.bottom=this.ka+"px";this.f.style.right=this.ka+"px";this.scrollTop=this.scrollLeft=0;this.f.onscroll=function(a){return function(){if(!a.w&&a.scrollLeft!==a.f.scrollLeft)return a.scrollLeft=a.f.scrollLeft,a.v(a.scrollLeft,a.scrollTop)}}(this);
this.g.onscroll=function(a){return function(){if(!a.w&&a.scrollTop!==a.g.scrollTop)return a.scrollTop=a.g.scrollTop,a.v(a.scrollLeft,a.scrollTop)}}(this);this.aa&&(e.bind(this.a,"mousedown",function(a){return function(b){if(1===b.button)return a.w=!0,a.a.className="fattable-body-container fattable-moving",a.U=a.scrollLeft+b.clientX,a.ma=a.scrollTop+b.clientY}}(this)),e.bind(this.a,"mouseup",function(a){return function(){a.w=!1;return a.a.className="fattable-body-container"}}(this)),e.bind(this.a,
"mousemove",function(a){return function(b){return window.setTimeout(function(){var c,d;if(a.w)return c=-b.clientX+a.U,d=-b.clientY+a.ma,a.P(c,d)},0)}}(this)),e.bind(this.a,"mouseout",function(a){return function(b){if(a.w&&(null==b.toElement||b.toElement.parentElement.parentElement!==a.a))return a.a.className="fattable-body-container",a.w=!1}}(this)),e.bind(this.b,"mousedown",function(a){return function(b){if(1===b.button)return a.M=!0,a.b.className="fattable-header-container fattable-moving",a.U=
a.scrollLeft+b.clientX}}(this)),e.bind(this.a,"mouseup",function(a){return function(b){var c;if(1===b.button)return a.M=!1,a.b.className="fattable-header-container",b.stopPropagation(),c=function(a){a.stopPropagation();return this.removeEventListener("click",c,!0)},a.a.addEventListener("click",c,!0)}}(this)),e.bind(this.b,"mousemove",function(a){return function(b){return window.setTimeout(function(){var c;if(a.M)return c=-b.clientX+a.U,a.P(c)},0)}}(this)),e.bind(this.b,"mouseout",function(a){return function(b){if(a.M){if(null==
b.toElement||b.toElement.parentElement.parentElement!==a.b)a.b.className="fattable-header-container";return a.M=!1}}}(this)));this.ra=this.B>this.f.clientWidth?this.B-this.f.clientWidth:0;this.sa=this.A>this.g.clientHeight?this.A-this.g.clientHeight:0;l="DOMMouseScroll";void 0!==this.a.onwheel?l="wheel":void 0!==this.a.onmousewheel&&(l="mousewheel");h=function(){switch(l){case "wheel":return function(a){var b,c,d,e,h,f;switch(a.deltaMode){case a.za:b=null!=(d=-50*a.deltaX)?d:0;c=null!=(e=-50*a.deltaY)?
e:0;break;case a.Aa:b=null!=(h=-1*a.deltaX)?h:0,c=null!=(f=-1*a.deltaY)?f:0}return[b,c]};case "mousewheel":return function(a){var b,c,d;b=null!=(c=a.wheelDeltaX)?c:0;a=null!=(d=a.wheelDeltaY)?d:a.wheelDelta;return[b,a]};case "DOMMouseScroll":return function(a){var b,c;c=b=0;a.axis===a.Ba?b=-50*a.detail:c=-50*a.detail;return[b,c]}}}();a=function(a){return function(b){var c;c=h(b);if(a.P(a.scrollLeft-c[0],a.scrollTop-c[1]))return b.preventDefault()}}(this);b=function(a){return function(b){var c;c=h(b);
if(a.P(a.scrollLeft-c[0],a.scrollTop))return b.preventDefault()}}(this);e.bind(this.a,l,a);e.bind(this.b,l,b)}c.prototype.v=function(){};c.prototype.P=function(a,b){var c;c=!1;null!=a?(a=u(a,0,this.ra),this.scrollLeft!==a&&(c=!0,this.scrollLeft=a)):a=this.scrollLeft;null!=b?(b=u(b,0,this.sa),this.scrollTop!==b&&(c=!0,this.scrollTop=b)):b=this.scrollTop;this.f.scrollLeft=a;this.g.scrollTop=b;this.v(a,b);return c};return c}();B=function(){function c(a){var b;b=a.a;if(null==b)throw"container not specified.";
if("string"===typeof b)this.a=document.querySelector(b);else if("object"===typeof b)this.a=b;else throw"Container must be a string or a dom element.";this.i(a,"painter",new A);this.i(a,"autoSetup",!0);this.i(a,"model");this.i(a,"nbRows");this.i(a,"rowHeight");this.i(a,"columnWidths");this.i(a,"rowHeight");this.i(a,"headerHeight");this.i(a,"scrollBarVisible",!0);this.i(a,"enableDragMove",!0);this.va=this.T.length;-1===(" "+this.a.className+" ").search(/\sfattable\s/)&&(this.a.className+=" fattable");
this.A=this.O*this.ha;this.D=L(this.T);this.B=this.D[this.D.length-1];this.m={};this.cells={};this.ba=new I;this.ea();this.Ia&&C.then(function(a){return function(){return a.xa()}}(this))}c.prototype.i=function(a,b,c){if(null==a[b]){if(void 0===c)throw"Expected parameter <"+b+">";this[b]=c}else this[b]=a[b]};c.prototype.ea=function(){this.Z=this.a.offsetWidth;this.fa=this.a.offsetHeight-this.N;this.h=Math.min(M(this.D,this.Z)+2,this.T.length);this.j=Math.min((this.fa/this.O|0)+2,this.ha)};c.prototype.qa=
function(a,b){return[u(b/this.O|0,0,this.ha-this.j),u(K(this.D,a),0,this.va-this.h)]};c.prototype.S=function(){var a;this.ba.ya();null!=(a=this.scroll)&&(a.v=null);this.o.S(this);this.a.innerHTML="";return this.b=this.l=null};c.prototype.xa=function(){var a,b,c,g,e,f,k;this.S();this.ea();this.m={};this.cells={};this.a.innerHTML="";this.b=document.createElement("div");this.b.className+=" fattable-header-container";this.b.style.height=this.N+"px";this.J=document.createElement("div");this.J.className=
"fattable-viewport";this.J.style.width=this.Z+"px";this.J.style.height=this.N+"px";this.b.appendChild(this.J);this.l=document.createElement("div");this.l.className="fattable-body-container";this.l.style.top=this.N+"px";this.C=document.createElement("div");this.C.className="fattable-viewport";this.C.style.width=this.Z+"px";this.C.style.height=this.fa+"px";g=a=this.h;for(f=2*this.h;a<f;g=a+=1)for(c=e=this.j,k=2*this.j;e<k;c=e+=1)b=document.createElement("div"),b.c=!1,b.style.height=this.O+"px",this.C.appendChild(b),
this.cells[c+","+g]=b;a=e=this.h;for(f=2*this.h;e<f;a=e+=1)b=document.createElement("div"),b.style.height=this.N+"px",b.c=!1,this.m[a]=b,this.J.appendChild(b);this.F=this.j;this.s=this.h;this.display(0,0);this.a.appendChild(this.l);this.a.appendChild(this.b);this.l.appendChild(this.C);this.ia();this.scroll=new J(this.l,this.b,this.B,this.A,this.ba,this.Ka,this.aa);b=function(a){return function(b,e){var f,m,n;m=a.qa(b,e);c=m[0];g=m[1];a.display(c,g);n=a.m;for(f in n)m=n[f],m.style[G]="translate("+
(m.left-b)+"px, 0px)";n=a.cells;for(f in n)m=n[f],m.style[G]="translate("+(m.left-b)+"px,"+(m.top-e)+"px)";clearTimeout(a.wa);a.wa=setTimeout(a.ia.bind(a),200);return a.v(b,e)}}(this);this.scroll.v=b;return b(0,0)};c.prototype.ia=function(a){var b,c,g,e,f,k,h,l,p;null==a&&(a=!1);c=function(b){return function(c){if(a||c.c)return b.u.H(f,function(a){c.c=!1;return b.o.da(c,a)})}}(this);p=[];f=h=this.s;for(l=this.s+this.h;h<l;f=h+=1)g=this.m[f],c(g),p.push(function(){var c,d,g;g=[];e=c=this.F;for(d=this.F+
this.j;c<d;e=c+=1)k=e+","+f,b=this.cells[k],a||b.c?g.push(function(a){return function(b){return a.u.G(e,f,function(c){b.c=!1;return a.o.W(b,c)})}}(this)(b)):g.push(void 0);return g}.call(this));return p};c.prototype.v=function(){};c.prototype.display=function(a,b){this.b.style.display="none";this.l.style.display="none";this.ta(b);this.ua(a);this.b.style.display="";return this.l.style.display=""};c.prototype.ta=function(a){var b,c,g,e,f,k,h,l,p,q,m,n,r,t,y;q=this.F;y=a-this.s;if(0!==y){f=Math.min(Math.abs(y),
this.h);for(b=m=0;m<f;b=m+=1)for(0<y?(r=this.s+b,e=a+b+this.h-f):(r=this.s+this.h-f+b,e=a+b),g=this.D[e],c=this.T[e]+"px",h=this.m[r],delete this.m[r],this.u.ga(e)?this.u.H(e,function(a){return function(b){h.c=!1;return a.o.da(h,b)}}(this)):h.c||(h.c=!0,this.o.na(h)),h.left=g,h.style.width=c,this.m[e]=h,k=function(a){return function(b){if(a.u.L(l,e))return a.u.G(l,e,function(c){b.c=!1;return a.o.W(b,c)});if(!b.c)return b.c=!0,a.o.ca(b)}}(this),l=n=q,t=q+this.j;n<t;l=n+=1)p=l+","+r,b=this.cells[p],
delete this.cells[p],this.cells[l+","+e]=b,b.left=g,b.style.width=c,k(b);this.s=a}};c.prototype.ua=function(a){var b,c,g,e,f,k,h,l,p,q,m,n,r,t;h=this.F;l=this.s;t=a-h;if(0!==t){g=Math.min(Math.abs(t),this.j);for(b=p=0;p<g;b=p+=1)for(0<t?(m=h+b,c=a+b+this.j-g):(m=h+this.j-g+b,c=a+b),r=c*this.O,e=function(a){return function(b){if(a.u.L(c,f))return a.u.G(c,f,function(c){b.c=!1;return a.o.W(b,c)});if(!b.c)return b.c=!0,a.o.ca(b)}}(this),f=q=l,n=l+this.h;q<n;f=q+=1)k=m+","+f,b=this.cells[k],delete this.cells[k],
this.cells[c+","+f]=b,b.top=r,e(b);this.F=a}};return c}();D=function(c){return new B(c)};v={Fa:x,Ga:B,Da:A,Ca:v,Ea:w,bound:u};for(E in v)w=v[E],D[E]=w;window.Ha=D}).call(this);