@fusioncharts/core
Version:
JavaScript Data Visualisation Library
1 lines • 27.8 kB
JavaScript
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _gaugePolarNumeric=_interopRequireDefault(require("./gauge-polar-numeric"));var _lib=require("../lib");var _polarUtil=require("@fusioncharts/utils/src/scale-utils/polar-util");var _diff=_interopRequireDefault(require("@fusioncharts/utils/src/scale-utils/array/diff"));var _dependencyManager=require("../dependency-manager");var _polarNumeric=_interopRequireDefault(require("./polar-numeric.animation"));var _linear=_interopRequireDefault(require("@fusioncharts/utils/src/scales/linear"));var UNDEF,POSITION_MIDDLE=_lib.preDefStr.POSITION_MIDDLE,POSITION_START=_lib.preDefStr.POSITION_START,POSITION_TOP=_lib.preDefStr.POSITION_TOP,POSITION_BOTTOM=_lib.preDefStr.POSITION_BOTTOM,POSITION_END=_lib.preDefStr.POSITION_END,BLANKSTRING="",GUTTER_PADDING=5,M="M",L="L",math=Math,pi=math.PI,pi2=2*pi,TICK="_tick",LABEL_ID="_label",TRENDLINE_ID="_trendLine",TRENDLABEL_ID="_trendLabel",TRENDMARKER_ID="_marker",trendTextPositions=[],overLappingPoints={};(0,_dependencyManager.addDep)({name:"polarNumericAnimation",type:"animationRule",extension:_polarNumeric.default});var PolarGaugeAxis=function(_GaugePolarNumeric){function PolarGaugeAxis(){var _this;_this=_GaugePolarNumeric.call(this)||this;_this.config.scale=new _linear.default;_this.config.prevTickMarks=[];_this.config.prevIntervalArrLabel=[];_this.config.prevIntervalArrTrendLine=[];return _this}(0,_inheritsLoose2.default)(PolarGaugeAxis,_GaugePolarNumeric);var _proto=PolarGaugeAxis.prototype;_proto.getName=function getName(){return"polarNumeric"};_proto.setAxisDimention=function setAxisDimention(){var axis=this,scale=axis.getScale(),axisConfig=axis.config,startAngle=axisConfig.startAngle||pi2/2,totalAngle=axisConfig.totalAngle||pi2/2,endAngle=startAngle+totalAngle,rangeArr,axisDimention=axisConfig.axisDimention||(axisConfig.axisDimention={});axisDimention.centerX=axisConfig.centerX;axisDimention.centerY=axisConfig.centerY;axisDimention.axisLength=pi2;rangeArr=[startAngle,endAngle];scale.setRange(rangeArr)};_proto.__setDefaultConfig=function __setDefaultConfig(){_GaugePolarNumeric.prototype.__setDefaultConfig.call(this);var config=this.config;config.trendPoints=UNDEF;config.ticksBelowGauge=UNDEF;config.ticksBelowGraph=UNDEF;config.trendValueDistance=UNDEF};_proto.configureAttributes=function configureAttributes(rawAttr){var axis=this,axisConfig=axis.config,axisAttr;_GaugePolarNumeric.prototype.configureAttributes.call(this,rawAttr);axisAttr=axisConfig.rawAttr;axisConfig.upperLimitDisplay=axisAttr.upperLimitDisplay||"";axisConfig.lowerLimitDisplay=axisAttr.lowerLimitDisplay||"";axisConfig.polarPadding=4};_proto._drawComponents=function _drawComponents(){var axis=this,axisConfig=axis.config;axisConfig.drawTick&&axis._drawTick();axisConfig.drawLabels&&axis._drawLabel();axisConfig.drawTrendLines&&axis._drawTrendLine()};_proto.getAngle=function getAngle(value){var axis=this,angle,axisScale=axis.getScale();angle=axisScale.getRangeValue(value);return angle};_proto.placeAxis=function placeAxis(maxLimit){var axis=this,axisConfig=axis.config,chart=axis.getFromEnv("chart"),smartLabel=chart.getFromEnv("smartLabel"),axisRange=axisConfig.axisRange,labelStyle=axisConfig.labels.style,increment=axisRange.tickInterval||1,upperLimitDisplay=axisConfig.upperLimitDisplay,lowerLimitDisplay=axisConfig.lowerLimitDisplay,max=axisRange.max,min=axisRange.min,maxTextSize=0,maxText,i,counter,text,numberFormatterFn,textWidthBuffer,numberFormatter=chart.getFromEnv("number-formatter"),numDimention,ret,leftLimit;ret={left:0,right:0,top:0,bottom:0};smartLabel.useEllipsesOnOverflow(chart.config.useEllipsesWhenOverflow);smartLabel.setStyle({fontSize:labelStyle.fontSize,fontFamily:labelStyle.fontFamily,lineHeight:labelStyle.lineHeight,fontWeight:labelStyle.fontWeight});if(!axis.components){axis.components={};axis.components.labels=[]}axisConfig.labels.isDraw=1;axisConfig.labels.drawNormalVal=1;axisConfig.labels.drawLimitVal=1;axisConfig.lines.isDraw=1;axisConfig.labels.step=axisConfig.tickValueStep;axisConfig.labelPadding=0;leftLimit=maxLimit;if(axisConfig.drawLabels&&axisConfig.showTickValues&&leftLimit>0){axisConfig.labelPadding+=axisConfig.tickValueDistance;leftLimit-=axisConfig.tickValueDistance;numberFormatterFn=numberFormatter.scale;for(i=min,counter=0;i<=max;i+=increment){text=""+numberFormatterFn.call(numberFormatter,(0,_lib.toPrecision)(i,10));numDimention=smartLabel.getOriSize(text,true);axis.components.labels[counter]={config:{width:numDimention.width,height:numDimention.height,props:{label:{attr:{}}}}};counter++;if(text.length>maxTextSize){maxText=text;maxTextSize=text.length}}numDimention=smartLabel.getOriSize(maxText,true);if(numDimention.width>maxLimit/2){axisConfig.labels.isDraw=false;return ret}if(axisConfig.showLimits){if(upperLimitDisplay||lowerLimitDisplay){textWidthBuffer=smartLabel.getOriSize(upperLimitDisplay,true);if(textWidthBuffer.width>numDimention.width){maxText=upperLimitDisplay;maxTextSize=textWidthBuffer.width;numDimention=textWidthBuffer}textWidthBuffer=smartLabel.getOriSize(lowerLimitDisplay,true);if(textWidthBuffer.width>numDimention.width){maxText=lowerLimitDisplay;maxTextSize=textWidthBuffer.width;numDimention=textWidthBuffer}}}else{axisConfig.labels.drawLimitVal=false}numDimention=smartLabel.getOriSize(maxText);axisConfig.labelMaxW=numDimention.width;if(axisConfig.labelMaxW>maxLimit/2){axisConfig.labelMaxW=maxLimit/2}axisConfig.labelMaxH=numDimention.height;if(!axisConfig.placeValuesInside){ret.right+=axisConfig.labelMaxW+axisConfig.tickValueDistance;ret.left+=axisConfig.labelMaxW+axisConfig.tickValueDistance;ret.top+=axisConfig.labelMaxH+axisConfig.tickValueDistance;ret.bottom+=axisConfig.labelMaxH+axisConfig.tickValueDistance}else{axisConfig.labelPadding=-axisConfig.labelPadding}}else{axisConfig.labels.isDraw=false}return ret};_proto._parseLabel=function _parseLabel(){var axis=this,axisConfig=axis.config,chart=axis.getFromEnv("chart"),axisRange=axisConfig.axisRange,axisScale=axis.getScale(),smartLabel=chart.getFromEnv("smartLabel"),labelStore,labelConf,labels=axisConfig.labels,style=labels.style,axisPadding=axisConfig.labelPadding||0,radius=axisConfig.radius,gaugeOuterRadius=(0,_lib.pluckNumber)(axisConfig.gaugeOuterRadius,radius),gaugeInnerRadius=(0,_lib.pluckNumber)(axisConfig.gaugeInnerRadius,radius),centerX=axisConfig.centerX,centerY=axisConfig.centerY,placeValuesInside=axisConfig.placeValuesInside,axisValueMaxH=axisConfig.labelMaxH,axisValueMaxW=axisConfig.labelMaxW,i,tick,max=axisRange.max,min=axisRange.min,tempText,theta,text,increment,parsing,ticks=axisConfig.ticks,ticksLen=ticks.length,labelLineHeight,numberFormatterFn,numberFormatter=chart.getFromEnv("number-formatter"),axisAttrObj,getPos;if(style.lineHeight){labelLineHeight=style.lineHeight;if(labelLineHeight.indexOf("px")!==-1){labelLineHeight=labelLineHeight.replace("px","");labelLineHeight=parseFloat(labelLineHeight)}}smartLabel.useEllipsesOnOverflow(chart.config.useEllipsesWhenOverflow);smartLabel.setStyle({fontSize:style.fontSize,fontFamily:style.fontFamily,lineHeight:style.lineHeight,fontWeight:style.fontWeight});if(axisConfig.labels.isDraw){labelStore=axis.components.labels;increment=axisConfig.labels.step;parsing=function parsing(index){tick=ticks[index];theta=axisScale.getRangeValue(tick);if(!axisConfig.labels.drawNormalVal&&!(axisConfig.labels.drawLimitVal&&(tick===min||tick===max))){return}if(!axisConfig.labels.drawNormalVal&&!(tick===min||tick===max)){return}if(!axisConfig.labels.drawLimitVal&&(tick===min||tick===max)){return}if(axisConfig.showZeroPlaneValue===0&&axisConfig.showZeroPlane===0&&tick===0){return}numberFormatterFn=numberFormatter.scale;if(tick===min&&axisConfig.lowerLimitDisplay){tempText=smartLabel.getSmartText(axisConfig.lowerLimitDisplay,axisValueMaxW,axisValueMaxH);text=tempText.text}else if(tick===max&&axisConfig.upperLimitDisplay){tempText=smartLabel.getSmartText(axisConfig.upperLimitDisplay,axisValueMaxW,axisValueMaxH);text=tempText.text}else{text=numberFormatterFn.call(numberFormatter,(0,_lib.toPrecision)(tick,10))}if(placeValuesInside){getPos=(0,_polarUtil.polarToCartesian)(gaugeInnerRadius+axisPadding-axisConfig.polarPadding,theta)}else{getPos=(0,_polarUtil.polarToCartesian)(gaugeOuterRadius+axisPadding+axisConfig.polarPadding,theta)}getPos.x+=centerX;getPos.y+=centerY;axisAttrObj={fill:style.color,"line-height":labelLineHeight,text:text,x:getPos.x,y:getPos.y};if(getPos.x>centerX-10&&getPos.x<centerX+10&&getPos.y<centerY){axisAttrObj["text-anchor"]=POSITION_MIDDLE;axisAttrObj["text-valign"]=placeValuesInside?POSITION_TOP:POSITION_BOTTOM}else if(getPos.x>centerX-10&&getPos.x<centerX+10&&getPos.y<centerY){axisAttrObj["text-anchor"]=POSITION_MIDDLE;axisAttrObj["text-valign"]=placeValuesInside?POSITION_BOTTOM:POSITION_TOP}else if(getPos.x<centerX){axisAttrObj["text-anchor"]=placeValuesInside?POSITION_START:POSITION_END;axisAttrObj["text-valign"]="center"}else{axisAttrObj["text-anchor"]=placeValuesInside?POSITION_END:POSITION_START;axisAttrObj["text-valign"]="center"}labelConf=labelStore[index]=labelStore[index]||{config:{props:{label:{attr:{}}}}};labelConf.config.props.label.attr=Object.assign(labelConf.config.props.label.attr,axisAttrObj)};for(i=0;i<ticksLen;i+=increment){parsing(i)}if((ticksLen-1)%increment!==0){parsing(ticksLen-1)}}};_proto._drawLabel=function _drawLabel(){var axis=this,axisConfig=axis.config,chart=axis.getFromEnv("chart"),axisRange=axisConfig.axisRange,labels=axisConfig.labels,style=labels.style,i,tick,max=axisRange.max,min=axisRange.min,axisContainer=axisConfig.axisLabelContainerTop,textElement,animationManager=chart.getFromEnv("animationManager"),css={fontFamily:style.fontFamily,fontSize:style.fontSize,fontWeight:style.fontWeight,fontStyle:style.fontStyle,lineHeight:style.lineHeight},axisAttrObj,ticks=axisConfig.ticks,ticksLen=ticks.length,tickMap=[],ln,diff,increment,drawing,removingElement,textElementCheck;axisContainer.show();axisContainer.css(css);if(axisConfig.labels.isDraw){increment=axisConfig.labels.step;drawing=function drawing(index){tick=ticks[index];if(!axisConfig.labels.drawNormalVal&&!(axisConfig.labels.drawLimitVal&&(tick===min||tick===max))){return}if(!axisConfig.labels.drawNormalVal&&!(tick===min||tick===max)){return}if(!axisConfig.labels.drawLimitVal&&(tick===min||tick===max)){return}if(axisConfig.showZeroPlaneValue===0&&axisConfig.showZeroPlane===0&&tick===0){return}tickMap.push(tick);textElementCheck=axis.getGraphicalElement(""+tick+LABEL_ID);axisAttrObj=axis.components.labels[index].config.props.label.attr;textElement=animationManager.setAnimation({el:textElementCheck||"text",attr:axisAttrObj,container:axisContainer,component:axis,label:"text"});if(!textElementCheck){axis.addGraphicalElement(""+tick+LABEL_ID,textElement)}};for(i=0;i<ticksLen;i+=increment){drawing(i)}if((ticksLen-1)%increment!==0){drawing(ticksLen-1)}}diff=(0,_diff.default)(axisConfig.prevIntervalArrLabel,tickMap);for(tick=0,ln=diff.length;tick<ln;tick++){removingElement=axis.getGraphicalElement(""+diff[tick]+LABEL_ID);removingElement&&axis.removeGraphicalElement(removingElement)}axisConfig.prevIntervalArrLabel=tickMap};_proto._drawTick=function _drawTick(){var axis=this,axisConfig=axis.config,drawTick=axisConfig.drawTick,axisScale=axis.getScale(),thetaMajor,thetaMinor,drawTickMinor=axisConfig.drawTickMinor,chart=axis.getFromEnv("chart"),animationManager=chart.getFromEnv("animationManager"),radius=axisConfig.radius,centerX=axisConfig.centerX,centerY=axisConfig.centerY,gaugeOuterRadius=(0,_lib.pluckNumber)(axisConfig.gaugeOuterRadius,radius),gaugeInnerRadius=(0,_lib.pluckNumber)(axisConfig.gaugeInnerRadius,radius),lineElement,minorTickObj,majorTickObj,statPix,endPixMajor,endPixMinor,i,minorV,tickGroup,diff,tempObj,tickValue,ticks=axisConfig.ticks,minorTickValues=axisConfig.minorTicks,majorTickCheck,prevTickMap,minorTickCheck,removingElement,ln;tickGroup=axisConfig.axisAxisLineContainer;majorTickObj={stroke:axisConfig.majorTMColor,"stroke-width":axisConfig.majorTMThickness,"stroke-linecap":"round"};minorTickObj={stroke:axisConfig.minorTMColor,"stroke-width":axisConfig.minorTMThickness,"stroke-linecap":"round"};tickGroup.show();prevTickMap=axisConfig.prevTickMarks;axisConfig.prevTickMarks=[];if(axisConfig.lines.isDraw&&drawTick&&axisConfig.showTickMarks){axisConfig.prevTickMarks=ticks.slice();for(i=0;i<ticks.length;i++){tickValue=ticks[i];thetaMajor=axisScale.getRangeValue(tickValue);if(!axisConfig.placeTicksInside){statPix=(0,_polarUtil.polarToCartesian)(gaugeOuterRadius,thetaMajor);endPixMajor=(0,_polarUtil.polarToCartesian)(gaugeOuterRadius-axisConfig.majorTMHeight,thetaMajor)}else{statPix=(0,_polarUtil.polarToCartesian)(gaugeInnerRadius,thetaMajor);endPixMajor=(0,_polarUtil.polarToCartesian)(gaugeInnerRadius+axisConfig.majorTMHeight,thetaMajor)}statPix.x+=centerX;statPix.y+=centerY;endPixMajor.x+=centerX;endPixMajor.y+=centerY;majorTickObj.path="M"+statPix.x+" "+statPix.y+"L"+endPixMajor.x+" "+endPixMajor.y;tempObj=Object.assign({},majorTickObj);majorTickCheck=axis.getGraphicalElement(""+ticks[i]+TICK);lineElement=animationManager.setAnimation({el:majorTickCheck||"path",attr:tempObj,container:tickGroup,component:axis,label:"path"});if(!majorTickCheck){axis.addGraphicalElement(""+ticks[i]+TICK,lineElement)}}if(drawTickMinor){axisConfig.prevTickMarks=axisConfig.prevTickMarks.concat(minorTickValues);for(i=0;i<minorTickValues.length;i+=1){minorV=minorTickValues[i];thetaMinor=axisScale.getRangeValue(minorV);if(!axisConfig.placeTicksInside){statPix=(0,_polarUtil.polarToCartesian)(gaugeOuterRadius,thetaMinor);endPixMinor=(0,_polarUtil.polarToCartesian)(gaugeOuterRadius-axisConfig.minorTMHeight,thetaMinor)}else{statPix=(0,_polarUtil.polarToCartesian)(gaugeInnerRadius,thetaMinor);endPixMinor=(0,_polarUtil.polarToCartesian)(gaugeInnerRadius+axisConfig.minorTMHeight,thetaMinor)}statPix.x+=centerX;statPix.y+=centerY;endPixMinor.x+=centerX;endPixMinor.y+=centerY;minorTickObj.path="M"+statPix.x+" "+statPix.y+"L"+endPixMinor.x+" "+endPixMinor.y;tempObj=Object.assign({},minorTickObj);minorTickCheck=axis.getGraphicalElement(""+minorTickValues[i]+TICK);lineElement=animationManager.setAnimation({el:minorTickCheck||"path",attr:tempObj,container:tickGroup,component:axis,label:"path"});if(!minorTickCheck){axis.addGraphicalElement(""+minorTickValues[i]+TICK,lineElement)}}}}diff=(0,_diff.default)(prevTickMap,axisConfig.prevTickMarks);for(i=0,ln=diff.length;i<ln;i++){removingElement=axis.getGraphicalElement(""+diff[i]+TICK);removingElement&&axis.removeGraphicalElement(removingElement)}};_proto._drawTrendLine=function _drawTrendLine(){var _ref;var axis=this,axisConfig=axis.config,axisRange=axisConfig.axisRange,toolTipController=axis.getFromEnv("toolTipController"),max=axisRange.max,markerLabelOffset,axisScale=axis.getScale(),theta,min=axisRange.min,canvas=axisConfig.canvas,chart=axis.getFromEnv("chart"),chartConfig=chart.config,smartLabel=chart.getFromEnv("smartLabel"),colorM=chart.getFromEnv("color-manager"),animationManager=chart.getFromEnv("animationManager"),scaleFactor=axisConfig.scaleFactor,centerX=axisConfig.centerX||0,centerY=axisConfig.centerY||0,canvasWidth=canvas.canvasWidth||chartConfig.canvasWidth,style=axisConfig.trend.trendStyle,axisTrendContainerTop=axisConfig.axisTrendContainerTop,axisTrendContainerBottom=axisConfig.axisTrendContainerBottom,axisTrendLabelContainer=axisConfig.axisTrendLabelContainer,css={fontFamily:style.fontFamily,fontSize:style.fontSize,lineHeight:style.lineHeight,fontWeight:style.fontWeight,fontStyle:style.fontStyle},numberFormatter=chart.getFromEnv("number-formatter"),trendPoints=axisConfig.trendPoints,point=trendPoints&&trendPoints.point,deg2rad=math.PI/180,trendText={},i,totalPoints=(_ref=point&&point.length)!=null?_ref:0,trendElement,trendElemenCheck,trendLabelElementCheck,trendLabelElement,isTrendZone,axisDrawingAttrObj={},axisMarkerAttrObj={},axisTextAttrObj={},trendPointObj,startValue,endValue,overlappingArray,AttrList,sides,limitingValue,limitingNegValue,trendOuterRadius,trendInnerRadius,startPoints,startPoints1,startX,startY,startX1,startY1,trendEndAngle,trendStartAngle,textValue,cosTh,sinTh,trendTextWidth,textRadius,align,trendTextHeight,stHeight,trendMarkerElement,trendMarkerCheck,trendValues=[],idStart,diff,removingElement,removingElementLabel,removingElementMarker,ln;smartLabel.useEllipsesOnOverflow(chartConfig.useEllipsesWhenOverflow);smartLabel.setStyle(css);for(i=0;i<totalPoints;i+=1){trendPointObj=trendPoints.point[i];trendValues.push(trendPointObj.startvalue+"_"+trendPointObj.endvalue+"_"+i)}diff=(0,_diff.default)(axisConfig.prevIntervalArrTrendLine,trendValues);for(i=0,ln=diff.length;i<ln;i++){removingElement=axis.getGraphicalElement(""+diff[i]+TRENDLINE_ID);removingElementLabel=axis.getGraphicalElement(""+diff[i]+TRENDLABEL_ID);removingElementMarker=axis.getGraphicalElement(""+diff[i]+TRENDMARKER_ID);removingElement&&axis.removeGraphicalElement(removingElement);removingElementLabel&&axis.removeGraphicalElement(removingElementLabel);removingElementMarker&&axis.removeGraphicalElement(removingElementMarker)}axisConfig.prevIntervalArrTrendLine=trendValues.slice();for(var k=0;k<totalPoints;k++){var currentTrendPoint=trendPoints.point[k];for(var j=k+1;j<totalPoints;j++){var nextTrendPoint=trendPoints.point[j],currStartValue=(0,_lib.pluckNumber)(currentTrendPoint.startvalue,currentTrendPoint.value),currEndValue=(0,_lib.pluckNumber)(currentTrendPoint.endvalue,currStartValue),nextStartValue=(0,_lib.pluckNumber)(nextTrendPoint.startvalue,nextTrendPoint.value),nextEndValue=(0,_lib.pluckNumber)(nextTrendPoint.endvalue,nextStartValue),key=currStartValue+"_"+currEndValue;overlappingArray=overLappingPoints[key];if(currStartValue===nextStartValue&&currEndValue===nextEndValue){if(!overlappingArray){overLappingPoints[key]=[];overlappingArray=overLappingPoints[key]}this.addToOverlappingPoints(currentTrendPoint.displayvalue,key);this.addToOverlappingPoints(nextTrendPoint.displayvalue,key)}}}for(i=0;i<totalPoints;i+=1){var _trendPointObj;trendPointObj=trendPoints.point[i];markerLabelOffset=(0,_lib.pluckNumber)((_trendPointObj=trendPointObj)==null?void 0:_trendPointObj.markerlabeloffset,0);idStart=trendPointObj.startvalue+"_"+trendPointObj.endvalue+"_"+i;startValue=(0,_lib.pluckNumber)(trendPointObj.startvalue,trendPointObj.value);endValue=(0,_lib.pluckNumber)(trendPointObj.endvalue,startValue);theta=axisScale.getRangeValue(startValue);isTrendZone=startValue!==endValue;overlappingArray=overLappingPoints[startValue+"_"+endValue];if(startValue<=max&&startValue>=min&&endValue<=max&&endValue>=min){AttrList={startValue:startValue,endValue:endValue,tooltext:(0,_lib.getValidValue)((0,_lib.parseUnsafeString)(trendPointObj.markertooltext,false)),displayValue:(0,_lib.getValidValue)((0,_lib.parseUnsafeString)(trendPointObj.displayvalue),isTrendZone?BLANKSTRING:numberFormatter.scale(startValue)),showOnTop:(0,_lib.pluckNumber)(trendPointObj.showontop,axisConfig.ticksBelowGauge,axisConfig.ticksBelowGraph,1),color:(0,_lib.pluck)(trendPointObj.color,colorM.getColor("trendLightColor")),alpha:(0,_lib.pluckNumber)(trendPointObj.alpha,99),thickness:(0,_lib.pluckNumber)(trendPointObj.thickness,1),dashStyle:trendPointObj.dashed?(0,_lib.getDashStyle)(trendPointObj.dashlen||2,trendPointObj.dashgap||2):"",useMarker:(0,_lib.pluckNumber)(trendPointObj.usemarker,0),markerColor:(0,_lib.convertColor)((0,_lib.pluck)(trendPointObj.markercolor,trendPointObj.color,colorM.getColor("trendLightColor")),100),markerBorderColor:(0,_lib.convertColor)((0,_lib.pluck)(trendPointObj.markerbordercolor,trendPointObj.bordercolor,colorM.getColor("trendDarkColor")),100),markerRadius:(0,_lib.pluckNumber)((0,_lib.pluckNumber)(trendPointObj.markerradius)*scaleFactor,5),markerToolText:(0,_lib.getFirstValue)(trendPointObj.markertooltext),trendValueDistance:(0,_lib.pluckNumber)((0,_lib.pluckNumber)(trendPointObj.trendvaluedistance,axisConfig.trendValueDistance)*scaleFactor,axisConfig.tickValueDistance),isTrendZone:isTrendZone,valueInside:(0,_lib.pluckNumber)(trendPointObj.valueinside,axisConfig.placeValuesInside,0),showBorder:(0,_lib.pluckNumber)(trendPointObj.showborder,1),borderColor:(0,_lib.convertColor)((0,_lib.pluck)(trendPointObj.bordercolor,trendPointObj.color,colorM.getColor("trendDarkColor")),(0,_lib.pluckNumber)(trendPointObj.borderalpha,trendPointObj.alpha,100)),radius:(0,_lib.pluckNumber)((0,_lib.pluckNumber)(trendPointObj.radius)*scaleFactor),innerRadius:(0,_lib.pluckNumber)((0,_lib.pluckNumber)(trendPointObj.innerradius)*scaleFactor)};sides=3;limitingValue=Math.cos(89.99*deg2rad);limitingNegValue=-limitingValue;trendOuterRadius=(0,_lib.pluckNumber)(AttrList.radius,axisConfig.gaugeOuterRadius);trendInnerRadius=(0,_lib.pluckNumber)(AttrList.innerRadius,isTrendZone?Math.max(axisConfig.gaugeInnerRadius-15,0):axisConfig.gaugeInnerRadius);startPoints=(0,_polarUtil.polarToCartesian)(trendOuterRadius,theta);startPoints1=(0,_polarUtil.polarToCartesian)(trendInnerRadius,theta);startPoints.x+=centerX;startPoints.y+=centerY;startPoints1.x+=centerX;startPoints1.y+=centerY;startX=startPoints.x;startY=startPoints.y;startX1=startPoints1.x;startY1=startPoints1.y;trendEndAngle=axis.getAngle(endValue);trendStartAngle=axis.getAngle(startValue);if(isTrendZone){if(trendStartAngle>trendEndAngle){trendStartAngle+=trendEndAngle;trendEndAngle=trendStartAngle-trendEndAngle;trendStartAngle=trendStartAngle-trendEndAngle}axisDrawingAttrObj={fill:(0,_lib.convertColor)(AttrList.color,AttrList.alpha),"stroke-width":AttrList.showBorder?AttrList.thickness:0,stroke:AttrList.borderColor,"stroke-dasharray":AttrList.dashStyle,ringpath:[centerX,centerY,trendOuterRadius,trendInnerRadius,trendStartAngle,trendEndAngle]}}else{axisDrawingAttrObj={"stroke-width":AttrList.showBorder?AttrList.thickness:0,stroke:AttrList.borderColor,"stroke-linecap":"round","stroke-dasharray":AttrList.dashStyle,path:[M,startX,startY,L,startX1,startY1]}}if(AttrList.useMarker){axisMarkerAttrObj={fill:AttrList.markerColor,"stroke-width":1,stroke:AttrList.markerBorderColor,polypath:[sides,startX,startY,AttrList.markerRadius,(-trendStartAngle+Math.PI)/deg2rad,0]}}else{axisMarkerAttrObj={}}if(AttrList.displayValue!==BLANKSTRING){textValue=(AttrList.endValue+AttrList.startValue)/2;trendEndAngle=axis.getAngle(textValue);cosTh=Math.cos(trendEndAngle);sinTh=Math.sin(trendEndAngle);trendTextWidth=smartLabel.getOriSize(AttrList.displayValue).width;if(AttrList.valueInside){textRadius=trendInnerRadius-2-AttrList.trendValueDistance;align=cosTh>limitingValue?POSITION_END:cosTh<limitingNegValue?POSITION_START:POSITION_MIDDLE}else{textRadius=trendOuterRadius+2+AttrList.trendValueDistance;align=cosTh>limitingValue?POSITION_START:cosTh<limitingNegValue?POSITION_END:POSITION_MIDDLE}startX=centerX+textRadius*cosTh;startY=centerY+textRadius*sinTh;trendTextHeight=smartLabel.getOriSize(AttrList.displayValue).height;trendText=smartLabel.getSmartText(AttrList.displayValue,canvasWidth,trendTextHeight);startX=canvasWidth<startX+trendTextWidth?canvasWidth-trendTextWidth-GUTTER_PADDING:startX<trendTextWidth?trendTextWidth+GUTTER_PADDING:startX;if(trendTextWidth>canvasWidth){startX=canvasWidth/2}axisTextAttrObj={fill:(0,_lib.convertColor)(trendPointObj.color,AttrList.alpha)||style.color,text:trendText.text,"text-anchor":align,"vertical-align":POSITION_TOP,"text-bound":[style.backgroundColor,style.borderColor,style.borderThickness,style.borderPadding,style.borderRadius,style.borderDash],x:startX,y:startY};stHeight=trendText.height;if(cosTh>limitingValue||cosTh<limitingNegValue){startY+=-(stHeight/2)+stHeight*.4*sinTh*(AttrList.valueInside?-1:1)}else{if(AttrList.valueInside){startY+=-(sinTh<0?0:stHeight)}else{startY+=-(sinTh>0?0:stHeight)}}var _this$adjustTextPosit=this.adjustTextPositionToAvoidOverlap(AttrList,startY,Math.round((max+min)/2),startX,markerLabelOffset),adjustedStartY=_this$adjustTextPosit.adjustedStartY,adjustedStartX=_this$adjustTextPosit.adjustedStartX;axisTextAttrObj.y=adjustedStartY;axisTextAttrObj.x=adjustedStartX}else{axisTextAttrObj={text:BLANKSTRING}}trendElemenCheck=axis.getGraphicalElement(idStart+TRENDLINE_ID);trendLabelElementCheck=axis.getGraphicalElement(idStart+TRENDLABEL_ID);trendMarkerCheck=axis.getGraphicalElement(idStart+TRENDMARKER_ID);trendElement=isTrendZone?animationManager.setAnimation({el:trendElemenCheck||"ringpath",attr:axisDrawingAttrObj,container:axisTrendContainerBottom,component:axis,label:"ringpath"}):animationManager.setAnimation({el:trendElemenCheck||"path",attr:axisDrawingAttrObj,container:axisTrendContainerTop,component:axis,label:"path"});trendElement.show();trendElement.data("label",isTrendZone?"ringPath":"path");trendLabelElement=animationManager.setAnimation({el:trendLabelElementCheck||"text",attr:axisTextAttrObj,container:axisTrendLabelContainer,component:axis,label:"text"});trendLabelElement.css(css);trendLabelElement.show();trendMarkerElement=animationManager.setAnimation({el:trendMarkerCheck||"polypath",attr:axisMarkerAttrObj,container:axisTrendContainerTop,component:axis,label:"polypath"});trendMarkerElement.show();if(axisConfig.showTooltip){if(trendText.oriText&&!overLappingPoints[startValue+"_"+endValue]){toolTipController.enableToolTip(trendLabelElement,trendText.oriText+": "+startValue+" "+(endValue===startValue?"":"- "+endValue))}else{toolTipController.disableToolTip(trendLabelElement)}if(AttrList.markerToolText){toolTipController.enableToolTip(trendMarkerElement,AttrList.markerToolText)}else{toolTipController.disableToolTip(trendMarkerElement)}if(Array.isArray(overlappingArray)&&overlappingArray.length>1&&overlappingArray.includes(trendPointObj.displayvalue)){var combinedToolTipText=this.getCombinedTooltip(overlappingArray,startValue,endValue);toolTipController.enableToolTip(trendLabelElement,combinedToolTipText)}}if(!trendElemenCheck){axis.addGraphicalElement(idStart+TRENDLINE_ID,trendElement)}if(!trendElemenCheck){axis.addGraphicalElement(idStart+TRENDLABEL_ID,trendLabelElement)}if(!trendMarkerCheck){axis.addGraphicalElement(idStart+TRENDMARKER_ID,trendMarkerElement)}}}};_proto.adjustTextPositionToAvoidOverlap=function adjustTextPositionToAvoidOverlap(currentAttrList,currentStartY,mid,currentStartX,markerLabelOffset){var minimumSpaceBetween=11,startValue=currentAttrList.startValue,endValue=currentAttrList.endValue,isLessThanMid=startValue<mid||endValue<mid?-1:1,labelOffset=Number(markerLabelOffset),xOffSet=(0,_lib.pluckNumber)(labelOffset,0),adjustedStartX=currentStartX+xOffSet*isLessThanMid,shouldSpaceBetween=14;this.overLapped=false;this.startY=currentStartY;for(var j=0;j<trendTextPositions.length;j+=1){var adjacentStartY=trendTextPositions[j],isOverlapping=Math.abs(this.startY-adjacentStartY)<minimumSpaceBetween;if(isOverlapping){this.startY+=shouldSpaceBetween*isLessThanMid;this.overLapped=true}}trendTextPositions.push(this.startY);return{isOverlapping:this.overLapped,adjustedStartY:this.startY,adjustedStartX:adjustedStartX}};_proto.getCombinedTooltip=function getCombinedTooltip(displayValues,startValue,endValue){var _displayValues$length;this.tipString="";var i=(_displayValues$length=displayValues.length)!=null?_displayValues$length:0;while(i-- >0){var stringToAdd=displayValues[i]+": "+startValue+" "+(endValue===startValue?"":"- "+endValue)+" ::";this.tipString=stringToAdd+this.tipString}return this.tipString.split("::").filter((function(t){return t!==""})).join(",<br/>")};_proto.addToOverlappingPoints=function addToOverlappingPoints(value,key){this.overlappingArray=overLappingPoints[key];if(this.overlappingArray&&!this.overlappingArray.includes(value)){this.overlappingArray.push(value)}};return PolarGaugeAxis}(_gaugePolarNumeric.default);var _default=exports.default=PolarGaugeAxis;