funnel.min.js 1.8 KB

1
  1. (function(g){var b=g.getOptions().plotOptions,e=g.seriesTypes,c=g.merge,f=function(){},a=g.each;b.funnel=c(b.pie,{center:["50%","50%"],width:"90%",neckWidth:"30%",height:"100%",neckHeight:"25%",dataLabels:{connectorWidth:1,connectorColor:"#606060"},size:!0,states:{select:{color:"#C0C0C0",borderColor:"#000000",shadow:!1}}});e.funnel=g.extendClass(e.pie,{type:"funnel",animate:f,translate:function(){var Z=function(h,d){return/%$/.test(h)?d*parseInt(h,10)/100:parseInt(h,10)},T=0,V=this.chart,U=V.plotWidth,V=V.plotHeight,S=0,X=this.options,H=X.center,Y=Z(H[0],U),W=Z(H[0],V),L=Z(X.width,U),R,K,Q=Z(X.height,V),I=Z(X.neckWidth,U),G=Z(X.neckHeight,V),D=Q-G,Z=this.data,A,z,E=X.dataLabels.position==="left"?1:0,k,O,J,N,P,F,M;this.getWidthAt=K=function(d){return d>Q-G||Q===G?I:I+(L-I)*((Q-G-d)/(Q-G))};this.getX=function(h,d){return Y+(d?-1:1)*(K(h)/2+X.dataLabels.distance)};this.center=[Y,W,Q];this.centerX=Y;a(Z,function(d){T+=d.y});a(Z,function(d){M=null;z=T?d.y/T:0;O=W-Q/2+S*Q;P=O+z*Q;R=K(O);k=Y-R/2;J=k+R;R=K(P);N=Y-R/2;F=N+R;O>D?(k=N=Y-I/2,J=F=Y+I/2):P>D&&(M=P,R=K(D),N=Y-R/2,F=N+R,P=D);A=["M",k,O,"L",J,O,F,P];M&&A.push(F,M,N,M);A.push(N,P,"Z");d.shapeType="path";d.shapeArgs={d:A};d.percentage=z*100;d.plotX=Y;d.plotY=(O+(M||P))/2;d.tooltipPos=[Y,d.plotY];d.slice=f;d.half=E;S+=z});this.setTooltipPoints()},drawPoints:function(){var d=this,h=d.options,i=d.chart.renderer;a(d.data,function(k){var j=k.graphic,l=k.shapeArgs;j?j.animate(l):k.graphic=i.path(l).attr({fill:k.color,stroke:h.borderColor,"stroke-width":h.borderWidth}).add(d.group)})},sortByAngle:f,drawDataLabels:function(){var j=this.data,l=this.options.dataLabels.distance,n,m,k,p=j.length,o,i;for(this.center[2]-=2*l;p--;){k=j[p],m=(n=k.half)?1:-1,i=k.plotY,o=this.getX(i,n),k.labelPos=[0,i,o+(l-5)*m,i,o+l*m,i,n?"right":"left",0]}e.pie.prototype.drawDataLabels.call(this)}})})(Highcharts);