forked from mjjohnson/g.raphael
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathg.bar-min.js
1 lines (1 loc) · 5.43 KB
/
g.bar-min.js
1
Raphael.fn.g.barchart=function(C,A,a,d,O,u){u=u||{};var P={round:"round",sharp:"sharp",soft:"soft"}[u.type]||"square",n=parseFloat(u.gutter||"20%"),M=this.set(),v=this.set(),e=this.set(),r=this.set(),w=Math.max.apply(Math,O),N=[],c=this,B=0,F=u.colors||this.g.colors,q=O.length;if(this.raphael.is(O[0],"array")){w=[];B=q;q=0;for(var K=O.length;K--;){v.push(this.set());w.push(Math.max.apply(Math,O[K]));q=Math.max(q,O[K].length)}if(u.stacked){for(var K=q;K--;){var l=0;for(var J=O.length;J--;){l+=+O[J][K]||0}N.push(l)}}for(var K=O.length;K--;){if(O[K].length<q){for(var J=q;J--;){O[K].push(0)}}}w=Math.max.apply(Math,u.stacked?N:w)}w=(u.to)||w;var D=a/(q*(100+n)+n)*100,b=D*n/100,g=u.vgutter==null?20:u.vgutter,t=[],k=C+b,f=(d-2*g)/w;if(!u.stretch){b=Math.round(b);D=Math.floor(D)}!u.stacked&&(D/=B||1);for(var K=0;K<q;K++){t=[];for(var J=0;J<(B||1);J++){var L=Math.round((B?O[J][K]:O[K])*f),m=A+d-g-L,H=this.g.finger(Math.round(k+D/2),m+L,D,L,true,P).attr({stroke:F[B?J:K],fill:F[B?J:K]});if(B){v[J].push(H)}else{v.push(H)}H.y=m;H.x=Math.round(k+D/2);H.w=D;H.h=L;H.value=B?O[J][K]:O[K];if(!u.stacked){k+=D}else{t.push(H)}}if(u.stacked){var I;r.push(I=this.rect(t[0].x-t[0].w/2,A,D,d).attr(this.g.shim));I.bars=this.set();var o=0;for(var E=t.length;E--;){t[E].toFront()}for(var E=0,p=t.length;E<p;E++){var H=t[E],z,L=(o+H.value)*f,G=this.g.finger(H.x,A+d-g-!!o*0.5,D,L,true,P,1);I.bars.push(H);o&&H.attr({path:G});H.h=L;H.y=A+d-g-!!o*0.5-L;e.push(z=this.rect(H.x-H.w/2,H.y,D,H.value*f).attr(this.g.shim));z.bar=H;z.value=H.value;o+=H.value}k+=D}k+=b}r.toFront();k=C+b;if(!u.stacked){for(var K=0;K<q;K++){for(var J=0;J<(B||1);J++){var z;e.push(z=this.rect(Math.round(k),A+g,D,d-g).attr(this.g.shim));z.bar=B?v[J][K]:v[K];z.value=z.bar.value;k+=D}k+=b}}M.label=function(y,S){y=y||[];S=S==undefined?true:S;this.labels=c.set();var T,h=-Infinity;if(u.stacked){for(var x=0;x<q;x++){var Q=0;for(var s=0;s<(B||1);s++){Q+=B?O[s][x]:O[x];if(s==0){var U=c.g.labelise(y[s][x],Q,w);T=c.g.text(v[s][x].x,S?A+d-g/2:v[s][x].y-10,U);var R=T.getBBox();if(R.x-7<h){T.remove()}else{this.labels.push(T);h=R.x+R.width}}}}}else{for(var x=0;x<q;x++){for(var s=0;s<(B||1);s++){var U=c.g.labelise(B?y[0]&&y[0][x]:y[x],B?O[0][x]:O[x],w);T=c.g.text(v[0][x].x,S?A+d-g/2:v[0][x].y-10,U);var R=T.getBBox();if(R.x-7<h){T.remove()}else{this.labels.push(T);h=R.x+R.width}}}}return this};M.hover=function(i,h){r.hide();e.show();e.mouseover(i).mouseout(h);return this};M.hoverColumn=function(i,h){e.hide();r.show();h=h||function(){};r.mouseover(i).mouseout(h);return this};M.click=function(h){r.hide();e.show();e.click(h);return this};M.each=function(j){if(!Raphael.is(j,"function")){return this}for(var h=e.length;h--;){j.call(e[h])}return this};M.eachColumn=function(j){if(!Raphael.is(j,"function")){return this}for(var h=r.length;h--;){j.call(r[h])}return this};M.clickColumn=function(h){e.hide();r.show();r.click(h);return this};M.push(v,e,r);M.bars=v;M.covers=e;return M};Raphael.fn.g.hbarchart=function(n,l,B,w,c,r){r=r||{};var e={round:"round",sharp:"sharp",soft:"soft"}[r.type]||"square",f=parseFloat(r.gutter||"20%"),u=this.set(),A=this.set(),h=this.set(),E=this.set(),M=Math.max.apply(Math,c),a=[],o=this,C=0,m=r.colors||this.g.colors,H=c.length;if(this.raphael.is(c[0],"array")){M=[];C=H;H=0;for(var G=c.length;G--;){A.push(this.set());M.push(Math.max.apply(Math,c[G]));H=Math.max(H,c[G].length)}if(r.stacked){for(var G=H;G--;){var p=0;for(var F=c.length;F--;){p+=+c[F][G]||0}a.push(p)}}for(var G=c.length;G--;){if(c[G].length<H){for(var F=H;F--;){c[G].push(0)}}}M=Math.max.apply(Math,r.stacked?a:M)}M=(r.to)||M;var J=Math.floor(w/(H*(100+f)+f)*100),k=Math.floor(J*f/100),g=[],b=l+k,d=(B-1)/M;!r.stacked&&(J/=C||1);for(var G=0;G<H;G++){g=[];for(var F=0;F<(C||1);F++){var L=C?c[F][G]:c[G],I=this.g.finger(n,b+J/2,Math.round(L*d),J-1,false,e).attr({stroke:m[C?F:G],fill:m[C?F:G]});if(C){A[F].push(I)}else{A.push(I)}I.x=n+Math.round(L*d);I.y=b+J/2;I.w=Math.round(L*d);I.h=J;I.value=+L;if(!r.stacked){b+=J}else{g.push(I)}}if(r.stacked){var q=this.rect(n,g[0].y-g[0].h/2,B,J).attr(this.g.shim);E.push(q);q.bars=this.set();var v=0;for(var t=g.length;t--;){g[t].toFront()}for(var t=0,D=g.length;t<D;t++){var I=g[t],K,L=Math.round((v+I.value)*d),z=this.g.finger(n,I.y,L,J-1,false,e,1);q.bars.push(I);v&&I.attr({path:z});I.w=L;I.x=n+L;h.push(K=this.rect(n+v*d,I.y-I.h/2,I.value*d,J).attr(this.g.shim));K.bar=I;v+=I.value}b+=J}b+=k}E.toFront();b=l+k;if(!r.stacked){for(var G=0;G<H;G++){for(var F=0;F<C;F++){var K=this.rect(n,b,B,J).attr(this.g.shim);h.push(K);K.bar=A[F][G];b+=J}b+=k}}u.label=function(R,P){R=R||[];this.labels=o.set();for(var O=0;O<H;O++){for(var N=0;N<C;N++){var y=o.g.labelise(C?R[N]&&R[N][O]:R[O],C?c[N][O]:c[O],M);var Q=P?A[O*(C||1)+N].x-J/2+3:n+5,x=P?"end":"start",s;this.labels.push(s=o.g.text(Q,A[O*(C||1)+N].y,y).attr({"text-anchor":x}).insertBefore(h[0]));if(s.getBBox().x<n+5){s.attr({x:n+5,"text-anchor":"start"})}else{A[O*(C||1)+N].label=s}}}return this};u.hover=function(j,i){E.hide();h.show();i=i||function(){};h.mouseover(j).mouseout(i);return this};u.hoverColumn=function(j,i){h.hide();E.show();i=i||function(){};E.mouseover(j).mouseout(i);return this};u.each=function(s){if(!Raphael.is(s,"function")){return this}for(var j=h.length;j--;){s.call(h[j])}return this};u.eachColumn=function(s){if(!Raphael.is(s,"function")){return this}for(var j=E.length;j--;){s.call(E[j])}return this};u.click=function(i){E.hide();h.show();h.click(i);return this};u.clickColumn=function(i){h.hide();E.show();E.click(i);return this};u.push(A,h,E);u.bars=A;u.covers=h;return u};