UNPKG

quoslibero

Version:

FusionCharts JavaScript charting framework

1 lines 7.62 kB
import GaugePolarNumeric from'./gauge-polar-numeric';import{toPrecision,pluckNumber}from'../lib';import difference from'./utils/array/diff';import{addDep}from'../dependency-manager';import gaugeAnimation from'./gauge.animation';import LinearScale from'./scales/linear';import{setAxisDimention,getPixel,_drawLabel,_parseLabel}from'./common-api';addDep({name:'gaugeAnimation',type:'animationRule',extension:gaugeAnimation});class GaugeAxis extends GaugePolarNumeric{constructor(){super(),this.config.scale=new LinearScale,this.config.labelMap=[],this.config.prevIntervalArr=[],this.config.prevTicksMap=[]}getName(){return'gaugeAxis'}getLabelPos(a,b){var c,d=this,e=d.config,f=e.canvas,g=d.getFromEnv('chart'),h=g.config,i=f.canvasTop||h.canvasTop,j=f.canvasBottom||h.canvasBottom,k=f.canvasLeft||h.canvasLeft,l=e.isVertical,m=pluckNumber(e.isOpposit),n=f.canvasRight||h.canvasRight,o=e.labelPadding,p={x:0,y:0};return l?(p.x=m?n+o:k-o,p.y=c?d.getPixel(a,b)+c:d.getPixel(a,b)):(p.x=d.getPixel(a,b),p.y=m?i-o:j+o,c&&(p.y+=c)),p}_drawComponents(){var a=this,b=a.config;b.drawTick&&a._drawTick(),b.drawLabels&&a._drawLabel()}_drawTick(){var a,b,c,d,e,f,g,h,k,l,m,n,o,p,q,r,s,t,u=this,v=u.config,w=v.axisRange,x=v.isVertical,y=pluckNumber(v.isOpposit),z=v.drawTick,A=v.drawTickMinor,B=pluckNumber(v.placeTicksInside),C=u.getLinkedItem('canvas').getEffectiveDimensions(),D=C.top,E=D+C.height,F=C.left,G=F+C.width,H=w.max,I=w.min,J=u.getFromEnv('animationManager'),K=v.ticks,L=K.length,M=v.axisAxisLineContainer,N=[],O=v.minorTicks,P=function(a,b,c){var d=u.getPixel(a,{wrtVisible:!0});return x?['M',b,d,'L',c,d]:['M',d,b,'L',d,c]};if(f={stroke:v.majorTMColor,"stroke-width":v.majorTMThickness,"stroke-linecap":'round',opacity:1},g={stroke:v.majorTMColor,"stroke-width":v.majorTMThickness,"stroke-linecap":'round'},e={stroke:v.minorTMColor,"stroke-width":v.minorTMThickness,"stroke-linecap":'round',opacity:1},v.lines.isDraw&&z){for(x?y?B?(h=G-v.tickMarkDistance,k=h-v.majorTMHeight,l=h-v.minorTMHeight):(h=G+v.tickMarkDistance,k=h+v.majorTMHeight,l=h+v.minorTMHeight):B?(h=F+v.tickMarkDistance,k=h+v.majorTMHeight,l=h+v.minorTMHeight):(h=F-v.tickMarkDistance,k=h-v.majorTMHeight,l=h-v.minorTMHeight):y?B?(h=D+v.tickMarkDistance,k=h+v.majorTMHeight,l=h+v.minorTMHeight):(h=D-v.tickMarkDistance,k=h-v.majorTMHeight,l=h-v.minorTMHeight):B?(h=E-v.tickMarkDistance,k=h-v.majorTMHeight,l=h-v.minorTMHeight):(h=E+v.tickMarkDistance,k=h+v.majorTMHeight,l=h+v.minorTMHeight),m=v.drawTickMarkConnector?x?['M',h,u.getPixel(I),'L',h,u.getPixel(H)]:['M',u.getPixel(I),h,'L',u.getPixel(H),h]:['M0,0'],g.path=m,c=u.getGraphicalElement('axisLinePath'),a=!!c,c=J.setAnimation({el:c||'path',attr:g,container:M,component:u,label:'path'}),N.push('axisLinePath'),a||u.addGraphicalElement('axisLinePath',c),n=0;n<L;n+=1)p=K[n],b=P(p,h,k),f.path=b.toString(),N.push(p),d=u.getGraphicalElement(p),a=!!d,d=J.setAnimation({el:d||'path',data:{path:b.slice(),value:p},attr:f,container:M,component:u,label:'path'}),a||u.addGraphicalElement(p,d);if(A)for(o=0;o<O.length;o+=1)q=O[o],b=P(q,h,l),e.path=b.toString(),N.push(q),d=u.getGraphicalElement(q),a=!!d,d=J.setAnimation({el:d||'path',data:{path:b.slice(),value:q},attr:e,component:u,container:M,label:'path'}),a||u.addGraphicalElement(q,d)}for(r=difference(v.prevTicksMap,N),n=0,t=r.length;n<t;n++)s=u.getGraphicalElement(r[n]),s&&u.removeGraphicalElement(s);v.prevTicksMap=N}placeAxis(a){var b,c,d,e,f,g,h,j,k,l,m,n,o,p,q,r,s,t,u,v=Math.min,w=Math.max,x=this,y=x.getFromEnv('chart'),z=x.getScale(),A=y.getFromEnv('smartLabel'),B=x.config,C=B.axisRange,D=B.isVertical,E=pluckNumber(B.isOpposit),F=B.labels.style,G=C.tickInterval,H=pluckNumber(B.placeTicksInside),I=pluckNumber(B.placeValuesInside),J=C.max,K=C.min,L=0,M=0,N='',O=B.labels.style.lineHeight,P=x.getFromEnv('number-formatter');if(D?z.setRange([y.config.canvasTop,y.config.canvasBottom]):z.setRange([y.config.canvasLeft,y.config.canvasRight]),d={left:0,right:0,top:0,bottom:0},0>=a)return d;if(B.labels.isDraw=!0,B.labels.drawNumericVal=!0,B.labels.drawNormalVal=B.showTickValues,B.labels.drawLimitVal=B.showLimits,B.lines.isDraw=!0,B.labels.step=B.tickValueStep,B.labelPadding=0,A.useEllipsesOnOverflow(y.config.useEllipsesWhenOverflow),A.setStyle({fontSize:F.fontSize,fontFamily:F.fontFamily,lineHeight:F.lineHeight,fontWeight:F.fontWeight}),x.components||(x.components={},x.components.labels=[]),B.drawTick&&B.showTickMarks&&B.lines.isDraw?(a-=B.tickMarkDistance,M=w(B.minorTMHeight,B.majorTMHeight),H?(h=a+B.tickMarkDistance,I&&(B.labelPadding=B.tickMarkDistance+M)):M>a?(B.lines.isDraw=!1,h=a+B.tickMarkDistance,h=a):(D?E?d.right+=M+B.tickMarkDistance:d.left+=M+B.tickMarkDistance:E?d.top+=M+B.tickMarkDistance:d.bottom+=M+B.tickMarkDistance,h=a-M,!I&&(B.labelPadding=B.tickMarkDistance+M))):(B.lines.isDraw=!1,h=a),h-=B.tickValueDistance,B.drawLabels&&(B.showTickValues||B.showLimits)){for(n=Math.abs(x.getPixel(K)-x.getPixel(K+G))/2,B.labelPadding+=B.tickValueDistance,h-=B.tickValueDistance,s=P.scale,(f=K+G,g=0);f<J;f+=G)e=''+s.call(P,toPrecision(f,10)),l=A.getOriSize(e),x.components.labels[g]={config:{width:l.width,height:l.height,props:{label:{attr:{text:e}}}}},g++,e.length>L&&(N=e,L=e.length);if(l=A.getOriSize(N),D?l.width>h&&(B.labels.drawNumericVal=!1,!B.upperLimitDisplay&&!B.lowerLimitDisplay&&(B.labels.isDraw=!1),N='',l=A.getOriSize(N)):l.height>h&&(B.labels.drawNumericVal=!1,!B.upperLimitDisplay&&!B.lowerLimitDisplay&&(B.labels.isDraw=!1),N='',l=A.getOriSize(N)),j=D?h:n,k=D?n:h,B.showLimits?(p=s.call(P,J),q=s.call(P,K),b=B.upperLimitDisplay||''+p,c=B.lowerLimitDisplay||''+q,t=A.getOriSize(b),t.width>l.width&&(o=A.getSmartText(b,j,k),(b===p&&o.text===o.oriText||B.labels.drawNumericVal)&&(N=b,l=t)),u=A.getOriSize(c),u.width>l.width&&(o=A.getSmartText(c,j,k),(c===q&&o.text===o.oriText||B.labels.drawNumericVal)&&(N=c)),''===N&&(N=A.getOriSize(B.upperLimitDisplay).width>A.getOriSize(B.lowerLimitDisplay).width?b:c,l=A.getOriSize(N))):B.labels.drawLimitVal=!1,!D)for(f=K;f<=J&&(m=A.getSmartText(N,j,k),''===m.text);f+=G)j+=n;else m=A.getSmartText(N,j,k);m=A.getSmartText(N,j,k),B.labelMaxW=w(m.width,l.width),B.labelMaxH=w(m.height,l.height),!I&&B.labels.isDraw?D?(B.labelMaxW=v(B.labelMaxW,h),E?d.right+=B.labelMaxW+B.tickValueDistance:d.left+=B.labelMaxW+B.tickValueDistance):(B.labelMaxH=v(B.labelMaxH,h),E?d.top+=B.labelMaxH+B.tickValueDistance:d.bottom+=B.labelMaxH+B.tickValueDistance):B.labelPadding=-B.labelPadding,B.labels.drawLimitVal&&(O&&-1!==O.indexOf('px')&&(O=parseFloat(O.replace('px',''))),B.upperLimitDisplay?l=A.getSmartText(B.upperLimitDisplay,B.labelMaxW,B.labelMaxH+O/2):(e=''+s.call(P,toPrecision(J,10)),l=A.getOriSize(e)),x.components.labels[g]={config:{width:l.width,height:l.height,props:{label:{attr:{text:l.text}}}}},B.lowerLimitDisplay?l=A.getSmartText(B.lowerLimitDisplay,B.labelMaxW,B.labelMaxH+O/2):(e=''+s.call(P,toPrecision(K,10)),l=A.getOriSize(e)),r={config:{width:l.width,height:l.height,props:{label:{attr:{text:l.text}}}}},x.components.labels.unshift(r))}else B.labels.isDraw=!1;return B.spaceTaken=d,d}hide(){var a=this,b=a.config;b.axisContainer&&(b.axisLabelContainerTop.hide(),b.axisContainer.hide(),b.axisTrendLabelContainer.hide(),b.axisAxisLineContainer.hide())}show(){var a=this,b=a.config;b.axisContainer&&(b.axisLabelContainerTop.show(),b.axisContainer.show(),b.axisTrendLabelContainer.show(),b.axisAxisLineContainer.show())}_computeTranslation(){if(this)return 0}}GaugeAxis.prototype.setAxisDimention=setAxisDimention,GaugeAxis.prototype.getPixel=getPixel,GaugeAxis.prototype._parseLabel=_parseLabel,GaugeAxis.prototype._drawLabel=_drawLabel;export default GaugeAxis;