@fusioncharts/core
Version:
JavaScript Data Visualisation Library
1 lines • 18.6 kB
JavaScript
;var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _axis=_interopRequireDefault(require("./axis"));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 _range=_interopRequireDefault(require("@fusioncharts/utils/src/scale-utils/array/range"));var _polar=_interopRequireDefault(require("./polar.animation"));var _dependencyManager=require("../dependency-manager");var _category=_interopRequireDefault(require("@fusioncharts/utils/src/scales/category"));var _commonApi=require("./common-api");var UNDEF,DASH_DEF="none",POINTER="pointer",NORMALSTRING="normal",EVENTARGS="eventArgs",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,math=Math,mathMin=math.min,pi=math.PI,pi2=2*pi;(0,_dependencyManager.addDep)({name:"polarAnimation",type:"animationRule",extension:_polar.default});var Polar=function(_Axis){function Polar(){var _this;_this=_Axis.call(this)||this;_this.config.scale=new _category.default;_this.config.referenceInfo=[];return _this}(0,_inheritsLoose2.default)(Polar,_Axis);var _proto=Polar.prototype;_proto.getName=function getName(){return"polarCategory"};_proto.__setDefaultConfig=function __setDefaultConfig(){_Axis.prototype.__setDefaultConfig.call(this);this.config.drawPlotBands=false;this.config.forceZeroTick=false};_proto.configureAttributes=function configureAttributes(rawAttr){var axis=this,axisConfig=axis.config,axisAttr=rawAttr,chart=axis.getFromEnv("chart"),jsonData=chart.getFromEnv("dataSource"),FCChartObj=jsonData.chart,colorM=axis.getFromEnv("color-manager");_Axis.prototype.configureAttributes.call(this,rawAttr);axisConfig.gridLineColor=(0,_lib.convertColor)((0,_lib.pluck)(axisAttr.radarSpikeColor,colorM.getColor("divLineColor")),(0,_lib.pluckNumber)(axisAttr.radarSpikeAlpha,axisAttr.radarInLineAlpha,colorM.getColor("divLineAlpha")));axisConfig.radarSpikeThickness=(0,_lib.pluckNumber)(FCChartObj.radarspikethickness,1)};_proto.setAxisDimention=function setAxisDimention(data){var axis=this,scale=axis.getScale(),axisConfig=axis.config,chart=axis.getFromEnv("chart"),chartConfig=chart.config,startAngle=axisConfig.startAngle||-pi/2,totalAngle=axisConfig.totalAngle||-pi2,endAngle=startAngle+totalAngle,rangeArr,category=axisConfig.tickValues.tickValue||[],anglePerSlice=totalAngle/(category.length||1),axisDimention=axisConfig.axisDimention||(axisConfig.axisDimention={});axisDimention.opposite=(0,_lib.pluckNumber)(data.opposite,axisDimention.opposite);axisDimention.centerX=(0,_lib.pluckNumber)(data.x,axisDimention.x,chartConfig.canvasLeft);axisDimention.centerY=(0,_lib.pluckNumber)(data.y,axisDimention.y,chartConfig.canvasTop);axisDimention.axisLength=pi2;endAngle-=anglePerSlice;rangeArr=axisConfig.clockWise?[endAngle,startAngle]:[startAngle,endAngle];scale.setRange(rangeArr)};_proto._parseCategoryPlotLine=function _parseCategoryPlotLine(){var axis=this,axisConfig=axis.config,tickValue=axisConfig.tickValues.tickValue,plotLineColor=axisConfig.gridLineColor,plotLineWidth=axisConfig.radarSpikeThickness,axisAttrObj,referenceInfo=axisConfig.referenceInfo,i,value;axisAttrObj={stroke:plotLineColor,"stroke-width":plotLineWidth};if(tickValue[0]&&(tickValue[0].x!==UNDEF||tickValue[0].y!==UNDEF)){return}if(axisConfig.lines.isDraw&&axisConfig.numDivLines){for(i=0;i<tickValue.length;++i){value=i;referenceInfo.push({from:value,type:"line",layer:1,attr:axisAttrObj})}}};_proto.placeAxis=function placeAxis(width,height){var axis=this,axisConfig=axis.config,chart=axis.getFromEnv("chart"),smartLabel=chart.getFromEnv("smartLabel"),labelStyle=axisConfig.labels.style,categories=chart.getFromEnv("dataSource").categories,axisValuePadding=axisConfig.labelPadding=(0,_lib.pluckNumber)(axisConfig.rawAttr.axisValuePadding,10),useEllipsesWhenOverflow=axisConfig.useEllipsesWhenOverflow,top=0,left=0,right=0,bottom=0,avalTop=height/2,avalBottom=height/2,avalRight=width/2,avalLeft=width/2,i,allCategories=axisConfig.tickValues&&axisConfig.tickValues.tickValue,categoryLength,singleCategory,smartLabelText,categoriesStyle,categoryStyle,smartLabelStyle,smartLabelStyleLineHeight,lineHeight;axisConfig.labels.isDraw=1;axisConfig.labels.drawNormalVal=1;axisConfig.labels.drawLimitVal=1;if(!axis.components){axis.components={}}axis.components.labels=[];if(axisConfig.showLabels){if(categories){var firstCategory=categories[0];categoriesStyle={fontFamily:firstCategory.font,fontSize:firstCategory.fontsize,color:firstCategory.fontcolor}}for(i=0,categoryLength=allCategories.length;i<categoryLength;i++){singleCategory=allCategories[i];categoryStyle={fontFamily:singleCategory.font,fontSize:singleCategory.fontsize,fontWeight:singleCategory.fontbold?"bold":NORMALSTRING,fontStyle:singleCategory.fontitalic?"italic":NORMALSTRING};smartLabelStyle={fontFamily:(0,_lib.pluck)(categoryStyle.fontFamily,categoriesStyle.fontFamily,labelStyle.fontFamily),fontSize:(0,_lib.pluck)(categoryStyle.fontSize,categoriesStyle.fontSize,this.computeFontSize(labelStyle.fontSizeWithUnit)+_lib.PXSTRING),fontWeight:(0,_lib.pluck)(categoryStyle.fontWeight,labelStyle.fontWeight),fontStyle:(0,_lib.pluck)(categoryStyle.fontStyle,labelStyle.fontStyle)};smartLabelStyleLineHeight=(0,_lib.setLineHeight)(smartLabelStyle);lineHeight=smartLabelStyleLineHeight.replace(/px/gi,"");smartLabel.useEllipsesOnOverflow(chart.config.useEllipsesWhenOverflow);smartLabel.setStyle(smartLabelStyle);singleCategory.oriLabel===UNDEF&&(singleCategory.oriLabel=singleCategory.label);if(i===0){smartLabelText=smartLabel.getSmartText(singleCategory.oriLabel,width,mathMin(lineHeight,avalTop),useEllipsesWhenOverflow);singleCategory.label=smartLabelText.text;singleCategory.tooltext=smartLabelText.tooltext;smartLabelText.width+=smartLabelText.width?axisValuePadding:0;smartLabelText.height+=smartLabelText.height?axisValuePadding:0;if(smartLabelText.height>top){top=smartLabelText.height;bottom=top}}else if(i===categoryLength/2){smartLabelText=smartLabel.getSmartText(singleCategory.oriLabel,width,mathMin(lineHeight,avalBottom),useEllipsesWhenOverflow);singleCategory.label=smartLabelText.text;singleCategory.tooltext=smartLabelText.tooltext;smartLabelText.width+=smartLabelText.width?axisValuePadding:0;smartLabelText.height+=smartLabelText.height?axisValuePadding:0;if(smartLabelText.height>bottom){bottom=smartLabelText.height}}else if(i<categoryLength/2){smartLabelText=smartLabel.getSmartText(singleCategory.oriLabel,avalLeft,smartLabelStyleLineHeight,useEllipsesWhenOverflow);singleCategory.label=smartLabelText.text;singleCategory.tooltext=smartLabelText.tooltext;smartLabelText.width+=smartLabelText.width?axisValuePadding:0;smartLabelText.height+=smartLabelText.height?axisValuePadding:0;if(smartLabelText.width>left){left=smartLabelText.width}}else{smartLabelText=smartLabel.getSmartText(singleCategory.oriLabel,avalRight,smartLabelStyleLineHeight,useEllipsesWhenOverflow);singleCategory.label=smartLabelText.text;singleCategory.tooltext=smartLabelText.tooltext;smartLabelText.width+=smartLabelText.width?axisValuePadding:0;smartLabelText.height+=smartLabelText.height?axisValuePadding:0;if(smartLabelText.width>right){right=smartLabelText.width}}axis.components.labels.push({config:{width:smartLabelText.width,height:smartLabelText.height,props:{label:{attr:{}}}}})}}else{for(i=0,categoryLength=allCategories.length;i<categoryLength;i++){axis.components.labels.push({config:{width:0,height:0,props:{label:{attr:{}}}}})}}return{top:top,left:left,right:right,bottom:bottom}};_proto._drawComponents=function _drawComponents(){var axis=this,axisConfig=axis.config;axisConfig.drawLabels&&axisConfig.hasCategory&&axis._drawCategory()};_proto.allocatePosition=function allocatePosition(){var axis=this,axisConfig=axis.config;axisConfig.drawLabels&&axisConfig.hasCategory&&axis._parseCategory()};_proto._parseCategory=function _parseCategory(){var axis=this,axisConfig=axis.config,chart=axis.getFromEnv("chart"),isOpposit=axisConfig.isOpposit,labels=axisConfig.labels,style=labels.style,categoryLabel=axis.config.categoryLabel||(axis.config.categoryLabel={}),categories=chart.getFromEnv("dataSource").categories,category=axisConfig.tickValues.tickValue,axisPadding=axisConfig.labelPadding,categoriesStyle={},categoryStyle={},centerX=axisConfig.axisDimention.centerX,centerY=axisConfig.axisDimention.centerY,i,max,min,curCategory,text,labelRotation,labelLineHeight,addCategoryPadding,css,axisAttrObj,fontColor,pos,curCategoryValue,posX,posY,radius,radiusXY,theta,axisScale=axis.getScale(),catStyle,id,textId;radius=(0,_lib.pluckNumber)(axisConfig.radius,0);min=0;max=category?category.length-1:0;if(axisConfig.labels.isDraw){if(categories){var cat0=categories[0];categoriesStyle.fontFamily=cat0.font;categoriesStyle.fontSize=cat0.fontsize;categoriesStyle.color=cat0.fontcolor}style.fontSize=this.computeFontSize(style.fontSizeWithUnit);for(i=min;i<=max;i++){curCategory=category[i];curCategoryValue=(0,_lib.pluckNumber)(curCategory.x,curCategory.y,i);if(!axisConfig.labels.drawNormalVal&&!(axisConfig.labels.drawLimitVal&&(i===min||curCategoryValue===max))){continue}if(!axisConfig.labels.drawNormalVal&&!(curCategoryValue===min||curCategoryValue===max)){continue}if(!axisConfig.labels.drawLimitVal&&(curCategoryValue===min||curCategoryValue===max)){continue}categoryStyle={fontFamily:(0,_lib.pluck)(curCategory.font,curCategory.labelfont),fontSize:(0,_lib.pluck)(curCategory.fontsize,curCategory.labelfontsize),fontWeight:(0,_lib.pluckNumber)(curCategory.fontbold,curCategory.labelfontbold,0)?"bold":UNDEF,fontStyle:(0,_lib.pluckNumber)(curCategory.fontitalic,curCategory.labelfontitalic,0)?"italic":UNDEF};fontColor=(0,_lib.convertColor)((0,_lib.pluck)(curCategory.fontcolor,curCategory.labelfontcolor,categoriesStyle.color,style.color),(0,_lib.pluckNumber)(curCategory.labelalpha,axisConfig.rawAttr.labelFontAlpha,100));css={fontFamily:(0,_lib.pluck)(categoryStyle.fontFamily,categoriesStyle.fontFamily,style.fontFamily),fontSize:(0,_lib.pluck)(categoryStyle.fontSize,categoriesStyle.fontSize,style.fontSize),fontWeight:(0,_lib.pluck)(categoryStyle.fontWeight,style.fontWeight),fontStyle:(0,_lib.pluck)(categoryStyle.fontStyle,style.fontStyle)};css.lineHeight=(0,_lib.setLineHeight)(css);if(css.lineHeight){labelLineHeight=css.lineHeight;if(labelLineHeight.indexOf("px")!==-1){labelLineHeight=labelLineHeight.replace(/px/i,"");labelLineHeight=parseFloat(labelLineHeight)}}theta=axisScale.getRangeValue(curCategoryValue);pos=(0,_polarUtil.polarToCartesian)(radius+axisPadding,theta);pos.x+=centerX;pos.y+=centerY;posX=pos.x;posY=pos.y;text=curCategory.label||"";if((0,_lib.pluckNumber)(curCategory.showlabel,1)===0||axisConfig.showLabels===0){text=""}addCategoryPadding=curCategory.labelPadding||0;axisAttrObj={fill:fontColor,"line-height":labelLineHeight,"font-size":style.fontSize,text:text,cursor:curCategory.link?POINTER:"default",x:posX,y:posY};if(addCategoryPadding){axisAttrObj.y+=addCategoryPadding}if(labelRotation){axisAttrObj["text-anchor"]=isOpposit?POSITION_START:POSITION_END;axisAttrObj["vertical-align"]=POSITION_MIDDLE}else{axisAttrObj["vertical-align"]=isOpposit?POSITION_BOTTOM:POSITION_TOP}if(i===0){axisAttrObj["text-anchor"]=POSITION_MIDDLE;axisAttrObj["vertical-align"]=POSITION_BOTTOM}else if(i===(max+1)/2){axisAttrObj["text-anchor"]=POSITION_MIDDLE;axisAttrObj["vertical-align"]=POSITION_TOP}else if(i<(max+1)/2){axisAttrObj["text-anchor"]=POSITION_END;axisAttrObj["vertical-align"]=POSITION_MIDDLE}else{axisAttrObj["text-anchor"]=POSITION_START;axisAttrObj["vertical-align"]=POSITION_MIDDLE}theta=axisScale.getRangeValue(curCategoryValue);radiusXY=(0,_polarUtil.polarToCartesian)(radius,theta);radiusXY.x+=centerX;radiusXY.y+=centerY;if(labels.shiftX){axisAttrObj.x+=labels.shiftX}if(labels.shiftY){axisAttrObj.y+=labels.shiftY}categoryLabel=axisConfig.categoryLabel=categoryLabel||{};textId="Label"+(id||i);categoryLabel[textId]=categoryLabel[textId]||{};categoryLabel[textId].config=categoryLabel[textId].config||{};categoryLabel[textId].config.labelBox=catStyle={label:text,lineHeight:css.lineHeight,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,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?DASH_DEF:style.borderDash};categoryLabel[textId].config.labelBox["text-bound"]=!text?[]:[(0,_lib.pluck)(catStyle.backgroundColor,style.backgroundColor),(0,_lib.pluck)(catStyle.borderColor,style.borderColor),(0,_lib.pluck)(catStyle.borderThickness,style.borderThickness),(0,_lib.pluck)(catStyle.borderPadding,style.borderPadding),(0,_lib.pluck)(catStyle.borderRadius,style.borderRadius),(0,_lib.pluck)(catStyle.borderDash,style.borderDash)];axisAttrObj["text-bound"]=categoryLabel[textId].config.labelBox["text-bound"];axis.components.labels[i].config.props.label.css=css;axis.components.labels[i].config.props.label.attr=Object.assign(axis.components.labels[i].config.props.label.attr,axisAttrObj)}}};_proto._drawCategory=function _drawCategory(){var axis=this,axisConfig=axis.config,chart=axis.getFromEnv("chart"),animationManager=chart.getFromEnv("animationManager"),labels=axisConfig.labels,style=labels.style,axisContainer=axisConfig.axisContainer,category=axisConfig.tickValues.tickValue,raiseEvent=function raiseEvent(event){return function(data){var ele=this;chart.plotEventHandler(ele,data,event)}},toolTipController=axis.getFromEnv("toolTipController"),counter=0,i,max,min,curCategory,textElement,textElemCheck,css,axisAttrObj,curCategoryValue,removeElem,id,textId,mapArr=[],removeElementsArr,removeElements=function removeElements(arrOfId){for(i=0;i<arrOfId.length;++i){removeElem=axis.getGraphicalElement(arrOfId[i]);removeElem&&axis.removeGraphicalElement(removeElem)}};min=0;max=category?category.length-1:0;if(axisConfig.labels.isDraw){for(i=min,counter=0;i<=max;i++){curCategory=category[i];curCategoryValue=(0,_lib.pluckNumber)(curCategory.x,curCategory.y,i);if(!axisConfig.labels.drawNormalVal&&!(axisConfig.labels.drawLimitVal&&(i===min||curCategoryValue===max))){continue}if(!axisConfig.labels.drawNormalVal&&!(curCategoryValue===min||curCategoryValue===max)){continue}if(!axisConfig.labels.drawLimitVal&&(curCategoryValue===min||curCategoryValue===max)){continue}textId="Label"+(id||i);mapArr.push(textId);axisAttrObj=axis.components.labels[i].config.props.label.attr;css=axis.components.labels[i].config.props.label.css;textElemCheck=axis.getGraphicalElement(textId);textElement=animationManager.setAnimation({css:css,el:textElemCheck||"text",attr:axisAttrObj,container:axisContainer,component:axis,label:"polarLabel"});if(axisConfig.showTooltip&&curCategory.tooltext){toolTipController.enableToolTip(textElement,curCategory.tooltext)}else{toolTipController.disableToolTip(textElement)}textElement.data(EVENTARGS,{link:curCategory.link||curCategory.labellink||style.labelLink,text:axisAttrObj.text,index:counter});if(!textElemCheck){axis.addGraphicalElement(textId,textElement);textElement.on("fc-click",raiseEvent("datalabelclick")).hover(raiseEvent("dataLabelRollOver"),raiseEvent("dataLabelRollOut"))}counter+=1}axisConfig.labelMap=axisConfig.labelMap||[];removeElementsArr=(0,_diff.default)(axisConfig.labelMap,mapArr)}else{removeElementsArr=mapArr}axisConfig.labelMap=mapArr;removeElements(removeElementsArr)};_proto.getTranslation=function getTranslation(){if(this)return 0};_proto.getReferenceInfo=function getReferenceInfo(){return this.config.referenceInfo};_proto.setVisibleConfig=function setVisibleConfig(minValue,maxValue){var axis=this,axisConfig=axis.config,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];axis.clearReferenceInfo();axis._parseReferenceVisuals();axis.fireEvent("visiblerangeset",{minValue:minValue,maxValue:maxValue});axis.asyncDraw();return true};_proto._parseReferenceVisuals=function _parseReferenceVisuals(){this.config.drawPlotlines&&this._parseCategoryPlotLine()};_proto.clearReferenceInfo=function clearReferenceInfo(){var axisConfig=this.config;axisConfig.referenceInfo=[]};_proto._setAxisRange=function _setAxisRange(data){var min=data.min,max=data.max,axisConfig=this.config,axisRange=axisConfig.axisRange,divGap=data.divGap,step;if(min>max){return}step=(max-min)/(axisConfig.categoryNumDivLines+1);this.getScale().setDomain([min,max]);axisConfig.ticks=(0,_range.default)(min,max,step).concat(max);axisConfig._allTicks=axisConfig.ticks.slice();axisRange.min=min;axisRange.max=max;axisRange.tickInterval=divGap||step;this.setVisibleConfig(axisRange.min,axisRange.max)};return Polar}(_axis.default);Polar.prototype.setTickValues=_commonApi.setTickValues;Polar.prototype.shiftLabels=_commonApi.shiftLabels;Polar.prototype._createContainer=_commonApi._createContainer;Polar.prototype.setAxisPadding=_commonApi.setAxisPadding;Polar.prototype.getPixel=_commonApi.getPixel;Polar.prototype.getLabel=_commonApi.getLabel;var _default=exports.default=Polar;