@fusioncharts/core
Version:
JavaScript Data Visualisation Library
1 lines • 12.7 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 _log=_interopRequireDefault(require("@fusioncharts/utils/src/scales/log"));var _diff=_interopRequireDefault(require("@fusioncharts/utils/src/scale-utils/array/diff"));var _extent2=_interopRequireDefault(require("@fusioncharts/utils/src/array/extent"));var _cartesian=_interopRequireDefault(require("./cartesian"));var _lib=require("../lib");var _commonApi=require("./common-api");var validate=function validate(param){if(param===null||param===_lib.UNDEF||param===""||isNaN(param)){return false}return true},queryOptions={wrtVisible:true},POSITION_START=_lib.preDefStr.POSITION_START,POSITION_TOP=_lib.preDefStr.POSITION_TOP,POSITION_BOTTOM=_lib.preDefStr.POSITION_BOTTOM,POSITION_END=_lib.preDefStr.POSITION_END,LABEL_ID="_label",BLANKSTRING="",EVENTARGS="eventArgs",NOSTRING="none",POINTER="pointer",logTicksMerge=function logTicksMerge(majorTickArr,minorTickArr){if(majorTickArr===void 0){majorTickArr=[]}if(minorTickArr===void 0){minorTickArr=[]}if(majorTickArr.length===0)return[];var majorArrlen=majorTickArr.length,minorArrLen=minorTickArr.length,k=majorArrlen-1,l=minorArrLen-1,mergedArr=[majorTickArr[k]];k--;while(k>=0){if(minorTickArr[l]>majorTickArr[k]){mergedArr.push(minorTickArr[l]);l--}else{mergedArr.push(majorTickArr[k]);k--}}return mergedArr};var LogAxis=function(_CartesianAxis){function LogAxis(){var _this;_this=_CartesianAxis.call(this)||this;_this.config.scale=new _log.default;_this.config.labelMap=[];return _this}(0,_inheritsLoose2.default)(LogAxis,_CartesianAxis);var _proto=LogAxis.prototype;_proto.__setDefaultConfig=function __setDefaultConfig(){_CartesianAxis.prototype.__setDefaultConfig.call(this);var config=this.config;config.base=10;config.showMinorDivLineValues=1;config.numMinorDivLines=_lib.UNDEF};_proto.getName=function getName(){return"log"};_proto.configureAttributes=function configureAttributes(rawAttr){var axis=this,axisConfig=axis.config,numberFormatter=axis.getFromEnv("number-formatter"),colorM=axis.getFromEnv("color-manager"),axisAttr;_CartesianAxis.prototype.configureAttributes.call(this,rawAttr);axisAttr=axisConfig.rawAttr;axisConfig.minorDivlinecolor=(0,_lib.convertColor)((0,_lib.pluck)(axisAttr.minorDivlinecolor,colorM.getColor("divLineColor")),(0,_lib.pluckNumber)(axisAttr.minorDivLineAlpha,colorM.getColor("divLineAlpha")/2));axisConfig.axisMinValue=numberFormatter.getCleanValue(axisAttr.axisMinValue);axisConfig.axisMaxValue=numberFormatter.getCleanValue(axisAttr.axisMaxValue);axisConfig.minorTicks=[];if(axisConfig.axisMinValue<=0){axisConfig.axisMinValue=_lib.UNDEF}if(axisConfig.axisMaxValue<=0){axisConfig.axisMaxValue=_lib.UNDEF}axis.getScale().setBase(axisConfig.base);axisConfig.minorDivLineThickness=(0,_lib.pluckNumber)(axisAttr.minorDivLineThickness,1);axisConfig.band.isDraw=0};_proto.generateTicks=function generateTicks(){var ticks=this.getScale().ticks();this.config._allTicks=ticks.slice();return ticks};_proto.generateMinorTicks=function generateMinorTicks(){return this.getScale().minorTicks(this.config.numMinorDivLines)};_proto._setAxisRange=function _setAxisRange(_ref){var _ref$min=_ref.min,min=_ref$min===void 0?.1:_ref$min,_ref$max=_ref.max,max=_ref$max===void 0?1:_ref$max;var scale=this.getScale().setDomain([min,max]).nice(),axisConfig=this.config,axisRange=axisConfig.axisRange;axisConfig.ticks=this.generateTicks();axisConfig.minorTicks=this.generateMinorTicks();var _scale$getDomain=scale.getDomain();min=_scale$getDomain[0];max=_scale$getDomain[1];axisRange.max=max;axisRange.min=min;this.setVisibleConfig(min,max)};_proto.setDataLimit=function setDataLimit(_max,_min){var axis=this,max=_max,min=_min,axisConfig=axis.config,AxisMaxValue=axisConfig.axisMaxValue,AxisMinValue=axisConfig.axisMinValue,trendMin,trendMax;if(validate(AxisMinValue)&&Number(AxisMinValue)<=min){min=AxisMinValue}if(validate(AxisMaxValue)&&Number(AxisMaxValue)>=max){max=AxisMaxValue}if(min===0){min=1}if(max===0){max=axisConfig.base}var _axis$getTrendLineLim=axis.getTrendLineLimits();trendMin=_axis$getTrendLineLim[0];trendMax=_axis$getTrendLineLim[1];var _extent=(0,_extent2.default)([trendMin,trendMax,min,max],(function(a){return Number(a)}));min=_extent[0];max=_extent[1];this._setAxisRange({min:min,max:max})};_proto._parseLabel=function _parseLabel(){var axis=this,axisConfig=axis.config,chart=axis.getFromEnv("chart"),chartConfig=chart.config,axisRange=axisConfig.axisRange,isOpposit=axisConfig.isOpposit,increment,labels=axisConfig.labels,style=labels.style,i,isVertical=axisConfig.isVertical,max=axisRange.max,min=axisRange.min,canvasBottom=chartConfig.canvasBottom,canvasLeft=chartConfig.canvasLeft,canvasRight=chartConfig.canvasRight,canvasTop=chartConfig.canvasTop,axisPadding=axisConfig.labelPadding,numberFormatter=axis.getFromEnv("number-formatter"),axisValueMaxH=axisConfig.labelMaxH,axisValueMaxW=axisConfig.labelMaxW,axisStartPosition=axisConfig.axisStartPosition,text,getLimit,labelRotation,labelLineHeight,numberFormatterFn,addCategoryPadding,axisAttrObj,allTicks,ticksLen,tickVal,tickInPx,prevPos,labelMaxProp,labelArr,axisComp=axis.components,minorTicks=axisConfig.minorTicks,checkForLimit;if(style.lineHeight){labelLineHeight=style.lineHeight;if(labelLineHeight.indexOf("px")!==-1){labelLineHeight=labelLineHeight.replace("px","");labelLineHeight=parseFloat(labelLineHeight)}}if(axisConfig.labels.isDraw){checkForLimit=axis.getZoom()!==1;labelArr=axisComp.labels;axisConfig.labels.step?increment=axisRange.tickInterval*axisConfig.labels.step:increment=axisRange.tickInterval;labelRotation=axisConfig.labels.rotation;getLimit=this.getVisibleConfig();axisComp.labelIndexArr=[];axisConfig.allTicks=allTicks=logTicksMerge(axisConfig.ticks,axisConfig.minorTicks);labelMaxProp=isVertical?axisValueMaxH:axisValueMaxW;ticksLen=allTicks.length;for(i=0;i<ticksLen;i++){tickVal=allTicks[i];tickInPx=axis.getPixel(tickVal,queryOptions);if(minorTicks.indexOf(tickVal)>=0&&!axisConfig.showMinorDivLineValues){continue}if(prevPos){if(tickInPx>prevPos-labelMaxProp&&tickInPx<prevPos+labelMaxProp){continue}}if(checkForLimit&&(tickVal<getLimit.minValue||tickVal>getLimit.maxValue)){continue}if(!axisConfig.labels.drawNormalVal&&!(axisConfig.labels.drawLimitVal&&(tickVal===min||tickVal===max))){continue}if(!axisConfig.labels.drawNormalVal&&!(tickVal===min||tickVal===max)){continue}if(!axisConfig.labels.drawLimitVal&&(tickVal===min||tickVal===max)){continue}if(axisConfig.showZeroPlaneValue===0&&axisConfig.showZeroPlane===0&&tickVal===0){continue}if(axisConfig.showZeroPlane===1&&axisConfig.showZeroPlaneValue===1&&(tickVal<0&&tickVal+increment>0||tickVal>0&&tickVal-increment<0)){if(isVertical){if(tickInPx+axisValueMaxH>=axis.getPixel(0,queryOptions)&&axis.getPixel(0,queryOptions)>=tickInPx-axisValueMaxH){continue}}else{if(tickInPx+axisValueMaxW>=axis.getPixel(0,queryOptions)&&axis.getPixel(0,queryOptions)>=tickInPx-axisValueMaxW){continue}}}axisAttrObj={fill:style.color,"font-size":style.fontSize,cursor:style.labelLink?POINTER:""};if(isVertical){if(axisConfig.numberFormatterFn){numberFormatterFn=numberFormatter[axisConfig.numberFormatterFn]}else if(axisConfig.isPercent){numberFormatterFn=numberFormatter.percentValue}else{numberFormatterFn=numberFormatter.yAxis}text=""+numberFormatterFn.call(numberFormatter,tickVal);addCategoryPadding=axisConfig.hasCategory?axisConfig.categories.category[i].labelPadding||0:0;axisAttrObj["text-anchor"]=isOpposit?POSITION_START:POSITION_END;axisAttrObj.text=text;axisAttrObj.x=isOpposit?(axisStartPosition||canvasRight)+axisPadding:(axisStartPosition||canvasLeft)-axisPadding;axisAttrObj.y=addCategoryPadding?tickInPx+addCategoryPadding:tickInPx;prevPos=axisAttrObj.y}else{if(axisConfig.numberFormatterFn){numberFormatterFn=numberFormatter[axisConfig.numberFormatterFn]}else if(axisConfig.isPercent){numberFormatterFn=numberFormatter.percentValue}else{numberFormatterFn=numberFormatter.xAxis}text=""+numberFormatterFn.call(numberFormatter,tickVal);addCategoryPadding=axisConfig.hasCategory?Number(axisConfig.categories.category[i].labelPadding)||0:0;axisAttrObj.text=text;axisAttrObj.x=tickInPx;axisAttrObj.y=isOpposit?(axisStartPosition||canvasTop)-axisPadding:(axisStartPosition||canvasBottom)+axisPadding;if(addCategoryPadding){axisAttrObj.y+=addCategoryPadding}if(labelRotation){axisAttrObj["text-anchor"]=isOpposit?POSITION_START:POSITION_END;axisAttrObj["vertical-align"]="middle"}else{axisAttrObj["vertical-align"]=isOpposit?POSITION_BOTTOM:POSITION_TOP}prevPos=axisAttrObj.x}if(labels.shiftX){axisAttrObj.x+=labels.shiftX}if(labels.shiftY){axisAttrObj.y+=labels.shiftY}axisAttrObj.transform=(0,_lib.getSuggestiveRotation)(labelRotation,axisAttrObj.x,axisAttrObj.y);axisComp.labelIndexArr.push(i);labelArr[i]=labelArr[i]||{config:{props:{label:{}}}};if(typeof tickVal==="undefined"){axisAttrObj["text-bound"]=[]}else{axisAttrObj["text-bound"]=[(0,_lib.pluck)(style.backgroundColor,BLANKSTRING),(0,_lib.pluck)(style.borderColor,BLANKSTRING),(0,_lib.pluck)(style.borderThickness,BLANKSTRING),(0,_lib.pluck)(style.borderPadding,0),(0,_lib.pluck)(style.borderRadius,0),(0,_lib.pluck)(style.borderDash,NOSTRING)]}labelArr[i].config.props.label.attr=axisAttrObj;labelArr[i].config.props.label.css=text.css;labelArr[i].config.value=tickVal}}};_proto._drawLabel=function _drawLabel(){var axis=this,axisConfig=axis.config,animationManager=axis.getFromEnv("animationManager"),chart=axis.getFromEnv("chart"),labels=axisConfig.labels,style=labels.style,i,j,axisContainer=axisConfig.axisContainer,id,mapArr=[],removeElementsArr,removeElem,textElement,axisComp=axis.components,labelIndexArr=axisComp.labelIndexArr,css={fontFamily:style.fontFamily,fontSize:style.fontSize,fontWeight:style.fontWeight,fontStyle:style.fontStyle,lineHeight:style.lineHeight},labelArrLen,ticksVal,labelArr,raiseEvent=function raiseEvent(event){return function(data){var ele=this;chart.plotEventHandler(ele,data,event)}},removeElements=function removeElements(arrOfId){for(i=0;i<arrOfId.length;++i){removeElem=axis.getGraphicalElement(arrOfId[i]);removeElem&&axis.removeGraphicalElement(removeElem)}};if(axisConfig.labels.isDraw){labelArr=axisComp.labels;axisContainer.css(css);labelArrLen=labelIndexArr.length;for(j=0;j<labelArrLen;j++){i=labelIndexArr[j];ticksVal=labelArr[i].config.value;id=ticksVal+LABEL_ID;textElement=axis.getGraphicalElement(id);mapArr.push(id);textElement=this.addGraphicalElement(id,animationManager.setAnimation({container:axisContainer,el:textElement||"text",attr:labelArr[i].config.props.label.attr,data:{value:ticksVal},component:this,label:"text",css:labelArr[i].config.props.label.css}));textElement.on("fc-click",raiseEvent("dataLabelClick")).hover(raiseEvent("dataLabelRollOver"),raiseEvent("dataLabelRollOut"));textElement.data(EVENTARGS,{link:style.labelLink,text:labelArr[i].config.props.label.attr.text,index:i})}removeElementsArr=(0,_diff.default)(axisConfig.labelMap,mapArr)}else{removeElementsArr=axisConfig.labelMap}axisConfig.labelMap=mapArr;removeElements(removeElementsArr)};_proto._getVMaxLabelDimention=function _getVMaxLabelDimention(){var axis=this,axisConfig=axis.config,chart=axis.getFromEnv("chart"),smartLabel=axis.getFromEnv("smartLabel"),numberFormatter=axis.getFromEnv("number-formatter"),labelStyle=axisConfig.labels.style,maxTextSize=0,divArr,divArrLen,maxTextDim,i,text,dimention,numberFormatterFn,curDiv;smartLabel.useEllipsesOnOverflow(chart.config.useEllipsesWhenOverflow);smartLabel.setStyle({fontSize:labelStyle.fontSize,fontFamily:labelStyle.fontFamily,lineHeight:labelStyle.lineHeight,fontWeight:labelStyle.fontWeight});if(axisConfig.isPercent){numberFormatterFn=numberFormatter.percentValue}else{numberFormatterFn=numberFormatter.xAxis}axisConfig.allTicks=divArr=logTicksMerge(axisConfig.ticks,axisConfig.minorTicks);divArrLen=divArr.length;for(i=0;i<divArrLen;i++){curDiv=divArr[i];text=""+numberFormatterFn.call(numberFormatter,curDiv);dimention=smartLabel.getOriSize(text);axis.components.labels[i]={config:{width:dimention.width,height:dimention.height,props:{label:{}}}};if(text.length>maxTextSize){maxTextDim=dimention;maxTextSize=text.length}}return maxTextDim};_proto._getHMaxLabelDimention=function _getHMaxLabelDimention(){return this._getVMaxLabelDimention()};_proto.getCleanValue=function getCleanValue(_num){var axis=this,num=_num,value=null;num=Math.abs(num);if(num>0){value=axis.getFromEnv("number-formatter").getCleanValue(num)}return value};return LogAxis}(_cartesian.default);LogAxis.prototype.getTrendLineLimits=_commonApi.getTrendLineLimits;var _default=exports.default=LogAxis;