UNPKG

basb-cli

Version:
2 lines (1 loc) 12.6 kB
import{ar as e,aq as t,ap as a,d as i,E as n,e as l,al as r,b as s,_ as o,a9 as g,h as c,f as h,u,s as d,p,o as f,k as y,j as m,ak as v,a2 as b,v as x,r as A,C as S,X as L,Y as w,x as M,an as T,bd as D,ao as N,S as I,ba as P}from"./index.js";import{d as C}from"./dataFilter.js";import{l as k,a as _,s as E,g as G}from"./labelGuideHelper.js";import{s as O}from"./labelLayoutHelper.js";import{g as W}from"./sectorHelper.js";import{c as j}from"./createSeriesDataSimply.js";import{L as B}from"./LegendVisualProvider.js";var U=2*Math.PI,V=Math.PI/180;function Y(e,t){return a(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()})}function H(e,t){var a=Y(e,t),l=e.get("center"),r=e.get("radius");i(r)||(r=[0,r]);var s,o,g=n(a.width,t.getWidth()),c=n(a.height,t.getHeight()),h=Math.min(g,c),u=n(r[0],h/2),d=n(r[1],h/2),p=e.coordinateSystem;if(p){var f=p.dataToPoint(l);s=f[0]||0,o=f[1]||0}else i(l)||(l=[l,l]),s=n(l[0],g)+a.x,o=n(l[1],c)+a.y;return{cx:s,cy:o,r0:u,r:d}}function R(a,i,n){i.eachSeriesByType(a,(function(a){var i=a.getData(),l=i.mapDimension("value"),r=Y(a,n),s=H(a,n),o=s.cx,g=s.cy,c=s.r,h=s.r0,u=-a.get("startAngle")*V,d=a.get("endAngle"),p=a.get("padAngle")*V;d="auto"===d?u-U:-d*V;var f=a.get("minAngle")*V+p,y=0;i.each(l,(function(e){!isNaN(e)&&y++}));var m=i.getSum(l),v=Math.PI/(m||y)*2,b=a.get("clockwise"),x=a.get("roseType"),A=a.get("stillShowZeroSum"),S=i.getDataExtent(l);S[0]=0;var L=b?1:-1,w=[u,d],M=L*p/2;e(w,!b),u=w[0],d=w[1];var T=Math.abs(d-u),D=T,N=0,I=u;if(i.setLayout({viewRect:r,r:c}),i.each(l,(function(e,a){var n;if(isNaN(e))i.setItemLayout(a,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:b,cx:o,cy:g,r0:h,r:x?NaN:c});else{(n="area"!==x?0===m&&A?v:e*v:T/y)<f?(n=f,D-=f):N+=e;var l=I+L*n,r=0,s=0;p>n?s=r=I+L*n/2:(r=I+M,s=l-M),i.setItemLayout(a,{angle:n,startAngle:r,endAngle:s,clockwise:b,cx:o,cy:g,r0:h,r:x?t(e,S,[h,c]):c}),I=l}})),D<U&&y)if(D<=.001){var P=T/y;i.each(l,(function(e,t){if(!isNaN(e)){var a=i.getItemLayout(t);a.angle=P;var n=0,l=0;P<p?l=n=u+L*(t+.5)*P:(n=u+L*t*P+M,l=u+L*(t+1)*P-M),a.startAngle=n,a.endAngle=l}}))}else v=D/N,I=u,i.each(l,(function(e,t){if(!isNaN(e)){var a=i.getItemLayout(t),n=a.angle===f?f:e*v,l=0,r=0;n<p?r=l=I+L*n/2:(l=I+M,r=I+L*n-M),a.startAngle=l,a.endAngle=r,I+=L*n}}))}))}var z=Math.PI/180;function X(e,t,a,i,n,l,r,s,o,g){if(!(e.length<2)){for(var c=e.length,h=0;h<c;h++)if("outer"===e[h].position&&"labelLine"===e[h].labelAlignTo){var u=e[h].label.x-g;e[h].linePoints[1][0]+=u,e[h].label.x=g}O(e,o,o+r)&&function(e){for(var l={list:[],maxY:0},r={list:[],maxY:0},s=0;s<e.length;s++)if("none"===e[s].labelAlignTo){var o=e[s],g=o.label.y>a?r:l,c=Math.abs(o.label.y-a);if(c>=g.maxY){var h=o.label.x-t-o.len2*n,u=i+o.len,p=Math.abs(h)<u?Math.sqrt(c*c/(1-h*h/u/u)):u;g.rB=p,g.maxY=c}g.list.push(o)}d(l),d(r)}(e)}function d(e){for(var l=e.rB,r=l*l,s=0;s<e.list.length;s++){var o=e.list[s],g=Math.abs(o.label.y-a),c=i+o.len,h=c*c,u=Math.sqrt((1-Math.abs(g*g/r))*h),d=t+(u+o.len2)*n,p=d-o.label.x;q(o,o.targetTextWidth-p*n,!0),o.label.x=d}}}function q(e,t,a){if(void 0===a&&(a=!1),null==e.labelStyleWidth){var i=e.label,n=i.style,l=e.rect,r=n.backgroundColor,s=n.padding,o=s?s[1]+s[3]:0,g=n.overflow,c=l.width+(r?0:o);if(t<c||a){var h=l.height;if(g&&g.match("break")){i.setStyle("backgroundColor",null),i.setStyle("width",t-o);var u=i.getBoundingRect();i.setStyle("width",Math.ceil(u.width)),i.setStyle("backgroundColor",r)}else{var d=t-o,p=t<c?d:a?d>e.unconstrainedWidth?null:d:null;i.setStyle("width",p)}var f=i.getBoundingRect();l.width=f.width;var y=(i.style.margin||0)+2.1;l.height=f.height+y,l.y-=(l.height-h)/2}}}function F(e){return"center"===e.position}function Z(e){var t,a,i=e.getData(),o=[],g=!1,c=(e.get("minShowLabelAngle")||0)*z,h=i.getLayout("viewRect"),u=i.getLayout("r"),d=h.width,p=h.x,f=h.y,y=h.height;function m(e){e.ignore=!0}i.each((function(e){var h=i.getItemGraphicEl(e),f=h.shape,y=h.getTextContent(),v=h.getTextGuideLine(),b=i.getItemModel(e),x=b.getModel("label"),A=x.get("position")||b.get(["emphasis","label","position"]),S=x.get("distanceToLabelLine"),L=x.get("alignTo"),w=n(x.get("edgeDistance"),d),M=x.get("bleedMargin"),T=b.getModel("labelLine"),D=T.get("length");D=n(D,d);var N=T.get("length2");if(N=n(N,d),Math.abs(f.endAngle-f.startAngle)<c)return l(y.states,m),y.ignore=!0,void(v&&(l(v.states,m),v.ignore=!0));if(function(e){if(!e.ignore)return!0;for(var t in e.states)if(!1===e.states[t].ignore)return!0;return!1}(y)){var I,P,C,k,_=(f.startAngle+f.endAngle)/2,E=Math.cos(_),G=Math.sin(_);t=f.cx,a=f.cy;var O="inside"===A||"inner"===A;if("center"===A)I=f.cx,P=f.cy,k="center";else{var W=(O?(f.r+f.r0)/2*E:f.r*E)+t,j=(O?(f.r+f.r0)/2*G:f.r*G)+a;if(I=W+3*E,P=j+3*G,!O){var B=W+E*(D+u-f.r),U=j+G*(D+u-f.r),V=B+(E<0?-1:1)*N;I="edge"===L?E<0?p+w:p+d-w:V+(E<0?-S:S),P=U,C=[[W,j],[B,U],[V,U]]}k=O?"center":"edge"===L?E>0?"right":"left":E>0?"left":"right"}var Y=Math.PI,H=0,R=x.get("rotate");if(s(R))H=R*(Y/180);else if("center"===A)H=0;else if("radial"===R||!0===R){H=E<0?-_+Y:-_}else if("tangential"===R&&"outside"!==A&&"outer"!==A){var z=Math.atan2(E,G);z<0&&(z=2*Y+z),G>0&&(z=Y+z),H=z-Y}if(g=!!H,y.x=I,y.y=P,y.rotation=H,y.setStyle({verticalAlign:"middle"}),O){y.setStyle({align:k});var X=y.states.select;X&&(X.x+=y.x,X.y+=y.y)}else{var q=y.getBoundingRect().clone();q.applyTransform(y.getComputedTransform());var F=(y.style.margin||0)+2.1;q.y-=F/2,q.height+=F,o.push({label:y,labelLine:v,position:A,len:D,len2:N,minTurnAngle:T.get("minTurnAngle"),maxSurfaceAngle:T.get("maxSurfaceAngle"),surfaceNormal:new r(E,G),linePoints:C,textAlign:k,labelDistance:S,labelAlignTo:L,edgeDistance:w,bleedMargin:M,rect:q,unconstrainedWidth:q.width,labelStyleWidth:y.style.width})}h.setTextConfig({inside:O})}})),!g&&e.get("avoidLabelOverlap")&&function(e,t,a,i,n,l,r,s){for(var o=[],g=[],c=Number.MAX_VALUE,h=-Number.MAX_VALUE,u=0;u<e.length;u++){var d=e[u].label;F(e[u])||(d.x<t?(c=Math.min(c,d.x),o.push(e[u])):(h=Math.max(h,d.x),g.push(e[u])))}for(u=0;u<e.length;u++)if(!F(y=e[u])&&y.linePoints){if(null!=y.labelStyleWidth)continue;d=y.label;var p=y.linePoints,f=void 0;f="edge"===y.labelAlignTo?d.x<t?p[2][0]-y.labelDistance-r-y.edgeDistance:r+n-y.edgeDistance-p[2][0]-y.labelDistance:"labelLine"===y.labelAlignTo?d.x<t?c-r-y.bleedMargin:r+n-h-y.bleedMargin:d.x<t?d.x-r-y.bleedMargin:r+n-d.x-y.bleedMargin,y.targetTextWidth=f,q(y,f)}for(X(g,t,a,i,1,0,l,0,s,h),X(o,t,a,i,-1,0,l,0,s,c),u=0;u<e.length;u++){var y;if(!F(y=e[u])&&y.linePoints){d=y.label,p=y.linePoints;var m="edge"===y.labelAlignTo,v=d.style.padding,b=v?v[1]+v[3]:0,x=d.style.backgroundColor?0:b,A=y.rect.width+x,S=p[1][0]-p[2][0];m?d.x<t?p[2][0]=r+y.edgeDistance+A+y.labelDistance:p[2][0]=r+n-y.edgeDistance-A-y.labelDistance:(d.x<t?p[2][0]=d.x+y.labelDistance:p[2][0]=d.x-y.labelDistance,p[1][0]=p[2][0]+S),p[1][1]=p[2][1]=d.y}}}(o,t,a,u,d,y,p,f);for(var v=0;v<o.length;v++){var b=o[v],x=b.label,A=b.labelLine,S=isNaN(x.x)||isNaN(x.y);if(x){x.setStyle({align:b.textAlign}),S&&(l(x.states,m),x.ignore=!0);var L=x.states.select;L&&(L.x+=x.x,L.y+=x.y)}if(A){var w=b.linePoints;S||!w?(l(A.states,m),A.ignore=!0):(k(w,b.minTurnAngle),_(w,b.surfaceNormal,b.maxSurfaceAngle),A.setShape({points:w}),x.__hostTarget.textGuideLineConfig={anchor:new r(w[0][0],w[0][1])})}}}var J=function(e){function t(t,a,i){var n=e.call(this)||this;n.z2=2;var l=new g;return n.setTextContent(l),n.updateData(t,a,i,!0),n}return o(t,e),t.prototype.updateData=function(e,t,a,i){var n=this,l=e.hostModel,r=e.getItemModel(t),s=r.getModel("emphasis"),o=e.getItemLayout(t),g=c(W(r.getModel("itemStyle"),o,!0),o);if(isNaN(g.startAngle))n.setShape(g);else{if(i){n.setShape(g);var y=l.getShallow("animationType");l.ecModel.ssr?(h(n,{scaleX:0,scaleY:0},l,{dataIndex:t,isFrom:!0}),n.originX=g.cx,n.originY=g.cy):"scale"===y?(n.shape.r=o.r0,h(n,{shape:{r:o.r}},l,t)):null!=a?(n.setShape({startAngle:a,endAngle:a}),h(n,{shape:{startAngle:o.startAngle,endAngle:o.endAngle}},l,t)):(n.shape.endAngle=o.startAngle,u(n,{shape:{endAngle:o.endAngle}},l,t))}else d(n),u(n,{shape:g},l,t);n.useStyle(e.getItemVisual(t,"style")),p(n,r);var m=(o.startAngle+o.endAngle)/2,v=l.get("selectedOffset"),b=Math.cos(m)*v,x=Math.sin(m)*v,A=r.getShallow("cursor");A&&n.attr("cursor",A),this._updateLabel(l,e,t),n.ensureState("emphasis").shape=c({r:o.r+(s.get("scale")&&s.get("scaleSize")||0)},W(s.getModel("itemStyle"),o)),c(n.ensureState("select"),{x:b,y:x,shape:W(r.getModel(["select","itemStyle"]),o)}),c(n.ensureState("blur"),{shape:W(r.getModel(["blur","itemStyle"]),o)});var S=n.getTextGuideLine(),L=n.getTextContent();S&&c(S.ensureState("select"),{x:b,y:x}),c(L.ensureState("select"),{x:b,y:x}),f(this,s.get("focus"),s.get("blurScope"),s.get("disabled"))}},t.prototype._updateLabel=function(e,t,a){var i=this,n=t.getItemModel(a),l=n.getModel("labelLine"),r=t.getItemVisual(a,"style"),s=r&&r.fill,o=r&&r.opacity;y(i,m(n),{labelFetcher:t.hostModel,labelDataIndex:a,inheritColor:s,defaultOpacity:o,defaultText:e.getFormattedLabel(a,"normal")||t.getName(a)});var g=i.getTextContent();i.setTextConfig({position:null,rotation:null}),g.attr({z2:10});var c=e.get(["label","position"]);if("outside"!==c&&"outer"!==c)i.removeTextGuideLine();else{var h=this.getTextGuideLine();h||(h=new v,this.setTextGuideLine(h)),E(this,G(n),{stroke:s,opacity:b(l.get(["lineStyle","opacity"]),o,1)})}},t}(x),$=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.ignoreLabelLineUpdate=!0,t}return o(t,e),t.prototype.render=function(e,t,a,i){var n,l=e.getData(),r=this._data,s=this.group;if(!r&&l.count()>0){for(var o=l.getItemLayout(0),g=1;isNaN(o&&o.startAngle)&&g<l.count();++g)o=l.getItemLayout(g);o&&(n=o.startAngle)}if(this._emptyCircleSector&&s.remove(this._emptyCircleSector),0===l.count()&&e.get("showEmptyCircle")){var c=new x({shape:H(e,a)});c.useStyle(e.getModel("emptyCircleStyle").getItemStyle()),this._emptyCircleSector=c,s.add(c)}l.diff(r).add((function(e){var t=new J(l,e,n);l.setItemGraphicEl(e,t),s.add(t)})).update((function(e,t){var a=r.getItemGraphicEl(t);a.updateData(l,e,n),a.off("click"),s.add(a),l.setItemGraphicEl(e,a)})).remove((function(t){var a=r.getItemGraphicEl(t);A(a,e,t)})).execute(),Z(e),"expansion"!==e.get("animationTypeUpdate")&&(this._data=l)},t.prototype.dispose=function(){},t.prototype.containPoint=function(e,t){var a=t.getData().getItemLayout(0);if(a){var i=e[0]-a.cx,n=e[1]-a.cy,l=Math.sqrt(i*i+n*n);return l<=a.r&&l>=a.r0}},t.type="pie",t}(S),K=L(),Q=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t.prototype.init=function(t){e.prototype.init.apply(this,arguments),this.legendVisualProvider=new B(w(this.getData,this),w(this.getRawData,this)),this._defaultLabelLine(t)},t.prototype.mergeOption=function(){e.prototype.mergeOption.apply(this,arguments)},t.prototype.getInitialData=function(){return j(this,{coordDimensions:["value"],encodeDefaulter:M(T,this)})},t.prototype.getDataParams=function(t){var a=this.getData(),i=K(a),n=i.seats;if(!n){var l=[];a.each(a.mapDimension("value"),(function(e){l.push(e)})),n=i.seats=D(l,a.hostModel.get("percentPrecision"))}var r=e.prototype.getDataParams.call(this,t);return r.percent=n[t]||0,r.$vars.push("percent"),r},t.prototype._defaultLabelLine=function(e){N(e,"labelLine",["show"]);var t=e.labelLine,a=e.emphasis.labelLine;t.show=t.show&&e.label.show,a.show=a.show&&e.emphasis.label.show},t.type="series.pie",t.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,endAngle:"auto",padAngle:0,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},t}(I);function ee(e){e.registerChartView($),e.registerSeriesModel(Q),P("pie",e.registerAction),e.registerLayout(M(R,"pie")),e.registerProcessor(C("pie")),e.registerProcessor({seriesType:"pie",reset:function(e,t){var a=e.getData();a.filterSelf((function(e){var t=a.mapDimension("value"),i=a.get(t,e);return!(s(i)&&!isNaN(i)&&i<0)}))}})}export{ee as install};