1 line
12 KiB
JavaScript
1 line
12 KiB
JavaScript
|
define("echarts/chart/pie",["require","./base","zrender/shape/Text","zrender/shape/Ring","zrender/shape/Circle","zrender/shape/Sector","zrender/shape/Polyline","../config","../util/ecData","zrender/tool/util","zrender/tool/math","zrender/tool/color","../chart"],function(t){function e(t,e,s,o,n){i.call(this,t,e,s,o,n);var a=this;a.shapeHandler.onmouseover=function(t){var e=t.target,i=l.get(e,"seriesIndex"),s=l.get(e,"dataIndex"),o=l.get(e,"special"),n=[e.style.x,e.style.y],r=e.style.startAngle,h=e.style.endAngle,d=((h+r)/2+360)%360,p=e.highlightStyle.color,c=a.getLabel(i,s,o,n,d,p,!0);c&&a.zr.addHoverShape(c);var u=a.getLabelLine(i,s,n,e.style.r0,e.style.r,d,p,!0);u&&a.zr.addHoverShape(u)},this.refresh(o)}var i=t("./base"),s=t("zrender/shape/Text"),o=t("zrender/shape/Ring"),n=t("zrender/shape/Circle"),a=t("zrender/shape/Sector"),r=t("zrender/shape/Polyline"),h=t("../config");h.pie={zlevel:0,z:2,clickable:!0,legendHoverLink:!0,center:["50%","50%"],radius:[0,"55%"],clockWise:!0,startAngle:90,minAngle:0,selectedOffset:10,itemStyle:{normal:{borderColor:"rgba(0,0,0,0)",borderWidth:1,label:{show:!0,position:"outer"},labelLine:{show:!0,length:10,lineStyle:{width:1,type:"solid"}}},emphasis:{borderColor:"rgba(0,0,0,0)",borderWidth:1,label:{show:!1},labelLine:{show:!1,length:10,lineStyle:{width:1,type:"solid"}}}}};var l=t("../util/ecData"),d=t("zrender/tool/util"),p=t("zrender/tool/math"),c=t("zrender/tool/color");return e.prototype={type:h.CHART_TYPE_PIE,_buildShape:function(){var t=this.series,e=this.component.legend;this.selectedMap={},this._selected={};var i,s,a;this._selectedMode=!1;for(var r,d=0,p=t.length;p>d;d++)if(t[d].type===h.CHART_TYPE_PIE){if(t[d]=this.reformOption(t[d]),this.legendHoverLink=t[d].legendHoverLink||this.legendHoverLink,r=t[d].name||"",this.selectedMap[r]=e?e.isSelected(r):!0,!this.selectedMap[r])continue;i=this.parseCenter(this.zr,t[d].center),s=this.parseRadius(this.zr,t[d].radius),this._selectedMode=this._selectedMode||t[d].selectedMode,this._selected[d]=[],this.deepQuery([t[d],this.option],"calculable")&&(a={zlevel:this.getZlevelBase(),z:this.getZBase(),hoverable:!1,style:{x:i[0],y:i[1],r0:s[0]<=10?0:s[0]-10,r:s[1]+10,brushType:"stroke",lineWidth:1,strokeColor:t[d].calculableHolderColor||this.ecTheme.calculableHolderColor||h.calculableHolderColor}},l.pack(a,t[d],d,void 0,-1),this.setCalculable(a),a=s[0]<=10?new n(a):new o(a),this.shapeList.push(a)),this._buildSinglePie(d),this.buildMark(d)}this.addShapeList()},_buildSinglePie:function(t){for(var e,i=this.series,s=i[t],o=s.data,n=this.component.legend,a=0,r=0,h=0,l=Number.NEGATIVE_INFINITY,d=[],p=0,c=o.length;c>p;p++)e=o[p].name,this.selectedMap[e]=n?n.isSelected(e):!0,this.selectedMap[e]&&!isNaN(o[p].value)&&(0!==+o[p].value?a++:r++,h+=+o[p].value,l=Math.max(l,+o[p].value));if(0!==h){for(var u,g,m,f,y,_,x=100,v=s.clockWise,b=(s.startAngle.toFixed(2)-0+360)%360,S=s.minAngle||.01,z=360-S*a-.01*r,T=s.roseType,p=0,c=o.length;c>p;p++)if(e=o[p].name,this.selectedMap[e]&&!isNaN(o[p].value)){if(g=n?n.getColor(e):this.zr.getColor(p),x=o[p].value/h,u="area"!=T?v?b-x*z-(0!==x?S:.01):x*z+b+(0!==x?S:.01):v?b-360/c:360/c+b,u=u.toFixed(2)-0,x=(100*x).toFixed(2),m=this.parseCenter(this.zr,s.center),f=this.parseRadius(this.zr,s.radius),y=+f[0],_=+f[1],"radius"===T?_=o[p].value/l*(_-y)*.8+.2*(_-y)+y:"area"===T&&(_=Math.sqrt(o[p].value/l)*(_-y)+y),v){var L;L=b,b=u,u=L}this._buildItem(d,t,p,x,o[p].selected,m,y,_,b,u,g),v||(b=u)}this._autoLabelLayout(d,m,_);for(var p=0,c=d.length;c>p;p++)this.shapeList.push(d[p]);d=null}},_buildItem:function(t,e,i,s,o,n,a,r,h,d,p){var c=this.series,u=((d+h)/2+360)%360,g=this.getSector(e,i,s,o,n,a,r,h,d,p);l.pack(g,c[e],e,c[e].data[i],i,c[e].data[i].name,s),t.push(g);var m=this.getLabel(e,i,s,n,u,p,!1),f=this.getLabelLine(e,i,n,a,r,u,p,!1);f&&(l.pack(f,c[e],e,c[e].data[i],i,c[e].data[i].name,s),t.push(f)),m&&(l.pack(m,c[e],e,c[e].data[i],i,c[e].data[i].name,s),m._labelLine=f,t.push(m))},getSector:function(t,e,i,s,o,n,r,h,l,d){var u=this.series,g=u[t],m=g.data[e],f=[m,g],y=this.deepMerge(f,"itemStyle.normal")||{},_=this.deepMerge(f,"itemSt
|