UNPKG

@fusioncharts/core

Version:

JavaScript Data Visualisation Library

1 lines 66.2 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.minimumEnquiry=exports.getCrispPath=exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _axis=_interopRequireDefault(require("./axis"));var _lib=require("../lib");var _cartesianAxis=_interopRequireDefault(require("./cartesian-axis.animation"));var _diff=_interopRequireDefault(require("@fusioncharts/utils/src/scale-utils/array/diff"));var _differenceWith=_interopRequireDefault(require("ramda/src/differenceWith"));var _dependencyManager=require("../dependency-manager");var _commonApi=require("./common-api");var CRISP="crisp",BUTT="butt",EVENTARGS="eventArgs",TREND_ID="_trend",TICK_ID="_tick",LABEL_ID="_label",ROTATE_STR="rotate",AXIS_LINE="axisLine",WATERFALL_2D="WaterFall2D",getCrispPath=exports.getCrispPath=function getCrispPath(path,width){var isCrisped=false,oddWidth=width%2,value,roundValue;if(path[1]===path[4]){value=path[1];roundValue=Math.round(value);path[1]=path[4]=oddWidth?roundValue>value?roundValue-.5:roundValue+.5:roundValue;isCrisped=true}if(path[2]===path[5]){value=path[2];roundValue=Math.round(value);path[2]=path[5]=oddWidth?roundValue>value?roundValue-.5:roundValue+.5:roundValue;isCrisped=true}return{path:path,isCrisped:isCrisped}},isVisible=function isVisible(visibleRange){return function(min,max){return!!(visibleRange.minValue<=min&&visibleRange.maxValue>=min||visibleRange.minValue<=max&&visibleRange.maxValue>=max)}},isInBetween=function isInBetween(visibleRange){return function(val){return!!(visibleRange.minValue<=val&&visibleRange.maxValue>=val)}},queryOptions={wrtVisible:true},minimumEnquiry=exports.minimumEnquiry=function minimumEnquiry(category){var i=0,len=category.length;for(;i<len;i++){if(category[i].label||category[i].oriLabel){return i}}};function getAxisNamePaddingOffset(axisConfig,chartConfig){var axisNamePaddingOffset=0;if(axisConfig.relativeAxis&&axisConfig.relativeAxis.config&&axisConfig.relativeAxis.config.axisNamePadding){axisNamePaddingOffset=Math.max(axisConfig.relativeAxis.config.axisNamePadding,axisNamePaddingOffset)}if(axisConfig.isOpposit&&chartConfig.canvasMarginRight){axisNamePaddingOffset=Math.max(axisNamePaddingOffset,chartConfig.canvasMarginRight-chartConfig.marginLeft-axisConfig.nameMaxW)}if(!axisConfig.isOpposit&&chartConfig.canvasMarginLeft){axisNamePaddingOffset=Math.max(axisNamePaddingOffset,chartConfig.canvasMarginLeft-chartConfig.marginRight-axisConfig.nameMaxW)}return axisNamePaddingOffset}(0,_dependencyManager.addDep)({name:"cartesianAxisAnimation",type:"animationRule",extension:_cartesianAxis.default});var Cartesian=function(_Axis){function Cartesian(){var _this;_this=_Axis.call(this)||this;_this.config.referenceInfo=[];_this.config.prevTicks=[];_this.config.prevIntervalArr=[];_this.config.prevTrendLabels=[];_this.config.prevCategoryIntervalArr=[];return _this}(0,_inheritsLoose2.default)(Cartesian,_Axis);var _proto=Cartesian.prototype;_proto.placeAxis=function placeAxis(maxLimit){var axis=this,scale=axis.getScale(),chart=axis.getFromEnv("chart"),axisConfig=axis.config,isVertical=axisConfig.isVertical,isReverse=axisConfig.isReverse,chartConfig=chart.config,dataLabelStyle=chartConfig.dataLabelStyle,nameStyle=axisConfig.name.style,trendStyle=axisConfig.trend.trendStyle,labelStyle=axisConfig.labels.style,parsedTrendLabels=axisConfig.parsedTrendLabels||[],parsedVLineInfo=axisConfig.parsedVlineInfo||[];nameStyle.fontSize=this.computeFontSize(nameStyle.fontSizeWithUnit);nameStyle.lineHeight=(0,_lib.setLineHeight)(nameStyle);trendStyle.fontSize=this.computeFontSize(trendStyle.fontSizeWithUnit);trendStyle.lineHeight=(0,_lib.setLineHeight)(trendStyle);labelStyle.fontSize=this.computeFontSize(labelStyle.fontSizeWithUnit);labelStyle.lineHeight=(0,_lib.setLineHeight)(labelStyle);dataLabelStyle.fontSize=this.computeFontSize(dataLabelStyle.fontSizeWithUnit);(0,_lib.setLineHeight)(dataLabelStyle);parsedTrendLabels.forEach((function(trendLabel){trendLabel.css.fontSize=trendStyle.fontSize;trendLabel.css.lineHeight=trendStyle.lineHeight}));parsedVLineInfo.forEach((function(vLine){if(vLine.text){vLine.text.css.fontSize=chartConfig.style.inCanfontSize;vLine.text.css.lineHeight=chartConfig.style.inCanLineHeight}}));if(isVertical){isReverse?scale.setRange([chartConfig.canvasBottom,chartConfig.canvasTop]):scale.setRange([chartConfig.canvasTop,chartConfig.canvasBottom]);return axis._placeVerticalAxis(maxLimit)}isReverse?scale.setRange([chartConfig.canvasRight,chartConfig.canvasLeft]):scale.setRange([chartConfig.canvasLeft,chartConfig.canvasRight]);return axis._placeHorizontalAxis(maxLimit)};_proto._placeVerticalAxis=function _placeVerticalAxis(_maxWidth){var axis=this,maxWidth=_maxWidth,axisConfig=axis.config,chart=axis.getFromEnv("chart"),chartConfig=chart.config,smartLabel=chart.getFromEnv("smartLabel"),axisRange=axisConfig.axisRange,minLabelWidthPercent=axisConfig.minLabelWidthPercent,axisNameData=axisConfig.name,isOpposit=axisConfig.isOpposit,numberFormatter=axis.getFromEnv("number-formatter"),canvasHeight=chartConfig.canvasHeight,axisValuePadding=axisConfig.labelPadding=(0,_lib.pluckNumber)(axisConfig.rawAttr.axisValuePadding,4),axisNamePadding=(0,_lib.pluckNumber)(axisConfig.rawAttr.axisNamePadding,5),useEllipsesWhenOverflow=axisConfig.useEllipsesWhenOverflow,nameStyle=axisConfig.name.style,trendStyle=axisConfig.trend.trendStyle,axisName=axisConfig.axisName,trendlines=axisConfig.trendLines,drawLabelsOpposit=axisConfig.drawLabelsOpposit,drawAxisNameOpposit=axisConfig.drawAxisNameOpposit,j,jLen,axisLabelWidth=0,counter=0,trendLabelConfig,labelWidth=0,nameWidth=0,trendLeftWidth=0,trendRightWidth=0,retObj={left:0,right:0},maxLeftTrendValue=_lib.BLANKSTRING,maxRightTrendValue=_lib.BLANKSTRING,reserveNameHeight=0,numberFormatterFn,axisSmartName,axisSmartTrendValue,trendTextFromValue,i,minLabelWidth=-1,max,min,text,dimention,iLim,trendObj,valueOnRight,axisLineThickness,startTValue,endTValue;if(minLabelWidthPercent){minLabelWidth=minLabelWidthPercent/100*chartConfig.width}axisConfig.oriCanvasHeight=canvasHeight;if(axisValuePadding<0){axisConfig.labelPadding=2}if(axisConfig.drawTick&&axisConfig.tickLength){axisLineThickness=axisConfig.axisLineThickness+axisConfig.tickLength}else{axisLineThickness=axisConfig.axisLineThickness}if(axisConfig.showAxisLine){axisConfig.labelPadding=(0,_lib.pluckNumber)(axisValuePadding,2)+axisLineThickness;if(axisConfig.labelPadding<0){axisConfig.labelPadding=(axisConfig.axisLineThickness<0?0:axisLineThickness)+2}maxWidth-=axisConfig.axisLineThickness}else{axisConfig.labelPadding=(0,_lib.pluckNumber)(axisValuePadding,2);if(axisConfig.labelPadding<0){axisConfig.labelPadding=2}}max=axisRange.max;min=axisRange.min;axisConfig.name.rotation=0;axisConfig.labels.step=axisConfig.labelStep;axisConfig.labels.isDraw=1;axisConfig.labels.drawNormalVal=axisConfig.showDivLineValues;axisConfig.labels.drawLimitVal=axisConfig.showLimits;reserveNameHeight=nameStyle.lineHeight;reserveNameHeight=Number(reserveNameHeight.replace(/px/i,""));if(axisName&&reserveNameHeight<maxWidth){maxWidth-=reserveNameHeight}if(axisConfig.showLimits!==1&&axisConfig.showDivLineValues!==1){axisConfig.labels.isDraw=0}dimention=axisConfig.drawLabels?axis._getVMaxLabelDimention(maxWidth-axisConfig.labelPadding):{width:0,height:0};if(dimention.width+axisConfig.labelPadding>maxWidth&&!axisConfig.tickValues||dimention.width===0){axisConfig.labels.isDraw=0}if(axisConfig.labels.isDraw){axisConfig.labelMaxW=dimention.width>minLabelWidth?dimention.width:minLabelWidth;axisConfig.labelMaxH=dimention.height;axisLabelWidth=axisConfig.labelMaxW+axisConfig.labelPadding;labelWidth=axisLabelWidth}if(axisConfig.drawTrendLines&&axisConfig.drawTrendLabels&&trendlines&&trendlines.length){if(axisConfig.isPercent){numberFormatterFn=numberFormatter.percentValue}else if(axisConfig.isVertical){numberFormatterFn=numberFormatter.yAxis}else{numberFormatterFn=numberFormatter.xAxis}smartLabel.useEllipsesOnOverflow(chartConfig.useEllipsesWhenOverflow);smartLabel.setStyle({fontSize:trendStyle.fontSize,fontFamily:trendStyle.fontFamily,lineHeight:trendStyle.lineHeight,fontWeight:trendStyle.fontWeight});for(j=0,jLen=trendlines.length;j<jLen;j+=1){for(i=0,iLim=trendlines[j].line&&trendlines[j].line.length;i<iLim;i+=1){trendObj=trendlines[j].line[i];startTValue=numberFormatter.getCleanValue((0,_lib.pluck)(trendObj.startvalue,trendObj.value,0));endTValue=(0,_lib.pluckNumber)(trendObj.endvalue,startTValue);if(startTValue<=max&&startTValue>=min&&endTValue<=max&&endTValue>=min){valueOnRight=(0,_lib.pluckNumber)(trendObj.valueonright,isOpposit?1:0);trendTextFromValue=valueOnRight===1?trendObj.endvalue||trendObj.startvalue:trendObj.startvalue||trendObj.endvalue;text=(0,_lib.parseUnsafeString)(trendObj.origText||trendObj.displayvalue||trendTextFromValue||"");if(text===trendTextFromValue){text=""+numberFormatterFn.call(numberFormatter,text)}if(valueOnRight){if(text.length>maxRightTrendValue.length){maxRightTrendValue=text}}else{if(text.length>maxLeftTrendValue.length){maxLeftTrendValue=text}}}}}dimention=smartLabel.getOriSize(maxRightTrendValue);trendRightWidth=dimention.width?dimention.width+axisConfig.labelPadding:0;dimention=smartLabel.getOriSize(maxLeftTrendValue);trendLeftWidth=dimention.width?dimention.width+axisConfig.labelPadding:0;if(isOpposit){if(trendRightWidth>labelWidth&&trendRightWidth>maxWidth){trendRightWidth=maxWidth}labelWidth=Math.max(labelWidth,trendRightWidth+axisConfig.labelPadding);if(trendLeftWidth>maxWidth-labelWidth){trendLeftWidth=Math.min(trendLeftWidth,maxWidth-labelWidth)}}else{if(trendLeftWidth>labelWidth&&trendLeftWidth>maxWidth){trendLeftWidth=maxWidth}labelWidth=Math.max(labelWidth,trendLeftWidth+axisConfig.labelPadding);if(trendRightWidth>maxWidth-labelWidth){trendRightWidth=Math.min(trendRightWidth,maxWidth-labelWidth)}}for(j=0,jLen=trendlines.length;j<jLen;j+=1){for(i=0,iLim=trendlines[j].line&&trendlines[j].line.length;i<iLim;i+=1){trendObj=trendlines[j].line[i];startTValue=numberFormatter.getCleanValue((0,_lib.pluck)(trendObj.startvalue,trendObj.value,0));endTValue=(0,_lib.pluckNumber)(trendObj.endvalue,startTValue);if(Number(trendObj.valueonright)===1){text=trendObj.origText||trendObj.displayvalue||""+endTValue||""}else{text=trendObj.origText||trendObj.displayvalue||""+startTValue||""}text=(0,_lib.parseUnsafeString)(""+text);if(text===trendObj.endvalue||text===trendObj.startvalue){text=""+numberFormatterFn.call(numberFormatter,text)}trendObj.origText=text;valueOnRight=(0,_lib.pluckNumber)(trendObj.valueonright,isOpposit?1:0);if(valueOnRight){axisSmartTrendValue=smartLabel.getSmartText(text,trendRightWidth,chart.config.canvasHeight,useEllipsesWhenOverflow)}else{axisSmartTrendValue=smartLabel.getSmartText(text,trendLeftWidth,chart.config.canvasHeight,useEllipsesWhenOverflow)}trendLabelConfig=axisConfig.parsedTrendLabels[counter++];if(trendLabelConfig){trendLabelConfig.attr.text=trendObj.displayvalue=axisSmartTrendValue.text}if(axisSmartTrendValue.tooltext){trendObj.valueToolText=axisSmartTrendValue.tooltext;trendLabelConfig&&(trendLabelConfig.valueToolText=trendObj.valueToolText)}else{delete trendObj.valueToolText;trendLabelConfig&&delete trendLabelConfig.valueToolText}}}}maxWidth+=reserveNameHeight;if(!axisConfig.drawAxisName||maxWidth-labelWidth-trendRightWidth<=0||axisName===""){axisNameData.isDraw=false;axisNameData.value=_lib.BLANKSTRING}else{smartLabel.setStyle({fontSize:nameStyle.fontSize,fontFamily:nameStyle.fontFamily,lineHeight:nameStyle.lineHeight,fontWeight:nameStyle.fontWeight});axisNameData.isDraw=true;if(axisConfig.rotateAxisName){axisConfig.name.rotation=isOpposit?90:270;axisSmartName=smartLabel.getSmartText(axisName,canvasHeight,maxWidth-labelWidth-trendRightWidth);axisNameData.value=axisName;axisConfig.nameMaxW=Math.min(axisSmartName.height);nameWidth=axisConfig.nameMaxW+axisNamePadding}else{axisSmartName=smartLabel.getSmartText(axisName,maxWidth-labelWidth-trendRightWidth,canvasHeight);axisNameData.value=axisName;axisConfig.nameMaxW=Math.min(axisSmartName.width,maxWidth-labelWidth);axisConfig.nameMaxH=axisSmartName.height;if(axisConfig.axisNameWidth>=0){axisConfig.nameMaxW=Math.min(axisConfig.nameMaxW,axisConfig.axisNameWidth)}nameWidth=axisConfig.nameMaxW+axisNamePadding}}if(isOpposit){if(drawLabelsOpposit){retObj.left+=Math.max(axisLabelWidth,trendLeftWidth);retObj.right+=trendRightWidth}else{retObj.left+=trendLeftWidth;retObj.right+=Math.max(axisLabelWidth,trendRightWidth)}if(drawAxisNameOpposit){axisConfig.axisNamePadding=retObj.left+axisNamePadding;retObj.left+=nameWidth}else{axisConfig.axisNamePadding=retObj.right+axisNamePadding;retObj.right+=nameWidth}}else{if(drawLabelsOpposit){retObj.left+=trendLeftWidth;retObj.right+=Math.max(axisLabelWidth,trendRightWidth)}else{retObj.left+=Math.max(axisLabelWidth,trendLeftWidth);retObj.right+=trendRightWidth}if(drawAxisNameOpposit){axisConfig.axisNamePadding=retObj.right+axisNamePadding;retObj.right+=nameWidth}else{axisConfig.axisNamePadding=retObj.left+axisNamePadding;retObj.left+=nameWidth}}if(axisNameData.isDraw&&axisConfig.axisNamePadding+axisConfig.nameMaxW>maxWidth){axisConfig.axisNamePadding=maxWidth-axisConfig.nameMaxW;nameWidth=axisConfig.nameMaxW+axisConfig.axisNamePadding-labelWidth}return retObj};_proto._placeHorizontalAxis=function _placeHorizontalAxis(_maxHeight){var axis=this,maxHeight=_maxHeight,axisConfig=axis.config,chart=axis.getFromEnv("chart"),chartConfig=chart.config,smartLabel=chart.getFromEnv("smartLabel"),axisRange=axisConfig.axisRange,axisNameData=axisConfig.name,isOpposit=axisConfig.isOpposit,numberFormatter=chart.getFromEnv("number-formatter"),drawLabelsOpposit=axisConfig.drawLabelsOpposit,drawAxisNameOpposit=axisConfig.drawAxisNameOpposit,axisLabelHeight=0,canvasWidth=chartConfig.canvasWidth,axisValuePadding=axisConfig.labelPadding=(0,_lib.pluckNumber)(axisConfig.rawAttr.axisValuePadding,4),axisNamePadding=(0,_lib.pluckNumber)(axisConfig.rawAttr.axisNamePadding,5),useEllipsesWhenOverflow=axisConfig.useEllipsesWhenOverflow,nameStyle=axisConfig.name.style,trendStyle=axisConfig.trend.trendStyle,axisName=axisConfig.axisName,vtrendlines=axisConfig.vTrendLines,valueOnRight,trendTextFromValue,j,jLen,labelHeight=0,counter=0,trendLabelConfig,nameHeight=0,retObj={top:0,bottom:0},trendMaxHeight=0,reserveNameHeight=0,axisSmartName,i,max,min,text,iLim,heightLeft,trendObj,axisSmartTrendValue,trendHeight,dimention,numberFormatterFn,axisLineThickness,startTValue,endTValue;if(axisValuePadding<0){axisConfig.labelPadding=2}if(axisConfig.drawTick&&axisConfig.tickLength){axisLineThickness=axisConfig.axisLineThickness+axisConfig.tickLength}else{axisLineThickness=axisConfig.axisLineThickness}if(axisConfig.showAxisLine){axisConfig.labelPadding=(0,_lib.pluckNumber)(axisValuePadding,2)+axisLineThickness;if(axisConfig.labelPadding<0){axisConfig.labelPadding=(axisConfig.axisLineThickness<0?0:axisLineThickness)+2}maxHeight-=axisConfig.axisLineThickness}else{axisConfig.labelPadding=(0,_lib.pluckNumber)(axisValuePadding,2);if(axisConfig.labelPadding<0){axisConfig.labelPadding=2}}max=axisRange.max;min=axisRange.min;axisConfig.labels.rotation=0;axisConfig.labels.step=axisConfig.labelStep;axisConfig.labels.isDraw=1;axisConfig.labels.drawNormalVal=axisConfig.showDivLineValues;axisConfig.labels.drawLimitVal=axisConfig.showLimits;reserveNameHeight=nameStyle.lineHeight;reserveNameHeight=Number(reserveNameHeight.replace(/px/i,""));if(axisName&&reserveNameHeight<maxHeight){maxHeight-=reserveNameHeight}if(axisConfig.rotateLabels&&axisConfig.labelDisplay!=="stagger"&&axisConfig.labelDisplay!=="none"){axisConfig.labelDisplay=ROTATE_STR}if(axisConfig.showLimits!==1&&axisConfig.showDivLineValues!==1){axisConfig.labels.isDraw=0}dimention=axisConfig.drawLabels?axis._getHMaxLabelDimention(maxHeight-axisConfig.labelPadding):{width:0,height:0};if(axisConfig.labels.rotation){if(dimention.width+axisConfig.labelPadding>maxHeight&&!axisConfig.tickValues){axisConfig.labels.isDraw=0}}else{if(dimention.height+axisConfig.labelPadding>maxHeight&&!axisConfig.tickValues){axisConfig.labels.isDraw=0}}if(axisConfig.labels.isDraw){if(axisConfig.labels.rotation){axisConfig.labelMaxW=dimention.height;axisConfig.labelMaxH=dimention.width;axisLabelHeight=dimention.width+axisConfig.labelPadding}else{axisConfig.labelMaxW=dimention.width;axisConfig.labelMaxH=dimention.height;axisLabelHeight=dimention.height+axisConfig.labelPadding}labelHeight=axisLabelHeight}labelHeight=Math.max(labelHeight,axisConfig.labelPadding);heightLeft=labelHeight<=maxHeight?maxHeight-labelHeight:maxHeight;if(axisConfig.drawTrendLines&&axisConfig.drawTrendLabels&&vtrendlines&&axisConfig.isActive){if(axisConfig.isPercent){numberFormatterFn=axis.getFromEnv("number-formatter").percentValue}else if(axisConfig.isVertical){numberFormatterFn=axis.getFromEnv("number-formatter").yAxis}else{numberFormatterFn=axis.getFromEnv("number-formatter").xAxis}smartLabel.useEllipsesOnOverflow(chartConfig.useEllipsesWhenOverflow);smartLabel.setStyle({fontSize:trendStyle.fontSize,fontFamily:trendStyle.fontFamily,lineHeight:trendStyle.lineHeight,fontWeight:trendStyle.fontWeight});for(j=0,jLen=vtrendlines.length;j<jLen;j+=1){for(i=0,iLim=vtrendlines[j].line&&vtrendlines[j].line.length;i<iLim;i+=1){trendObj=vtrendlines[j].line[i];startTValue=numberFormatter.getCleanValue((0,_lib.pluck)(trendObj.startvalue,trendObj.value,0));endTValue=(0,_lib.pluckNumber)(trendObj.endvalue,startTValue);if(startTValue<=max&&startTValue>=min&&endTValue<=max&&endTValue>=min){valueOnRight=(0,_lib.pluckNumber)(trendObj.valueonright,0);trendTextFromValue=valueOnRight===1?trendObj.endvalue||trendObj.startvalue:trendObj.startvalue||trendObj.endvalue;text=(0,_lib.parseUnsafeString)(trendObj.origText||trendObj.displayvalue||trendTextFromValue||"");if(text===trendTextFromValue){text=""+numberFormatterFn.call(chart.getFromEnv("number-formatter"),text)}trendObj.origText=text;axisSmartTrendValue=smartLabel.getSmartText(text,chart.canvasWidth,trendStyle.lineHeight,useEllipsesWhenOverflow);trendHeight=axisSmartTrendValue.height+2;if(heightLeft-trendHeight<0){trendObj.displayvalue=_lib.BLANKSTRING}else{trendLabelConfig=axisConfig.parsedTrendLabels[counter++];if(trendLabelConfig){trendLabelConfig.attr.text=trendObj.displayvalue=axisSmartTrendValue.text}trendMaxHeight=trendMaxHeight<axisSmartTrendValue.height?axisSmartTrendValue.height:trendMaxHeight}if(axisSmartTrendValue.tooltext){trendObj.valueToolText=axisSmartTrendValue.tooltext;trendLabelConfig&&(trendLabelConfig.valueToolText=trendObj.valueToolText)}else{delete trendObj.valueToolText;trendLabelConfig&&delete trendLabelConfig.valueToolText}}}}}heightLeft-=trendMaxHeight;labelHeight+=isOpposit?0:trendMaxHeight;heightLeft+=reserveNameHeight;maxHeight+=reserveNameHeight;if(!axisConfig.drawAxisName||heightLeft<=0||axisName===""){axisNameData.isDraw=false;axisNameData.value=_lib.BLANKSTRING}else{smartLabel.setStyle({fontSize:nameStyle.fontSize,fontFamily:nameStyle.fontFamily,lineHeight:nameStyle.lineHeight,fontWeight:nameStyle.fontWeight});axisNameData.isDraw=true;axisSmartName=smartLabel.getSmartText(axisName,canvasWidth,heightLeft);axisNameData.value=axisName;axisConfig.nameMaxW=canvasWidth;axisConfig.nameMaxH=axisSmartName.height;nameHeight=axisSmartName.height+axisNamePadding;axisConfig.axisNamePadding=axisNamePadding+labelHeight;if(axisConfig.axisNamePadding+axisSmartName.height>maxHeight){axisConfig.axisNamePadding=maxHeight-axisSmartName.height;nameHeight=axisSmartName.height+axisConfig.axisNamePadding-labelHeight}}if(isOpposit){if(drawLabelsOpposit){retObj.bottom+=axisLabelHeight+trendMaxHeight}else{retObj.top+=axisLabelHeight;retObj.bottom+=trendMaxHeight}axisConfig.trendBottomPadding=retObj.bottom-trendMaxHeight+2;if(drawAxisNameOpposit){retObj.bottom+=nameHeight}else{retObj.top+=nameHeight}}else{if(drawLabelsOpposit){retObj.top+=axisLabelHeight;retObj.bottom+=trendMaxHeight}else{retObj.bottom+=axisLabelHeight+trendMaxHeight}axisConfig.trendBottomPadding=retObj.bottom-trendMaxHeight+2;if(drawAxisNameOpposit){retObj.top+=nameHeight}else{retObj.bottom+=nameHeight}}return retObj};_proto._parseCategoryPlotLine=function _parseCategoryPlotLine(){var axis=this,axisConfig=axis.config,axisRange=axisConfig.axisRange,tickValue=axisConfig.tickValues.tickValue,plotLineColor=(0,_lib.convertColor)(axisConfig.divLineColor,axisConfig.divLineAlpha),plotLineWidth=axisConfig.divLineThickness,plotLineDashStyle=axisConfig.divLineIsDashed?(0,_lib.getDashStyle)(axisConfig.divLineDashLen,axisConfig.divLineDashGap,plotLineWidth):_lib.DASH_DEF,axisAttrObj,i,willDraw=isInBetween(axis.getVisibleConfig()),value,ticks=axisConfig._allTicks,len=ticks.length;axisAttrObj={stroke:plotLineColor,"stroke-width":plotLineWidth,"stroke-dasharray":plotLineDashStyle};if(tickValue[0]&&(tickValue[0].x!==_lib.UNDEF||tickValue[0].y!==_lib.UNDEF)){return}if(axisConfig.lines.isDraw&&axisConfig.categoryNumDivLines){for(i=0;i<len;++i){value=ticks[i];if(!willDraw(value)){continue}if(value===axisRange.min||value===axisRange.max){continue}axis.setReferenceInfo({from:value,type:"line",layer:1,attr:axisAttrObj})}}};_proto._drawComponents=function _drawComponents(){var axis=this,axisConfig=axis.config;axisConfig.drawAxisName&&axis._drawAxisName();axisConfig.drawAxisLine&&axis._drawAxisLine();if(!axisConfig.tickValues){axisConfig.drawLabels&&axis._drawLabel()}else{axisConfig.drawLabels&&axis._drawCategory()}axisConfig.drawTrendLines&&axis.drawTrendLabel()};_proto.drawTrendLabel=function drawTrendLabel(){var axis=this,axisConfig=axis.config,trendLabelConfigs=axisConfig.parsedTrendLabels,animationManager=axis.getFromEnv("animationManager"),toolTipController=this.getFromEnv("toolTipController"),container=axisConfig.axisTrendLabelContainer,isOpposite=axisConfig.isOpposit,axisPadding=axisConfig.labelPadding,vtrendlines=axisConfig.vTrendLines,trendlines=axisConfig.trendLines,axisDimension=axisConfig.axisDimention,visibleDomain=axis.getVisibleConfig(),visibleMin=visibleDomain.minValue,visibleMax=visibleDomain.maxValue,valueOnRight,trendLabelConfig,trendLabelElement,fixedTrendLabelPos,fixedTrendLabelPosRight,isTrendZone,startValue,midValue,endValue,_isVisible=true,startValuePixel,endValuePixel,removingElement,diff,isEndValDefined,i,ii;for(i=0,ii=trendLabelConfigs.length;i<ii;i++){trendLabelConfigs[i].id=i+TREND_ID}if(vtrendlines){fixedTrendLabelPos=isOpposite?axisDimension.opposite+(axisConfig.trendBottomPadding||0):axisDimension.y+(axisConfig.trendBottomPadding||0)}else{fixedTrendLabelPos=isOpposite?axisDimension.opposite-(axisPadding||0):axisDimension.x-(axisPadding||0);fixedTrendLabelPosRight=isOpposite?axisDimension.x+(axisPadding||0):axisDimension.opposite+(axisPadding||0)}diff=(0,_differenceWith.default)((function(prev,now){return prev.attr.text===now.attr.text}),axisConfig.prevTrendLabels,trendLabelConfigs);for(i=0,ii=diff.length;i<ii;i++){removingElement=axis.getGraphicalElement(diff[i].id);if(removingElement){axis.removeGraphicalElement(removingElement)}}axisConfig.prevTrendLabels=(0,_lib.extend2)([],trendLabelConfigs);if(!axisConfig.drawTrendLabels){for(i=0,ii=trendLabelConfigs.length;i<ii;i++){removingElement=axis.getGraphicalElement(trendLabelConfigs[i].id);if(removingElement){axis.removeGraphicalElement(removingElement)}}return}for(i=0,ii=trendLabelConfigs.length;i<ii;i++){trendLabelConfig=trendLabelConfigs[i];trendLabelElement=axis.getGraphicalElement(i+TREND_ID);startValue=+trendLabelConfig.from;endValue=+trendLabelConfig.to;_isVisible=true;isEndValDefined=!isNaN(endValue);if(isEndValDefined){midValue=startValue+(endValue-startValue)/2;if(visibleMin>midValue||visibleMax<midValue)_isVisible=false}else{if(visibleMin>startValue||visibleMax<startValue)_isVisible=false}if(!_isVisible){trendLabelElement&&axis.removeGraphicalElement(trendLabelElement)}else{if(vtrendlines){startValuePixel=axis.getPixel(startValue,queryOptions);endValuePixel=isEndValDefined?axis.getPixel(endValue,queryOptions):0;isTrendZone=(0,_lib.pluckNumber)(trendLabelConfig.isTrendZone,axisConfig.isTrendZone,1);if(isEndValDefined&&endValue!==startValue&&isTrendZone){trendLabelConfig.attr.x=startValuePixel+(endValuePixel-startValuePixel)/2;trendLabelConfig.attr.y=fixedTrendLabelPos}else{trendLabelConfig.attr.x=isEndValDefined?endValuePixel:startValuePixel;trendLabelConfig.attr.y=fixedTrendLabelPos}}else if(trendlines){startValuePixel=axis.getPixel(startValue,queryOptions);endValuePixel=isEndValDefined?axis.getPixel(endValue,queryOptions):0;valueOnRight=(0,_lib.pluckNumber)(trendLabelConfig.valueOnRight,axisConfig.isOpposit?1:0);isTrendZone=(0,_lib.pluckNumber)(trendLabelConfig.isTrendZone,axisConfig.isTrendZone,0);if(isEndValDefined&&endValue!==startValue&&isTrendZone){trendLabelConfig.attr.x=valueOnRight?fixedTrendLabelPosRight:fixedTrendLabelPos;trendLabelConfig.attr.y=startValuePixel+(endValuePixel-startValuePixel)/2}else{trendLabelConfig.attr.x=valueOnRight?fixedTrendLabelPosRight:fixedTrendLabelPos;trendLabelConfig.attr.y=isEndValDefined?valueOnRight?endValuePixel:startValuePixel:startValuePixel}}trendLabelElement=axis.addGraphicalElement(i+TREND_ID,animationManager.setAnimation({container:container,el:trendLabelElement||"text",attr:trendLabelConfig.attr,css:trendLabelConfig.css,data:{value:midValue||startValue},component:axis,label:"text"}));if(axisConfig.showTooltip&&trendLabelConfig.valueToolText){toolTipController.enableToolTip(trendLabelElement,trendLabelConfig.valueToolText)}else{toolTipController.disableToolTip(trendLabelElement)}}}};_proto._drawAxisName=function _drawAxisName(){var axis=this,axisConfig=axis.config,iapi=this.getFromEnv("chart"),toolTipController=this.getFromEnv("toolTipController"),canvasDimensions=axis.getLinkedItem("canvas").getEffectiveDimensions(),animationManager=axis.getFromEnv("animationManager"),canvasLeft=canvasDimensions.left,canvasTop=canvasDimensions.top,canvasWidth=canvasDimensions.width,canvasHeight=canvasDimensions.height,canvasBottom=canvasTop+canvasHeight,canvasRight=canvasLeft+canvasWidth,chartConfig=axis.getFromEnv("chart").config,style=axisConfig.name.style,axisName=axisConfig.name.value,isOpposite=axisConfig.isOpposit,isVertical=axisConfig.isVertical,smartLabel=axis.getFromEnv("smartLabel"),axisNameContainer=axisConfig.axisNameContainer,axisNamePadding=axisConfig.axisNamePadding,axisNameMaxH=axisConfig.nameMaxH,axisNameMaxW=axisConfig.nameMaxW,axisDimension=axisConfig.axisDimention,axisStart=isVertical?axisDimension.x:axisDimension.y,axisOpposite=axisDimension.opposite,axisNameElement=axis.getGraphicalElement("axisName"),rotation=(0,_lib.pluckNumber)(axisConfig.name.rotation,isVertical?90:270),paper=axis.getFromEnv("paper"),css={fontFamily:style.fontFamily,fontSize:style.fontSize,lineHeight:style.lineHeight,fontWeight:style.fontWeight,fontStyle:style.fontStyle},axisAttrObj,axisSmartName,tooltext,nameHeightAvail,nameHeight,yPos,chartAttr=axis.getFromEnv("chart-attrib"),scrollBar=iapi.getChildren("scrollBar")&&iapi.getChildren("scrollBar")[0],scrollDimensions=scrollBar&&scrollBar.getLogicalSpace(),isWaterfall2D=iapi.getName()===WATERFALL_2D;if(axisConfig.name.isDraw){axisAttrObj={fontFamily:style.fontFamily,fill:style.color,"vertical-align":"middle","font-size":style.fontSize,"line-height":style.lineHeight};smartLabel.useEllipsesOnOverflow(chartConfig.useEllipsesWhenOverflow);smartLabel.setStyle({fontSize:style.fontSize,fontFamily:style.fontFamily,lineHeight:style.lineHeight,fontWeight:style.fontWeight});if(axisConfig.drawAxisNameOpposit){isOpposite=!isOpposite;axisStart=axisOpposite}if(isVertical){axisNamePadding=Math.max(axisNamePadding,getAxisNamePaddingOffset(axisConfig,chartConfig));if(axisConfig.axisNameAlignCanvas||chartConfig.captionalignment&&chartConfig.captionalignment==="left"){nameHeightAvail=canvasHeight}else{nameHeightAvail=Math.max(canvasHeight,axisConfig.oriCanvasHeight||0)}if(rotation){axisSmartName=smartLabel.getSmartText(axisName,nameHeightAvail,axisNameMaxW);tooltext=axisSmartName.tooltext;nameHeight=axisSmartName.width}else{axisSmartName=smartLabel.getSmartText(axisName,axisNameMaxW,nameHeightAvail);tooltext=axisSmartName.tooltext;nameHeight=axisSmartName.height}if(axisConfig.drawAxisNameFromBottom){yPos=canvasBottom-nameHeight/2}else{var canvasAlignText=chartConfig.height/2;if(chartAttr.orientedtextalign&&chartAttr.orientedtextalign==="right"){axisAttrObj["text-anchor"]="end";canvasAlignText=canvasTop/4}if(chartAttr.orientedtextalign&&chartAttr.orientedtextalign==="left"){axisAttrObj["text-anchor"]="start";canvasAlignText=canvasTop+canvasHeight+80;nameHeight=nameHeight-20}yPos=nameHeight>canvasHeight?canvasAlignText:canvasTop+canvasHeight/2}axisAttrObj.text=axisSmartName.text;var axisNameMaxWidth=axisNameMaxW/2;if(axisConfig.rotateAxisName===0){if(chartAttr.orientedtextalign&&chartAttr.orientedtextalign==="right"){axisAttrObj["text-anchor"]="end";axisNameMaxWidth=0}if(chartAttr.orientedtextalign&&chartAttr.orientedtextalign==="left"){axisAttrObj["text-anchor"]="start";axisNameMaxWidth=axisNameMaxW}}axisAttrObj.x=isOpposite?(axisStart||canvasRight)+axisNamePadding+axisNameMaxW/2:(axisStart||canvasLeft)-axisNamePadding-axisNameMaxWidth;axisAttrObj.y=yPos}else{axisSmartName=smartLabel.getSmartText(axisName,canvasWidth,axisNameMaxH);tooltext=axisSmartName.tooltext;if(isOpposite&&chartConfig.canvasMarginTop){axisNamePadding=Math.max(axisNamePadding,chartConfig.canvasMarginTop-chartConfig.marginTop-axisNameMaxH)}if(!isOpposite&&chartConfig.canvasMarginBottom){axisNamePadding=Math.max(axisNamePadding,chartConfig.canvasMarginBottom-chartConfig.marginBottom-axisNameMaxH)}axisAttrObj.text=axisSmartName.text;var _axisNameMaxWidth=canvasLeft+canvasWidth/2;if(axisConfig.rotateAxisName===0){if(chartAttr.orientedtextalign&&chartAttr.orientedtextalign==="right"){axisAttrObj["text-anchor"]="end";_axisNameMaxWidth=canvasLeft+canvasWidth}if(chartAttr.orientedtextalign&&chartAttr.orientedtextalign==="left"){axisAttrObj["text-anchor"]="start";_axisNameMaxWidth=canvasLeft}}axisAttrObj.x=_axisNameMaxWidth;axisAttrObj.y=isOpposite?(axisStart||canvasTop)-axisNamePadding-axisNameMaxH/2:(axisStart||canvasBottom)+axisNamePadding+axisNameMaxH/2}axisAttrObj["text-bound"]=axisSmartName.text===""?[]:[style.backgroundColor,style.borderColor,style.borderColor?style.borderThickness:0,style.borderPadding,style.borderRadius,style.borderDash];axisAttrObj.transform=paper.getSuggestiveRotation(isVertical?rotation:0,axisAttrObj.x,axisAttrObj.y);if(isWaterfall2D&&scrollBar){axisAttrObj.y=axisAttrObj.y+scrollDimensions.height}axisNameElement=axis.addGraphicalElement("axisName",animationManager.setAnimation({css:css,el:axisNameElement||"text",attr:axisAttrObj,container:axisNameContainer,component:axis,label:"text"}));if(axisConfig.showTooltip){toolTipController.enableToolTip(axisNameElement,tooltext)}else{toolTipController.disableToolTip(axisNameElement)}}else{axisNameElement&&axis.removeGraphicalElement(axisNameElement)}};_proto._drawAxisLine=function _drawAxisLine(){var axis=this,axisConfig=axis.config,isVertical=axisConfig.isVertical,isOpposite=axisConfig.isOpposit,chart=axis.getFromEnv("chart"),canvasDimensions=axis.getLinkedItem("canvas").getEffectiveDimensions(),animationManager=axis.getFromEnv("animationManager"),canvasTop=canvasDimensions.top,canvasLeft=canvasDimensions.left,canvasBottom=canvasTop+canvasDimensions.height,canvasRight=canvasLeft+canvasDimensions.width,axisDimension=axisConfig.axisDimention,axisStartPosition=isVertical?axisDimension.x:axisDimension.y,drawAxisLineWRTCanvas=axisConfig.drawAxisLineWRTCanvas,chartJSON=chart.getFromEnv("chart-attrib"),axisLineGroup=axisConfig.axisAxisLineContainerBottom,tickAttrObj,axisLineElementCheck=axis.getGraphicalElement(AXIS_LINE),axisLineElement,linePath,xAxisLineLeftExten,fixPoint,tickEndPoint,pixelValue,axisLineAttrObj,tickElement,tickElementCheck,removingElement,tick,tickId,drawElemIds=[],diff,i,crispPath,ticks,ln;xAxisLineLeftExten=(0,_lib.pluckNumber)(chartJSON.showyaxisline,chartJSON.showyaxisline)===1?(0,_lib.pluckNumber)(chartJSON.yaxislinethickness,chartJSON.pyaxislinethickness,1):0;if(axisConfig.showAxisLine){if(isVertical){if(isOpposite){axisStartPosition=drawAxisLineWRTCanvas?canvasRight:axisStartPosition;fixPoint=axisStartPosition+axisConfig.axisLineThickness/2}else{axisStartPosition=drawAxisLineWRTCanvas?canvasLeft:axisStartPosition;fixPoint=axisStartPosition-axisConfig.axisLineThickness/2}crispPath=getCrispPath(["M",fixPoint,canvasBottom,"L",fixPoint,canvasTop],axisConfig.axisLineThickness);linePath=crispPath.path}else{if(isOpposite){axisStartPosition=drawAxisLineWRTCanvas?canvasTop:axisStartPosition;fixPoint=axisStartPosition-axisConfig.axisLineThickness/2}else{axisStartPosition=drawAxisLineWRTCanvas?canvasBottom:axisStartPosition;fixPoint=axisStartPosition+axisConfig.axisLineThickness/2}crispPath=getCrispPath(["M",canvasLeft-xAxisLineLeftExten,fixPoint,"L",canvasRight,fixPoint],axisConfig.axisLineThickness);linePath=crispPath.path}axisLineAttrObj={path:linePath,stroke:axisConfig.axisLineColor,"stroke-linecap":BUTT,"stroke-width":axisConfig.axisLineThickness,"shape-rendering":crispPath.isCrisped?CRISP:_lib.UNDEF};if(axisConfig.drawTick&&axisConfig.tickLength){tickAttrObj={stroke:axisConfig.tickColor,"stroke-width":axisConfig.tickWidth};if(isVertical){if(isOpposite){tickEndPoint=fixPoint+axisConfig.tickLength}else{tickEndPoint=fixPoint-axisConfig.tickLength}}else{if(isOpposite){tickEndPoint=fixPoint-axisConfig.tickLength}else{tickEndPoint=fixPoint+axisConfig.tickLength}}ticks=axisConfig.tickValues?axisConfig.tickValues.tickValue.map((function(tickObj){return isVertical?tickObj.y:tickObj.x})):axisConfig.ticks;for(i=0,ln=ticks.length;i<ln;i+=1){tick=ticks[i];tickId=""+tick+TICK_ID;tickElementCheck=axis.getGraphicalElement(tickId);pixelValue=axis.getPixel(tick,queryOptions);tickAttrObj.path=getCrispPath(isVertical?["M",fixPoint,pixelValue,"L",tickEndPoint,pixelValue]:["M",pixelValue,fixPoint,"L",pixelValue,tickEndPoint],axisConfig.tickWidth).path;tickElement=animationManager.setAnimation({el:tickElementCheck||"path",attr:tickAttrObj,data:{value:tick,path:tickAttrObj.path},container:axisLineGroup,component:axis,label:"path"});if(!tickElementCheck){axis.addGraphicalElement(tickId,tickElement)}drawElemIds.push(tickId)}}axisLineElement=animationManager.setAnimation({el:axisLineElementCheck||"path",attr:axisLineAttrObj,container:axisLineGroup,component:axis,label:"path"});if(!axisLineElementCheck){axis.addGraphicalElement(AXIS_LINE,axisLineElement)}drawElemIds.push(AXIS_LINE)}diff=(0,_diff.default)(axisConfig.prevTicks,drawElemIds);for(i=0,ln=diff.length;i<ln;i++){removingElement=axis.getGraphicalElement(diff[i]);removingElement&&axis.removeGraphicalElement(removingElement)}axisConfig.prevTicks=drawElemIds};_proto._parseCategory=function _parseCategory(){var axis=this,axisConfig=axis.config,axisDimention=axisConfig.axisDimention||{},chart=axis.getFromEnv("chart"),smartLabel=chart.getFromEnv("smartLabel"),axisComponents=axis.components,labelStore=axisComponents.labels,canvasDimensions=axis.getLinkedItem("canvas").getEffectiveDimensions(),chartConfig=chart.config,isOpposit=axisConfig.isOpposit,labels=axisConfig.labels,style=labels.style,isVertical=axisConfig.isVertical,canvasTop=canvasDimensions.top,canvasLeft=canvasDimensions.left,canvasBottom=canvasTop+canvasDimensions.height,canvasRight=canvasLeft+canvasDimensions.width,axisPadding=axisConfig.labelPadding,axisStartPosition=isVertical?axisDimention.x:axisDimention.y,axisEndPosition=axisDimention.opposite,categories=chart.getFromEnv("dataSource").categories,categoriesStyle={},tickArr=axisConfig.tickValues.tickValue,i,curCategory,text,labelRotation,labelLineHeight,labelLineHeightpx,addCategoryPadding,css,categoryStyleFontFamily,categoryStyleFontSize,categoryStyleFontWeight,categoryStyleFontStyle,ParentCss,axisAttrObj,fontColor,pos,min=axisConfig.axisRange.min,curCategoryValue,labelBox,categoryArr,ln,tempStep,staggerLineAvailed,staggerLines=axisConfig.drawnStaggerLines,isUnevenLabels=(axisConfig.labelStep!==axisConfig.labels.step||axis.getZoom()!==1)&&axisConfig.labelDisplay==="stagger",categoryPadding,staggerLabelWidth,intervalWidth,smartLabelText,labelMaxW,labelMaxH,axisXPadding=1,curCategoryIndex;if(axisConfig.labels.isDraw){if(isVertical){intervalWidth=Math.abs(axis.getPixel(0,queryOptions)-axis.getPixel(0+axisConfig.axisRange.tickInterval,queryOptions));if(axisConfig.labelMaxH>intervalWidth){tempStep=Math.ceil(axisConfig.labelMaxH/intervalWidth)}if(tempStep>axisConfig.labels.step){axisConfig.labels.step=tempStep}}if(isUnevenLabels){staggerLabelWidth=2*Math.abs(axis.getPixel(min,queryOptions)-axis.getPixel(min+axisConfig.labels.step,queryOptions))*axisConfig.sWidthAdjstFactor-axisXPadding}labelRotation=axisConfig.labels.rotation;labelMaxW=labelRotation?axisConfig.labelMaxH:axisConfig.labelMaxW;labelMaxH=labelRotation?axisConfig.labelMaxW:axisConfig.labelMaxH;if(axisConfig.drawLabelsOpposit){isOpposit=!isOpposit;axisStartPosition=axisEndPosition}if(categories&&categories[0]&&axisConfig.xAxisLabelMode!=="auto"){categoriesStyle.fontFamily=categories[0].font;categoriesStyle.fontSize=categories[0].fontsize;categoriesStyle.color=categories[0].fontcolor}axisConfig.ParentCss=ParentCss={fontFamily:(0,_lib.pluck)(categoriesStyle.fontFamily,style.fontFamily),fontSize:(0,_lib.pluck)(categoriesStyle.fontSize,this.computeFontSize(style.fontSizeWithUnit)+_lib.PXSTRING),fontWeight:(0,_lib.pluck)(style.fontWeight),fontStyle:(0,_lib.pluck)(style.fontStyle)};ParentCss.lineHeight=(0,_lib.setLineHeight)(ParentCss);categoryArr=axis._getCategoryArr();axisComponents.labelIndexArr=[];for(i=0,ln=categoryArr.length;i<ln;i+=1){curCategoryIndex=categoryArr[i].index;curCategory=tickArr[curCategoryIndex];curCategoryValue=categoryArr[i].value;axisComponents.labelIndexArr.push(curCategoryIndex);categoryStyleFontFamily=(0,_lib.pluck)(curCategory.font,curCategory.labelfont);categoryStyleFontSize=(0,_lib.pluck)(this.computeFontSize(curCategory.fontsize),curCategory.labelfontsize);categoryStyleFontWeight=(0,_lib.pluck)(curCategory.fontbold,curCategory.labelfontbold)?(0,_lib.pluckNumber)(curCategory.fontbold,curCategory.labelfontbold,0)?"bold":_lib.NORMAL:_lib.UNDEF;categoryStyleFontStyle=(0,_lib.pluck)(curCategory.fontitalic,curCategory.labelfontitalic)?(0,_lib.pluckNumber)(curCategory.fontitalic,curCategory.labelfontitalic,0)?"italic":_lib.NORMAL:_lib.UNDEF;fontColor=(0,_lib.convertColor)((0,_lib.pluck)(curCategory.fontcolor,curCategory.labelfontcolor,categoriesStyle.color,style.color),(0,_lib.pluckNumber)(curCategory.labelalpha,axisConfig.rawAttr.labelAlpha,chart.config.singleseries?_lib.UNDEF:curCategory.alpha,100));if(categoryStyleFontFamily||categoryStyleFontSize||categoryStyleFontWeight||categoryStyleFontStyle){css={};categoryStyleFontFamily&&(css.fontFamily=categoryStyleFontFamily);categoryStyleFontSize&&(css.fontSize=categoryStyleFontSize);categoryStyleFontWeight&&(css.fontWeight=categoryStyleFontWeight);categoryStyleFontStyle&&(css.fontStyle=categoryStyleFontStyle);css.lineHeight=categoryStyleFontSize?(0,_lib.setLineHeight)(css):ParentCss.lineHeight}else{css=_lib.UNDEF}if(css||ParentCss){labelLineHeightpx=(css||ParentCss).lineHeight;if(labelLineHeightpx.indexOf("px")!==-1){labelLineHeight=labelLineHeightpx.replace(/px/i,"");labelLineHeight=parseFloat(labelLineHeight)}}if(curCategory.appliedSmartLabel===false){smartLabel.setStyle(curCategory._ovrStyle||ParentCss);smartLabelText=smartLabel.getSmartText(curCategory.oriLabel||curCategory.label,labelMaxW,labelMaxH);curCategory.oriLabel=curCategory.oriLabel||curCategory.label;curCategory.label=smartLabelText.text;curCategory.labelTooltext=smartLabelText.labelTooltext;curCategory.appliedSmartLabel=true}pos=axis.getPixel(curCategoryValue,queryOptions);if(isVertical){text=curCategory.label||"";addCategoryPadding=Number(curCategory.labelPadding)||0;axisAttrObj={fill:fontColor,"line-height":labelLineHeight,opacity:1,"text-anchor":isOpposit?_lib.POSITION_START:_lib.POSITION_END,text:text,cursor:!chartConfig.singleseries&&curCategory.link||curCategory.labellink||style.labelLink?_lib.POINTER:"",x:isOpposit?(axisStartPosition||canvasRight)+axisPadding:(axisStartPosition||canvasLeft)-axisPadding,y:addCategoryPadding?pos+addCategoryPadding:pos}}else{text=curCategory.label||"";addCategoryPadding=Number(curCategory.labelPadding)||0;axisAttrObj={fill:fontColor,"line-height":labelLineHeight,opacity:1,text:text,cursor:!chartConfig.singleseries&&curCategory.link||curCategory.labellink||style.labelLink?_lib.POINTER:"",x:pos,y:isOpposit?(axisStartPosition||canvasTop)-axisPadding:(axisStartPosition||canvasBottom)+axisPadding};if(labelRotation){axisAttrObj["text-anchor"]=isOpposit?_lib.POSITION_START:_lib.POSITION_END;axisAttrObj["vertical-align"]=_lib.POSITION_MIDDLE}else{axisAttrObj["text-anchor"]=_lib.POSITION_MIDDLE;axisAttrObj["vertical-align"]=isOpposit?_lib.POSITION_BOTTOM:_lib.POSITION_TOP}if(isUnevenLabels){staggerLineAvailed=curCategory.labelCount%staggerLines;if(staggerLineAvailed){if(!(labelLineHeight=curCategory.style.lineHeight))labelLineHeight=axisConfig.labels.style.lineHeight;categoryPadding=labelLineHeight.replace(/px/i,"")*staggerLineAvailed;axisAttrObj.y=isOpposit?axisAttrObj.y-categoryPadding:axisAttrObj.y+categoryPadding}smartLabel.setStyle(curCategory._ovrStyle||ParentCss);smartLabelText=smartLabel.getSmartText(curCategory.oriLabel||curCategory.label,staggerLabelWidth,labelMaxH);curCategory.oriLabel=curCategory.oriLabel||curCategory.label;axisAttrObj.text=curCategory.label=smartLabelText.text;curCategory.labelTooltext=smartLabelText.labelTooltext;curCategory.appliedSmartLabel=true}else if(addCategoryPadding){if(isOpposit){axisAttrObj.y-=addCategoryPadding}else{axisAttrObj.y+=addCategoryPadding}}}labelBox={label:curCategory.label,lineHeight:labelLineHeightpx,border:(0,_lib.pluckNumber)(curCategory.borderthickness,curCategory.labelborderthickness)?(0,_lib.pluckNumber)(curCategory.borderthickness,curCategory.labelborderthickness,1)+"px solid":"",borderColor:curCategory.bordercolor||curCategory.labelbordercolor?(0,_lib.convertColor)(curCategory.bordercolor||curCategory.labelbordercolor,(0,_lib.pluckNumber)(curCategory.borderalpha,curCategory.labelborderalpha,curCategory.alpha,curCategory.labelalpha,100)):_lib.BLANKSTRING,borderThickness:(0,_lib.pluckNumber)(curCategory.borderthickness,curCategory.labelborderthickness),borderPadding:(0,_lib.pluckNumber)(curCategory.borderpadding,curCategory.labelborderpadding),borderRadius:(0,_lib.pluckNumber)(curCategory.borderradius,curCategory.labelborderradius),backgroundColor:curCategory.bgcolor||curCategory.labelbgcolor?(0,_lib.convertColor)(curCategory.bgcolor||curCategory.labelbgcolor,(0,_lib.pluckNumber)(curCategory.bgalpha,curCategory.labelbgalpha,curCategory.alpha,curCategory.labelalpha,axisConfig.rawAttr.labelAlpha,100)):_lib.BLANKSTRING,borderDash:(0,_lib.pluckNumber)(curCategory.borderdashed,curCategory.labelborderdashed,0)?(0,_lib.getDashStyle)((0,_lib.pluckNumber)(curCategory.borderdashlen,curCategory.labelborderdashlen,4),(0,_lib.pluckNumber)(curCategory.borderdashgap,curCategory.labelborderdashgap,2)):(0,_lib.pluckNumber)(curCategory.borderdashed,curCategory.labelborderdashed)===0?_lib.DASH_DEF:style.borderDash};if(!curCategory.label){axisAttrObj["text-bound"]=[]}else{axisAttrObj["text-bound"]=[(0,_lib.pluck)(labelBox.backgroundColor,style.backgroundColor),(0,_lib.pluck)(labelBox.borderColor,style.borderColor),(0,_lib.pluck)(labelBox.borderThickness,style.borderThickness),(0,_lib.pluck)(labelBox.borderPadding,style.borderPadding),(0,_lib.pluck)(labelBox.borderRadius,style.borderRadius),(0,_lib.pluck)(labelBox.borderDash,style.borderDash)]}if(labels.shiftX){axisAttrObj.x+=labels.shiftX}if(labels.shiftY){axisAttrObj.y+=labels.shiftY}axisAttrObj.transform=(0,_lib.getSuggestiveRotation)(labelRotation,axisAttrObj.x,axisAttrObj.y);labelStore[curCategoryIndex]=labelStore[curCategoryIndex]||{config:{props:{label:{}}}};labelStore[curCategoryIndex].config.props.label.attr=axisAttrObj;labelStore[curCategoryIndex].config.props.label.css=css}}};_proto.allocatePosition=function allocatePosition(){var axis=this,axisConfig=axis.config;if(!axisConfig.tickValues){axisConfig.drawLabels&&axis._parseLabel()}else{axisConfig.drawLabels&&axis._parseCategory()}};_proto._drawCategory=function _drawCategory(){var axis=this,axisConfig=axis.config,chart=axis.getFromEnv("chart"),chartConfig=chart.config,labels=axisConfig.labels,animationManager=axis.getFromEnv("animationManager"),style=labels.style,toolTipController=this.getFromEnv("toolTipController"),axisContainer=axisConfig.axisContainer,categoryLabel=axis.config.categoryLabel||(axis.config.categoryLabel=[]),raiseEvent=function raiseEvent(event){return function(data){var ele=this;chart.plotEventHandler(ele,data,event)}},tickArr=axisConfig.tickValues.tickValue,i,curCategory,textElement,axisAttrObj,diff,curCategoryValue,categoryArr,categoryArrStr=[],tempEle,ln,config,removingElement,curCategoryIndex;if(axisConfig.labels.isDraw){axisContainer.css(axisConfig.ParentCss);categoryArr=axis._getCategoryArr();diff=(0,_differenceWith.default)((function(prev,now){return prev.value===now.value}),axisConfig.prevCategoryIntervalArr,categoryArr);for(i=0,ln=diff.length;i<ln;i++){removingElement=axis.getGraphicalElement(""+diff[i].value+LABEL_ID);if(removingElement){axis.removeGraphicalElement(removingElement)}}axisConfig.prevCategoryIntervalArr=(0,_lib.extend2)([],categoryArr);for(i=0,ln=categoryArr.length;i<ln;i+=1){categoryArrStr[i]=""+categoryArr[i].value+LABEL_ID}for(i=0,ln=categoryArr.length;i<ln;i+=1){curCategoryIndex=categoryArr[i].index;curCategory=tickArr[curCategoryIndex];config=axis.components.labels[curCategoryIndex].config;axisAttrObj=config.props.label.attr;tempEle=axis.getGraphicalElement(categoryArrStr[i]);textElement=animationManager.setAnimation({el:tempEle||"text",attr:axisAttrObj,container:axisContainer,data:{value:curCategoryValue},component:axis,label:"text",css:config.props.label.css});if(!tempEle){axis.addGraphicalElement(categoryArrStr[i],textElement);textElement.on("fc-click",raiseEvent("dataLabelClick")).hover(raiseEvent("dataLabelRollOver"),raiseEvent("dataLabelRollOut"))}textElement.data(EVENTARGS,{link:!chartConfig.singleseries&&curCategory.link||curCategory.labellink||style.labelLink,text:axisAttrObj.text,index:curCategoryIndex});if(curCategory.labelTooltext||textElement.abbrArr){toolTipController.enableToolTip(textElement,curCategory.labelTooltext)}else{toolTipController.disableToolTip(textElement)}categoryLabel[curCategoryIndex]=textElement}}else{for(i=0,ln=axisConfig.prevCategoryIntervalArr.length;i<ln;i++){removingElement=axis.getGraphicalElement(""+axisConfig.prevCategoryIntervalArr[i].value+LABEL_ID);if(removingElement){axis.removeGraphicalElement(removingElement)}}}};_proto._getCategoryArr=function _getCategoryArr(){var axis=this,axisConfig=axis.config,isVertical=axisConfig.isVertical,tempStep=0,count=0,category,i,max,min,curCategory,getLimit,curCategoryValue,increment,intervalWidth,checkForLimit,retArr=[];category=axisConfig.tickValues.tickValue;min=minimumEnquiry(category);max=category?category.length-1:0;if(isVertical){intervalWidth=Math.abs(axis.getPixel(0,queryOptions)-axis.getPixel(1,queryOptions));if(axisConfig.labelMaxH>intervalWidth){tempStep=Math.ceil(axisConfig.labelMaxH/intervalWidth)}if(tempStep>axisConfig.labels.step){axisConfig.labels.step=tempStep}}increment=axisConfig.labels.step>0?axisConfig.labels.step:1;checkForLimit=axis.getZoom()!==1;getLimit=this.getVisibleConfig();for(i=min;i<=max;i+=increment){curCategory=category[i];if(!curCategory){continue}curCategoryValue=(0,_lib.pluckNumber)(curCategory.x,curCategory.y,i);if((0,_lib.pluckNumber)(curCategory.showlabel,axisConfig.showLabels,1)===0){continue}if(checkForLimit&&(curCategoryValue<getLimit.minValue||curCategoryValue>getLimit.maxValue)){curCategory.labelCount=count++;continue}if((axisConfig.xAxisLabelMode==="auto"||axisConfig.xAxisLabelMode==="mixed")&&(axisConfig.showZeroPlane===0||axisConfig.showZeroPlaneValue===0)&&curCategoryValue===0){continue}if(!axisConfig.labels.drawNormalVal&&!(axisConfig.labels.drawLimitVal&&(i===min||i===max))){continue}if(!axisConfig.labels.drawNormalVal&&!(i===min||i===max)){continue}if(!axisConfig.labels.drawLimitVal&&(i===min||i===max)){continue}curCategory.labelCount=count++;retArr.push({index:i,value:curCategoryValue})}return retArr};_proto.getValue=function getValue(pixel,options){if(options===void 0){options={wrtVisible:false}}var scale=this.getScale(),translateValue=this.getTranslation(),domainValue=scale.getDomainValue(options.wrtVisible?pixel:pixel-translateValue);return domainValue};_proto.getPixel=function getPixel(value,options){if(options===void 0){options={wrtVisible:false}}var scale=this.getScale(),translateValue=this.getTranslation(),rangeValue=scale.getRangeValue(value);return options.wrtVisible?rangeValue:rangeValue+translateValue};_proto._getCustomPixel=function _getCustomPixel(value,length,options){if(options===void 0){options={wrtVisible:false}}if(!length){return this.getPixel(value,options)}var newScale=this.getScale().copy(),_newScale$getRange=newScale.getRange(),val1=_newScale$getRange[0],val2=_newScale$getRange[1],min=Math.min(val1,val2),rangeValue=newScale.getRangeValue(value),translateValue=this.getTranslation();newScale.setRange([min,min+length]);return options.wrtVisible?rangeValue:rangeValue+translateValue};_proto.getTranslation=function getTranslation(){return this.config.translation||0};_proto.setVisibleConfig=function setVisibleConfig(minValue,maxValue){var axis=this,axisConfig=axis.config,prevZoom=axis.getZoom(),scale=axis.getScale(),domain;if(minValue>=maxValue||minValue<axisConfig.axisRange.min||maxValue>axisConfig.axisRange.max){return false}domain=scale.setDomain([minValue,maxValue]).getDomain();axisConfig.visibleMin=domain[0];axisConfig.visibleMax=domain[1];axisConfig.zoom=axis._computeZoom();axisConfig.translation=axis._computeTrans