@fusioncharts/charts
Version:
JavaScript Data Visualisation Library
1 lines • 7.25 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 _cartesianStack=_interopRequireDefault(require("../cartesian-stack"));var _lib=require("@fusioncharts/core/src/lib");var createGroup=function createGroup(groupName,parentContainer,manager){var animationManager=manager.getFromEnv("animationManager");return animationManager.setAnimation({el:"group",attr:{name:groupName},container:parentContainer,component:manager,label:"group"})};var MarimekkoStackgroup=function(_CartesianStackgroup){function MarimekkoStackgroup(){return _CartesianStackgroup.apply(this,arguments)||this}(0,_inheritsLoose2.default)(MarimekkoStackgroup,_CartesianStackgroup);var _proto=MarimekkoStackgroup.prototype;_proto.getType=function getType(){return"group"};_proto.getName=function getName(){return"marimekkoStackgroup"};_proto.getstackConf=function getstackConf(){return this.config.stackConf};_proto._setStackPosition=function _setStackPosition(){_CartesianStackgroup.prototype._setStackPosition.call(this);var manager=this,config=manager.config,stackPercentValues,stackConf=config.stackConf||(config.stackConf=[]),stackSumValue=config.stackValues,catObj,categories=manager.getFromEnv("categories")[0].category,numberFormatter=manager.getFromEnv("number-formatter"),positionStackConfig,sum=0,sumValue=0,sumPercent=0,k,len,x,xAxis=manager.getFromEnv("xAxis"),range=xAxis.getVisibleConfig(),xMin=range.minValue,xMax=range.maxValue,diff=xMax-xMin,tempX=xMin;for(k=0,len=stackSumValue.length;k<len;k++){sumValue+=stackSumValue[k]&&stackSumValue[k].positive||0}config.totalSumValue=sumValue;for(k=0;k<categories.length;k++){catObj=categories[k];if(catObj.widthpercent){sum+=numberFormatter.getCleanValue(catObj.widthpercent)}}if(+sum.toFixed(8)===100){sum=+sum.toFixed(8);config.setUserWidth=1}stackPercentValues=manager.getStackSumPercent();for(k=0,len=stackSumValue.length;k<len;k++){if(!(positionStackConfig=stackConf[k])){positionStackConfig=stackConf[k]={}}sumPercent=sumPercent+stackPercentValues[k]/100;x=stackPercentValues[k]/100*diff/2+tempX;tempX=sumPercent*diff+xMin;positionStackConfig.x=x;xAxis.updateTicksValues(k,{x:x})}};_proto.getStackSumPercent=function getStackSumPercent(){var manager=this,config=manager.config,stackSumValue=config.stackValues,totalSumValue=config.totalSumValue,i,numberFormatter=manager.getFromEnv("number-formatter"),categories=manager.getFromEnv("categories")[0].category,setUserWidth=config.setUserWidth,arr=[];for(i=0;i<stackSumValue.length;i++){if(setUserWidth){arr[i]=numberFormatter.getCleanValue(categories[i].widthpercent)}else{arr[i]=(stackSumValue[i]&&stackSumValue[i].positive||0)/totalSumValue*100}}return arr};_proto.draw=function draw(){_CartesianStackgroup.prototype.draw.call(this);this.drawLabel()};_proto.createContainer=function createContainer(){_CartesianStackgroup.prototype.createContainer.call(this);var manager=this,parent=manager.getLinkedParent();!manager.getContainer("commonLabelContainer")&&manager.addContainer("commonLabelContainer",createGroup("manager-commonLabelContainer",parent.getChildContainer("vcanvasLabelGroup"),manager))};_proto.drawLabel=function drawLabel(){var manager=this,config=manager.config,smartLabel=manager.getFromEnv("smartLabel"),animationManager=manager.getFromEnv("animationManager"),stackPercentValues=manager.getStackSumPercent(),chartAttr=manager.getFromEnv("chart-attrib"),jsonData,datasets=manager.getChildren("dataset"),dataset,data,stackConf=config.stackConf,xPos,yPos,index,commonLabelContainer=manager.getContainer("commonLabelContainer"),numberFormatter=manager.getFromEnv("number-formatter"),percentValue=0,formatedPercentValue,attr,chartConfig=manager.getFromEnv("chartConfig"),canvasBottom=chartConfig.canvasBottom,xAxis=manager.getFromEnv("xAxis"),inCanvasStyle=manager.getFromEnv("style"),style=chartConfig.dataLabelStyle,length=stackPercentValues.length,bBoxObj,labelEle,labelEleCheck,sumValues=config.stackValues,borderColor,bgColor,borderThickness,showXAxisPercentValues=chartConfig.showXAxisPercentValues,labels=manager.getGraphicalElement("commonLabels")||[],prevLabelLen=labels.length,i,j;smartLabel.setStyle(style);if(showXAxisPercentValues){bgColor=(0,_lib.pluck)(style.backgroundColor,"#ffffff");borderColor=(0,_lib.pluck)(style.borderColor===_lib.BLANKSTRING?"#"+inCanvasStyle.inCancolor:style.borderColor,"#000000");borderThickness=(0,_lib.pluck)(style.borderThickness,1);for(index=0;index<length-1;index++){if(!sumValues[index]){continue}percentValue+=stackPercentValues[index];formatedPercentValue=numberFormatter.percentValue(percentValue);xPos=xAxis.getPixel(stackConf[index].x)+stackConf[index].columnWidth/2;yPos=canvasBottom;labelEleCheck=labels[index];if(sumValues[index].positive===sumValues[index].negative){formatedPercentValue=_lib.BLANKSTRING;if(labelEleCheck){labelEleCheck.hide()}continue}attr={text:formatedPercentValue,fill:style.color,"text-bound":[bgColor,borderColor,borderThickness,style.borderPadding,style.borderRadius,style.borderDash],"line-height":style.lineHeight,visibility:_lib.visibleStr};bBoxObj=smartLabel.getOriSize(formatedPercentValue);yPos=yPos-bBoxObj.height/2-borderThickness;attr.x=xPos;attr.y=yPos;labelEleCheck&&labelEleCheck.show();labelEle=animationManager.setAnimation({el:labelEleCheck||"text",container:commonLabelContainer,attr:attr,label:"text",component:manager});if(!labelEleCheck){manager.addGraphicalElement("commonLabels",labelEle,true)}}for(var count=index;count<prevLabelLen;count++){labels[count].hide()}}for(i=0;i<datasets.length;i++){dataset=datasets[i];data=dataset.components.data;jsonData=dataset.config.JSONData;for(j=0;j<data.length;j++){data[j].config.finalTooltext=(0,_lib.parseTooltext)(data[j].config.finalTooltext,[111],{xAxisPercentValue:stackPercentValues[j]&&stackPercentValues[j].toPrecision(4)+"%"},data,chartAttr,jsonData)}}};_proto._getXpos=function _getXpos(index){var manager=this,xAxis=manager.getFromEnv("xAxis");return xAxis.getPixel(manager.config.stackConf[index].x)};_proto._setStackDimensions=function _setStackDimensions(){var manager=this,config=manager.config,k,stackSumValue=config.stackValues,categories=manager.getFromEnv("categories")[0].category,catObj,setUserWidth,len,sum=0,positionStackConfig,numberFormatter=manager.getFromEnv("number-formatter"),percentValue,stackPercentValues=manager.getStackSumPercent(),canvasWidth=manager.getFromEnv("canvasConfig").canvasWidth,stackConf=config.stackConf||(config.stackConf=[]);for(k=0;k<categories.length;k++){catObj=categories[k];if(catObj.widthpercent){sum+=numberFormatter.getCleanValue(catObj.widthpercent)}}if(+sum.toFixed(8)===100){setUserWidth=config.setUserWidth=1;sum=+sum.toFixed(8)}for(k=0,len=stackSumValue.length;k<len;k++){catObj=categories[k];if(!(positionStackConfig=stackConf[k])){positionStackConfig=stackConf[k]={}}if(setUserWidth){percentValue=numberFormatter.getCleanValue(catObj.widthpercent)/100}else{percentValue=stackPercentValues[k]/100}positionStackConfig.columnWidth=percentValue*canvasWidth}};return MarimekkoStackgroup}(_cartesianStack.default);var _default=exports.default=MarimekkoStackgroup;