UNPKG

@froalacharts/charts

Version:

Froala Charts - A collection of interactive charts to build data visualizations for web and mobile applications.

1 lines 67.9 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports["default"]=exports._removePlots=void 0;var _assertThisInitialized2=_interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _lib=require("@froalacharts/core/src/lib");var _componentInterface=require("@froalacharts/core/src/component-interface");var _dependencyManager=require("@froalacharts/core/src/dependency-manager");var _index=_interopRequireDefault(require("./index.animation"));var _schedular=require("@froalacharts/core/src/schedular");var UNDEF,MOUSEOVER="mouseOver",MOUSEOUT="mouseOut",ROLLOVER="DataPlotRollOver",ROLLOUT="DataPlotRollOut",COLUMN_STR="column",DEFAULT_MIN_PLOTHEIGHT_FORVALUE=0,HTP=_lib.hasTouch?_lib.TOUCH_THRESHOLD_PIXELS:_lib.CLICK_THRESHOLD_PIXELS,dropHash=_lib.regex.dropHash,PLOTBORDERCOLOR="plotBorderColor",PLOTGRADIENTCOLOR="plotGradientColor",SHOWSHADOW="showShadow",POINTER="pointer",EVENTARGS="eventArgs",DEFAULT_CURSOR=_lib.preDefStr.DEFAULT,showHoverEffectStr=_lib.preDefStr.showHoverEffectStr,SETROLLOVERATTR=_lib.preDefStr.setRolloverAttrStr,SETROLLOUTATTR=_lib.preDefStr.setRolloutAttrStr,math=Math,mathMin=math.min,mathMax=math.max,mathAbs=math.abs,crispTop={top:true},crispRight={right:true},crispLeft={left:true},crispBottom={bottom:true},mathCeil=math.ceil,mathRound=math.round,_graphicsIterator=function _graphicsIterator(store,callback){if(store===void 0){store={}}if(typeof callback!=="function"){return}var _loop=function _loop(key){if(store.hasOwnProperty(key)){var elems=store[key];if(Array.isArray(elems)){elems.forEach((function(el){return callback(el,key)}))}else{store[key]&&callback(store[key],key)}}};for(var key in store){_loop(key)}},_rolloverResponseSetter=function _rolloverResponseSetter(chart,data,event,onlyHoverEffect,dataset){var dataGraphics=data.graphics,elem=dataGraphics&&dataGraphics.element,animationManager=chart.getFromEnv("animationManager"),elData=elem&&elem.getData();if(elData.draged!==true){if(elem&&elData.showHoverEffect!==0){animationManager.setAnimationState(MOUSEOVER);animationManager.setAnimation({el:elem,label:"rect",component:dataset,attr:elem.getData().setRolloverAttr})}!onlyHoverEffect&&elem&&chart.plotEventHandler(elem,event,ROLLOVER)}},_rolloutResponseSetter=function _rolloutResponseSetter(chart,data,event,onlyHoverEffect,dataset){var dataGraphics=data.graphics,elem=dataGraphics&&dataGraphics.element,animationManager=chart.getFromEnv("animationManager"),elData=elem&&elem.getData();if(elData.draged!==true){if(elem&&elData.showHoverEffect!==0){animationManager.setAnimationState(MOUSEOUT);animationManager.setAnimation({el:elem,label:"rect",component:dataset,attr:elem.getData().setRolloutAttr})}!onlyHoverEffect&&elem&&chart.plotEventHandler(elem,event,ROLLOUT)}},createGroup=function createGroup(groupName,parentContainer,dataset){var animationManager=dataset.getFromEnv("animationManager");return animationManager.setAnimation({el:"group",attr:{name:groupName},container:parentContainer,state:"appearing",component:dataset,label:"group"})},_removePlots=function _removePlots(removeDataArr,removeElem){if(removeDataArr===void 0){removeDataArr=[]}removeDataArr.forEach((function(removeData){return _graphicsIterator(removeData&&removeData.graphics,removeElem)}));removeDataArr.length=0};exports._removePlots=_removePlots;(0,_dependencyManager.addDep)({name:"columnAnimation",type:"animationRule",extension:_index["default"]});var ColumnDataset=function(_ComponentInterface){(0,_inheritsLoose2["default"])(ColumnDataset,_ComponentInterface);function ColumnDataset(){var _this;_this=_ComponentInterface.call(this)||this;var ds=(0,_assertThisInitialized2["default"])(_this);ds.components={};ds.components.removeDataArr=[];ds.__hideElem=function(el,type){ds._setRemoveAnim(el,type==="label"?"plotLabel":"rect")};ds.__removeElem=function(el,type){ds.__hideElem(el,type)};ds.config.primitiveType=COLUMN_STR;return _this}var _proto=ColumnDataset.prototype;_proto.getType=function getType(){return"dataset"};_proto.getName=function getName(){return"column"};_proto.__setDefaultConfig=function __setDefaultConfig(){_ComponentInterface.prototype.__setDefaultConfig.call(this);var config=this.config;config.showvalues=UNDEF;config.includeinlegend=1;config.plotfillalpha=UNDEF;config.plotfillangle=UNDEF;config.ratio=UNDEF};_proto.preConfigure=function preConfigure(datasetJSON){var dataSet=this;if(!datasetJSON){return false}dataSet.trimData(datasetJSON);dataSet.config.JSONData=datasetJSON;_ComponentInterface.prototype.preConfigure.call(this,datasetJSON)};_proto.setSkippingInfo=function setSkippingInfo(skipInfo){this.addToEnv("skipInfo",skipInfo||{plotsPerBin:1,drawOnlyMap:[],draw:[],hide:[],skippingApplied:false,dragHashMap:[]})};_proto.getSkippingInfo=function getSkippingInfo(){return this.getFromEnv("skipInfo")||{plotsPerBin:1,drawOnlyMap:[],draw:[],hide:[],skippingApplied:false,dragHashMap:[]}};_proto.configure=function configure(datasetJSON){if(!datasetJSON){return false}_ComponentInterface.prototype.configure.call(this,datasetJSON)};_proto.configureAttributes=function configureAttributes(){var dataSet=this,chart=dataSet.getFromEnv("chart"),conf=dataSet.config;dataSet.parseAttributes();dataSet._setConfigure();if(dataSet.getState("visible")&&conf.oldVisible===false){conf.appearing=true}conf.oldVisible=dataSet.getState("visible");dataSet._realTimeConfigure&&dataSet._realTimeConfigure();chart.config.hasLegend!==false&&chart.config.showLegend&&dataSet._addLegend();dataSet.ErrorValueConfigure&&dataSet.ErrorValueConfigure();dataSet.config.YForStackUpdated=false;dataSet.setState("dirty",true)};_proto.parseAttributes=function parseAttributes(){var dataSet=this,chart=dataSet.getFromEnv("chart"),yaxis=chart.getChildren("yAxis")[0],isInverseAxis=yaxis.config.isReverse,conf=dataSet.config,JSONData=dataSet.config.JSONData,singleSeries=chart.config.singleseries,chartConfig=chart.config,chartAttr=chart.getFromEnv("chart-attrib"),colorM=dataSet.getFromEnv("color-manager"),index=dataSet.getJSONIndex(),plotColor=conf.plotColor=colorM.getPlotColor(index),plotBorderDash=(0,_lib.pluckNumber)(JSONData.dashed,chartAttr.plotborderdashed,0),usePlotGradientColor=(0,_lib.pluckNumber)(chartAttr.useplotgradientcolor,1),plotDashLen,plotDashGap,plotBorderThickness,plotFillAlpha,isBar=chart.isBar,is3D=chart.config.is3D,isDual=chart.config.isdual;conf.showTextOutline=(0,_lib.pluckNumber)(chartAttr.textoutline,0);conf.dashed=plotBorderDash;if(isDual){conf.parentYAxis=(0,_lib.pluck)(JSONData.parentyaxis&&JSONData.parentyaxis.toLowerCase(),"p")==="s"?1:0}else{conf.parentYAxis=0}conf.maxValue=-Infinity;conf.minValue=Infinity;conf.defaultPadding={left:.5,right:.5};(0,_lib.parseConfiguration)(JSONData,conf,chartConfig,{data:true});conf.seriesname=(0,_lib.parseUnsafeString)(JSONData.seriesname);conf.showValues=(0,_lib.pluckNumber)(JSONData.showvalues,chartAttr.showvalues,1);conf.minplotheightforvalue=(0,_lib.pluckNumber)(JSONData.minplotheightforvalue,chartAttr.minplotheightforvalue,DEFAULT_MIN_PLOTHEIGHT_FORVALUE);conf.showplotborder=(0,_lib.pluckNumber)(chartAttr.showplotborder,is3D?0:1);plotDashLen=chartConfig.plotborderdashlen;plotDashGap=chartConfig.plotborderdashgap;conf.plotfillangle=(0,_lib.pluckNumber)(360-chartAttr.plotfillangle,isBar?180:isInverseAxis?90:270);conf.plotfillalpha=plotFillAlpha=(0,_lib.pluck)(JSONData.alpha,chartAttr.plotfillalpha,_lib.HUNDREDSTRING);conf.plotColor=plotColor=(0,_lib.pluck)(JSONData.color,plotColor);conf.legendSymbolColor=(0,_lib.getFirstColor)(conf.plotColor);conf.plotgradientcolor=(0,_lib.getDefinedColor)(chartAttr.plotgradientcolor,colorM.getColor(PLOTGRADIENTCOLOR));!usePlotGradientColor&&(conf.plotgradientcolor="");conf.plotborderalpha=(0,_lib.pluck)(chartAttr.plotborderalpha,plotFillAlpha,_lib.HUNDREDSTRING);conf.plotbordercolor=(0,_lib.pluck)(chartAttr.plotbordercolor,is3D&&!singleSeries?"#ffffff":colorM.getColor(PLOTBORDERCOLOR));conf.plotborderdashstyle=plotBorderDash?(0,_lib.getDashStyle)(plotDashLen,plotDashGap,plotBorderThickness):"none";conf.showShadow=is3D?(0,_lib.pluckNumber)(chartAttr.showshadow,1):(0,_lib.pluckNumber)(chartAttr.showshadow,colorM.getColor(SHOWSHADOW));conf.definedGroupPadding=mathMax(chartConfig.plotSpacePercent,0);conf.includeinlegend=(0,_lib.pluckNumber)(JSONData.includeinlegend,conf.seriesname?1:0);dataSet.setState("visible",(0,_lib.pluckNumber)(JSONData.visible,!Number(JSONData.initiallyhidden),1)===1);if(dataSet.getState("visible")===true){dataSet._conatinerHidden=false}else{dataSet._containerHidden=true}conf.legendInteractivity=false;dataSet.setState("visible",(0,_lib.pluckNumber)(dataSet.getState("visible"),conf.JSONData.visible,!Number(conf.JSONData.initiallyhidden),1)===1)};_proto.trimData=function trimData(datasetJSON){if(!this.components&&this.components.data&&this.components.data.length){return}var dataSet=this,comps=dataSet.components,config=dataSet.config,context=config&&config.context,isRealTime=dataSet.getFromEnv("chart").isRealTime,prevCatlen=context&&context.prevCatlen,xAxis=dataSet.getFromEnv("xAxis"),currCatLen=isRealTime?0:xAxis.getTicksLen(),catDiff=prevCatlen-currCatLen,prevData=comps&&comps.data,prevDataLength=prevData&&prevData.length,currDataLength=datasetJSON.data&&datasetJSON.data.length||0,dataDiff=prevDataLength-currDataLength,diff,startIndex;if(catDiff>dataDiff){diff=catDiff;startIndex=currCatLen}else{diff=dataDiff;startIndex=currDataLength}if(diff>0){this.removeData(startIndex,diff,false)}};_proto.hidePlots=function hidePlots(){var dataSet=this,components=dataSet.components,dataStore=components.data,dataObj,skipInfo=dataSet.getSkippingInfo(),hideArray=skipInfo.hide,hideLabelArray=skipInfo.hideLabel;hideArray.forEach((function(v){dataObj=dataStore[v];if(dataObj&&dataObj.graphics){_graphicsIterator(dataObj.graphics,dataSet.__removeElem);dataObj&&(dataObj.graphics={})}}));hideLabelArray.forEach((function(v){dataObj=dataStore[v];if(dataObj&&dataObj.graphics){_graphicsIterator(dataObj.graphics,dataSet.__removeElem);dataObj&&(dataObj.graphics={})}}))};_proto._setConfigure=function _setConfigure(newDataset,newIndex){var dataSet=this,chart=dataSet.getFromEnv("chart"),chartConfig=chart.config,conf=dataSet.config,xAxis=dataSet.getFromEnv("xAxis"),isRealTime=chart.isRealTime,numDisplaySets=chartConfig.realTimeConfig&&chartConfig.realTimeConfig.numDisplaySets,categories=dataSet.getFromEnv("dataSource").categories&&dataSet.getFromEnv("dataSource").categories[0]&&dataSet.getFromEnv("dataSource").categories[0].category,catLen=conf.initCatLen=isRealTime?categories&&Array.isArray(categories)&&categories.filter((function(data){return!data.vline})).length||0:xAxis.getTicksLen(),JSONData=conf.JSONData||[],setDataArr=newDataset||JSONData.data,newDataSetLen=newDataset&&newDataset.data.length,len,showplotborder=conf.showplotborder,plotBorderThickness=chartConfig.plotborderthickness,setData,plotIndex,dataObj,dataStore=dataSet.components.data,isDrag=chartConfig.isDrag,i,j,shiftIndex,tempIndex,skippingInfo=dataSet.getSkippingInfo&&dataSet.getSkippingInfo(),configureOnly=skippingInfo&&skippingInfo.draw||[],skippingApplied=skippingInfo&&skippingInfo.skippingApplied;shiftIndex=newDataSetLen===UNDEF&&catLen>numDisplaySets?catLen-numDisplaySets:0;len=isRealTime?(0,_lib.pluckNumber)(newDataSetLen,catLen):Math.min(catLen,setDataArr&&setDataArr.length);chartConfig.dragTolerance=isDrag?(showplotborder&&plotBorderThickness>5?plotBorderThickness/2+1:5)+HTP:0;if(!dataStore){dataStore=dataSet.components.data=[]}if(skippingApplied){len=configureOnly.length}for(j=shiftIndex;j<len;j++){i=configureOnly[j]||j;if(newDataset){setData=newDataset&&newDataset.data[i]||{};if(newIndex!==UNDEF){tempIndex=newIndex+i;dataObj=dataStore[tempIndex]}else{tempIndex=dataStore.length-len+i;dataObj=dataStore[tempIndex]}plotIndex=tempIndex}else{setData=setDataArr&&setDataArr[i]||{};i=i-shiftIndex;dataObj=dataStore[i];plotIndex=i}if(!dataObj){dataObj=dataStore[plotIndex]={}}if(!dataObj.config){dataObj.config={};dataObj.graphics={}}dataSet._plotConfigure(plotIndex,setData,newDataSetLen);tempIndex&&tempIndex++}if(skippingApplied){dataSet.addJob("configureRestID",(function(){dataSet._configureRestData()}),_schedular.priorityList.postRender)}};_proto._configureRestData=function _configureRestData(){var dataSet=this,conf=dataSet.config,JSONData=dataSet.config.JSONData,setDataArr=JSONData.data,chartAttr=dataSet.getFromEnv("chart-attrib"),xAxis=dataSet.getFromEnv("xAxis"),catLen=xAxis.getTicksLen(),len=catLen,setData,plotIndex,dataObj,skipInfo=dataSet.getSkippingInfo&&dataSet.getSkippingInfo(),drawOnlyMap=skipInfo.drawOnlyMap,dataStore=dataSet.components.data,i,tempIndex;if(!dataStore){dataStore=dataSet.components.data=[]}conf.maxValue=-Infinity;conf.minValue=Infinity;for(i=0;i<len;i++){if(drawOnlyMap[i]){continue}dataObj=dataStore[i];setData=setDataArr&&setDataArr[i]||{};plotIndex=i;if(setData.tooltext!==UNDEF){setData.tooltext=(0,_lib.parseTooltext)(setData.tooltext,[3],{label:setData.label},setData,chartAttr,JSONData)}if(!dataObj){dataObj=dataStore[i]={}}if(!dataObj.config){dataStore[i].config={}}dataSet._plotConfigure(plotIndex,setData);tempIndex&&tempIndex++}};_proto._plotConfigure=function _plotConfigure(i,setData,newDataSetLen){var dataSet=this,chart=dataSet.getFromEnv("chart"),chartConfig=chart.config,conf=dataSet.config,JSONData=conf.JSONData,singleSeries=chart.config.singleseries,yAxis=dataSet.getFromEnv("yAxis"),xAxis=dataSet.getFromEnv("xAxis"),dataStore=dataSet.components.data,dataObj=dataStore[i],chartAttr=chart.getFromEnv("dataSource").chart,colorM=dataSet.getFromEnv("color-manager"),showplotborder=conf.showplotborder,plotColor=conf.plotColor,showTooltip=chartConfig.showtooltip,yAxisName=chartConfig.yaxisname,xAxisName=chartConfig.xaxisname,tooltipSepChar=chartConfig.tooltipsepchar,seriesNameInTooltip=chartConfig.seriesnameintooltip,formatedVal,parserConfig,setTooltext,seriesname,macroIndices,tempPlotfillAngle,toolText,plotDashLen=chartConfig.plotborderdashlen,plotDashGap=chartConfig.plotborderdashgap,plotBorderThickness=chartConfig.plotborderthickness,isRoundEdges=(0,_lib.pluckNumber)(chartConfig.useroundedges,0),showHoverEffect=chartConfig.plothovereffect,plotfillAngle=conf.plotfillangle,plotFillAlpha,plotFillRatio,plotBorderAlpha,plotBorderDashStyle,initailPlotBorderDashStyle=conf.plotborderdashstyle,setValue,config=dataObj.config,label,colorArr,hoverColor,hoverAlpha,hoverGradientColor,hoverRatio,hoverAngle,hoverBorderColor,hoverBorderAlpha,hoverBorderThickness,hoverBorderDashed,hoverBorderDashGap,hoverBorderDashLen,hoverDashStyle,hoverColorArr,toolTipValue,setDisplayValue,isBar=chart.isBar,is3D=chart.config.is3D,setDataDashed,setDataPlotDashLen,setDataPlotDashGap,origLabel,labelObj,use3dlighting=chartConfig.use3dlighting,numDisplaySets=chartConfig.realTimeConfig&&chartConfig.realTimeConfig.numDisplaySets,diffLen=numDisplaySets-conf.initCatLen,additive=numDisplaySets&&diffLen>=0?diffLen:0,useDataPlotColorForLabels=chartConfig.usedataplotcolorforlabels;labelObj=xAxis.getLabel(newDataSetLen?i-newDataSetLen:additive+i);config.origLabel=origLabel=(0,_lib.getValidValue)((0,_lib.parseUnsafeString)(labelObj.label));label=config.label=(0,_lib.getValidValue)((0,_lib.parseUnsafeString)(labelObj.tooltext))||origLabel;if(setData.tooltext!==UNDEF){setData.tooltext=(0,_lib.parseTooltext)(setData.tooltext,[3],{label:labelObj.label},setData,chartAttr,JSONData)}config.dataLabelStyle=dataSet._configureDataLabelStyle(setData);config.minplotheightforvalue=(0,_lib.pluckNumber)(setData.minplotheightforvalue,conf.minplotheightforvalue);config.showValue=(0,_lib.pluckNumber)(setData.showvalue,conf.showValues);config.givenPlotShowValue=(0,_lib.pluckNumber)(setData.showvalue);config.setValue=setValue=yAxis.getCleanValue(setData.value,(0,_lib.pluckNumber)(chartConfig.stack100percent));config.setLink=(0,_lib.pluck)(setData.link);config.toolTipValue=toolTipValue=yAxis.dataLabels(setValue);config.setDisplayValue=setDisplayValue=(0,_lib.parseUnsafeString)(setData.displayvalue);config.displayValue=(0,_lib.pluck)(setDisplayValue,toolTipValue);config.dashed=setDataDashed=(0,_lib.pluckNumber)(setData.dashed,conf.dashed);setDataPlotDashLen=(0,_lib.pluckNumber)(setData.dashlen,plotDashLen);setDataPlotDashGap=plotDashGap=(0,_lib.pluckNumber)(setData.dashgap,plotDashGap);if(setValue!==null){conf.maxValue=mathMax(conf.maxValue,setValue);conf.minValue=mathMin(conf.minValue,setValue)}config.plotBorderDashStyle=plotBorderDashStyle=setDataDashed===1?(0,_lib.getDashStyle)(setDataPlotDashLen,setDataPlotDashGap):setDataDashed===0?"none":initailPlotBorderDashStyle;if(singleSeries){plotColor=colorM.getPlotColor((0,_lib.pluckNumber)(i-newDataSetLen,i));plotColor=(0,_lib.pluck)(setData.color,plotColor);useDataPlotColorForLabels&&xAxis.updateTicksValues(i,{labelfontcolor:(0,_lib.convertColor)(plotColor)});plotBorderAlpha=(0,_lib.pluck)(setData.alpha,setData.borderalpha,conf.plotborderalpha,plotFillAlpha).toString()}else{plotColor=(0,_lib.pluck)(setData.color,conf.plotColor);plotBorderAlpha=(0,_lib.pluck)(setData.alpha,conf.plotborderalpha,plotFillAlpha).toString()}plotFillRatio=(0,_lib.pluck)(setData.ratio,conf.ratio);plotFillAlpha=(0,_lib.pluck)(setData.alpha,conf.plotfillalpha);config.plotFillAlpha=plotFillAlpha;config.plotBorderAlpha=plotBorderAlpha;config.shadow={opacity:conf.showShadow?plotFillAlpha/100:0};if(setValue<0&&!isRoundEdges){tempPlotfillAngle=conf.plotfillangle;plotfillAngle=isBar?180-plotfillAngle:360-plotfillAngle}config.colorArr=colorArr=(0,_lib.getColumnColor)(plotColor+","+conf.plotgradientcolor,plotFillAlpha,plotFillRatio,plotfillAngle,isRoundEdges,conf.plotbordercolor,plotBorderAlpha,isBar?1:0,!!is3D);config.originalPlotColor=plotColor;if(showHoverEffect!==0){hoverColor=(0,_lib.pluck)(setData.hovercolor,JSONData.hovercolor,chartAttr.plotfillhovercolor,chartAttr.columnhovercolor,plotColor);hoverAlpha=(0,_lib.pluck)(setData.hoveralpha,JSONData.hoveralpha,chartAttr.plotfillhoveralpha,chartAttr.columnhoveralpha,plotFillAlpha);hoverGradientColor=(0,_lib.pluck)(setData.hovergradientcolor,JSONData.hovergradientcolor,chartAttr.plothovergradientcolor,conf.plotgradientcolor);!hoverGradientColor&&(hoverGradientColor="");hoverRatio=(0,_lib.pluck)(setData.hoverratio,JSONData.hoverratio,chartAttr.plothoverratio,plotFillRatio);hoverAngle=(0,_lib.pluckNumber)(360-setData.hoverangle,360-JSONData.hoverangle,360-chartAttr.plothoverangle,plotfillAngle);hoverBorderColor=(0,_lib.pluck)(setData.borderhovercolor,JSONData.borderhovercolor,chartAttr.plotborderhovercolor,conf.plotbordercolor);hoverBorderAlpha=(0,_lib.pluck)(setData.borderhoveralpha,JSONData.borderhoveralpha,chartAttr.plotborderhoveralpha,chartAttr.plotfillhoveralpha,chartAttr.columnhoveralpha,plotBorderAlpha,plotFillAlpha);hoverBorderThickness=(0,_lib.pluckNumber)(setData.borderhoverthickness,JSONData.borderhoverthickness,chartAttr.plotborderhoverthickness,conf.showplotborder&&plotBorderThickness);hoverBorderDashed=setData.borderhoverdashed||JSONData.borderhoverdashed||chartAttr.plotborderhoverdashed;hoverBorderDashGap=(0,_lib.pluckNumber)(setData.borderhoverdashgap,JSONData.borderhoverdashgap,chartAttr.plotborderhoverdashgap,plotDashLen);hoverBorderDashLen=(0,_lib.pluckNumber)(setData.borderhoverdashlen,JSONData.borderhoverdashlen,chartAttr.plotborderhoverdashlen,plotDashGap);hoverDashStyle=hoverBorderDashed!==UNDEF?Number(hoverBorderDashed)?(0,_lib.getDashStyle)(hoverBorderDashLen,hoverBorderDashGap):"":plotBorderDashStyle;if(chartConfig.drawTrendRegion&&!is3D||showHoverEffect===1&&hoverColor===plotColor){hoverColor=(0,_lib.getLightColor)(hoverColor,70)}hoverColorArr=(0,_lib.getColumnColor)(hoverColor+","+hoverGradientColor,hoverAlpha,hoverRatio,hoverAngle,isRoundEdges,hoverBorderColor,hoverBorderAlpha.toString(),isBar?1:0,!!is3D);config.setRolloutAttr={fill:!is3D?(0,_lib.toRaphaelColor)(colorArr[0]):[(0,_lib.toRaphaelColor)(colorArr[0]),!use3dlighting],stroke:showplotborder?(0,_lib.toRaphaelColor)(colorArr[1]):_lib.TRACKER_FILL,"stroke-width":showplotborder?plotBorderThickness:0,"stroke-dasharray":plotBorderDashStyle};config.setRolloverAttr={fill:!is3D?(0,_lib.toRaphaelColor)(hoverColorArr[0]):[(0,_lib.toRaphaelColor)(hoverColorArr[0]),!use3dlighting],stroke:hoverBorderColor?(0,_lib.toRaphaelColor)(hoverColorArr[1]):_lib.TRACKER_FILL,"stroke-width":hoverBorderThickness,"stroke-dasharray":hoverDashStyle};config.hoverColor=hoverColor;config.hoverAlpha=hoverAlpha;config.hoverBorderColor=hoverBorderColor;config.hoverBorderAlpha=hoverBorderAlpha}formatedVal=config.toolTipValue;config.origToolText=setTooltext=(0,_lib.getValidValue)((0,_lib.parseUnsafeString)((0,_lib.pluck)(setData.tooltext,JSONData.plottooltext,chartAttr.plottooltext),false));if(!showTooltip){toolText=false}else{if(formatedVal===null){toolText=false}else if(setTooltext!==UNDEF){macroIndices=[1,2,3,4,5,6,7];parserConfig={yaxisName:yAxisName,xaxisName:xAxisName,formattedValue:formatedVal,label:label};toolText=(0,_lib.parseTooltext)(setTooltext,macroIndices,parserConfig,setData,chartAttr,JSONData)}else{if(seriesNameInTooltip){seriesname=(0,_lib.getFirstValue)(JSONData&&JSONData.seriesname)}toolText=seriesname?seriesname+tooltipSepChar:"";toolText+=label?label+tooltipSepChar:""}}config.toolText=toolText;config.setTooltext=toolText;tempPlotfillAngle&&(plotfillAngle=tempPlotfillAngle);config._x=i;config._y=setValue};_proto.updateYForStack=function updateYForStack(){var dataSet=this,chartConfig=dataSet.getFromEnv("chartConfig"),showPercentValues=(0,_lib.pluckNumber)(chartConfig.showpercentvalues),showPercentInToolTip=(0,_lib.pluckNumber)(chartConfig.showpercentintooltip),JSONData=dataSet.config.JSONData,chartAttr=dataSet.getFromEnv("chart-attrib"),xAxis=dataSet.getFromEnv("xAxis"),dataObj,config,i,j,len=xAxis.getTicksLen(),components=dataSet.components,dataStore=components.data,setTooltext,stackValues=dataSet.getFromEnv("stackValues"),stackSumValue,negativeValueFactor=showPercentValues||showPercentInToolTip?-1:1,skipInfo=dataSet.getSkippingInfo&&dataSet.getSkippingInfo(),skippingApplied=skipInfo&&skipInfo.skippingApplied,plotDrawArray=skipInfo&&skipInfo.draw||[],plotDrawArrayLength=plotDrawArray&&plotDrawArray.length;if(skippingApplied){len=plotDrawArrayLength}for(j=0;j<len;j++){i=plotDrawArray[j]||j;dataObj=dataStore[i];config=dataObj&&dataObj.config;if(dataObj===UNDEF){continue}setTooltext=(0,_lib.getValidValue)((0,_lib.parseUnsafeString)((0,_lib.pluck)(config.origToolText,JSONData.plottooltext,chartAttr.plottooltext),false));stackSumValue=stackValues[i]&&stackValues[i].positive+negativeValueFactor*stackValues[i].negative||0;config._b=dataSet._parseValues(i,config._b,stackSumValue,setTooltext);if(chartConfig.stack100percent){config._y=config.value+config._b}}};_proto._parseValues=function _parseValues(index,prevY,stackSumValue,setTooltext){var dataSet=this,previousY=prevY,chartConfig=dataSet.getFromEnv("chartConfig"),config=dataSet.components.data[index].config,showPercentValues=(0,_lib.pluckNumber)(chartConfig.showpercentvalues),showPercentInToolTip=(0,_lib.pluckNumber)(chartConfig.showpercentintooltip),visible=dataSet.getState("visible"),setValue=config.setValue,stack100Percent=(0,_lib.pluckNumber)(chartConfig.stack100percent),numberFormatter=dataSet.getFromEnv("number-formatter"),yAxis=dataSet.getFromEnv("yAxis"),setDisplayValue=config.setDisplayValue,formatedPercentValue,percentValue;percentValue=(visible?setValue||0:0)/(stackSumValue||1)*100;formatedPercentValue=numberFormatter.percentValue(percentValue);if(stack100Percent){config.value=percentValue;previousY=(previousY||0)/(stackSumValue||1)*100}if(showPercentInToolTip){config.toolTipValue=formatedPercentValue}if(showPercentValues){!setDisplayValue&&(config.displayValue=formatedPercentValue)}if(setTooltext){config.toolText=(0,_lib.parseTooltext)(config.setTooltext,[14,24,25,112],{percentValue:formatedPercentValue,sum:yAxis.dataLabels(stackSumValue),unformattedSum:stackSumValue})}return previousY};_proto._addLegend=function _addLegend(){var dataset=this,chart=dataset.getFromEnv("chart"),isBar=chart.isBar,chartAttr=dataset.getFromEnv("chart-attrib"),fillColor,lightColor,config,legendItem,conf=dataset.config,color=(0,_lib.getFirstColor)(conf.legendSymbolColor),legend=dataset.getFromEnv("legend"),use3DLighting=(0,_lib.pluckNumber)(chartAttr.use3dlighting,chartAttr.useplotgradientcolor,1),strokeColor=(0,_lib.getLightColor)(color,60).replace(dropHash,_lib.HASHSTRING);if(conf.includeinlegend){if(use3DLighting){lightColor=(0,_lib.getLightColor)(color,40);fillColor={FCcolor:{color:color+","+color+","+lightColor+","+color+","+color,ratio:"0,30,30,30,10",angle:isBar?0:270,alpha:"100,100,100,100,100"}}}else{fillColor={FCcolor:{color:color,angle:isBar?0:270,ratio:"0",alpha:"100"}}}legendItem=legend.getItem(dataset.config.legendItemId);config={type:dataset.getName(),index:dataset.getJSONIndex(),label:(0,_lib.getFirstValue)(dataset.config.JSONData.seriesname)};if(!legendItem){dataset.config.legendItemId=legend.createItem(dataset);legendItem=legend.getItem(dataset.config.legendItemId);dataset.addExtEventListener("fc-click",(function(){legendItem.itemClickFn()}),legendItem)}legendItem.configure(config);legendItem.setStateCosmetics("default",{symbol:{fill:(0,_lib.toRaphaelColor)(fillColor),rawFillColor:color,stroke:(0,_lib.toRaphaelColor)(strokeColor)}});if(!dataset.getState("visible")){legendItem.setLegendState("hidden")}else{legendItem.removeLegendState("hidden")}}else if(dataset.config.legendItemId){legend.disposeItem(dataset.config.legendItemId)}};_proto.legendInteractivity=function legendInteractivity(legendItem){var dataSet=this,legend=legendItem.getLinkedParent(),chart=legend.getFromEnv("chart"),visible=dataSet.getState("visible"),dsConfig=dataSet.config;chart.getFromEnv("animationManager").setAnimationState("legendInteraction");dsConfig.legendInteractivity=true;visible?dataSet.hide():dataSet.show();if(_lib.isFirefox){var plotGroup=chart.getChildContainer("plotGroup");plotGroup.attrs["clip-rect"]&&plotGroup.attr({"clip-rect":plotGroup.attrs["clip-rect"]})}if(!dsConfig.drawnEvtListenerAttached){dsConfig.drawnEvtListenerAttached=true;dataSet.addEventListener("drawn",(function(){dsConfig.legendInteractivity=false}))}};_proto.createPinElem=function createPinElem(){var dataset=this,chart=dataset.getFromEnv("chart"),group=arguments[1].group,dataStore=dataset.components.data,element,pinElems=dataset.graphics.pinElems||(dataset.graphics.pinElems=[]),columnGroup=dataset.getLinkedParent().getChildContainer().columnVcanvasGroup,i,pinEl,dataObj;for(i=pinElems.length-1;i>=0;i--){pinElems[i].remove();pinElems.pop()}if(dataset.getState("visible")){for(i=dataset.config.scrollMinVal;i<dataset.config.scrollMaxVal;i++){dataObj=dataStore[i];if(dataObj&&dataObj.graphics){element=dataObj.graphics.element;pinEl=element.clone().attr({transform:["T",-(chart.config._visx+mathAbs(columnGroup.transform()[0][1])),-chart.config.canvasBottom]});group.appendChild(pinEl);pinElems.push(pinEl)}}}};_proto._checkPointerOverColumn=function _checkPointerOverColumn(pX,chartX,chartY){var dataset=this,chart=dataset.getFromEnv("chart"),chartConfig=chart.config,plotBorderThickness=chartConfig.plotborderthickness,showPlotBorder=chartConfig.showplotborder,components=dataset.components,dataStore=components.data,pointObj,pY,dx,dy,hovered,halfPlotBorderThickness,lenDataStore=dataStore&&dataStore.length,i,heightTolerance=0,widthTolerance=0,numBin,binStrtIndex,binStopIndex,dragTolerance=chartConfig.dragTolerance||0,skipInfo=dataset.getSkippingInfo&&dataset.getSkippingInfo(),plotsPerBin=skipInfo.plotsPerBin;numBin=mathCeil(pX/plotsPerBin);binStrtIndex=(numBin-1)*plotsPerBin+1;binStopIndex=binStrtIndex+plotsPerBin-1;binStopIndex=binStopIndex<lenDataStore?binStopIndex:lenDataStore;for(i=binStopIndex;i>=binStrtIndex;i--){pointObj=dataStore[i];if(!pointObj){return}if(pointObj._height<HTP){heightTolerance=HTP}if(pointObj._width<HTP){widthTolerance=HTP}if(!pointObj._xPos&&!pointObj._yPos){continue}pY=pointObj.config.setValue;if(showPlotBorder&&plotBorderThickness!==UNDEF){halfPlotBorderThickness=plotBorderThickness/2}else{plotBorderThickness=halfPlotBorderThickness=0}if(pY!==null){dx=chartX-pointObj._xPos+halfPlotBorderThickness;dy=chartY-pointObj._yPos+halfPlotBorderThickness+(pY>=0?dragTolerance:0);hovered=dx>=-widthTolerance/2&&dx<=(widthTolerance||pointObj._width)+plotBorderThickness&&dy>=-heightTolerance/2&&dy<=(heightTolerance||pointObj._height)+plotBorderThickness+(pY<0?2*dragTolerance:dragTolerance);if(hovered){return{pointIndex:i,hovered:hovered,pointObj:dataStore[i]}}}}};_proto._getHoveredPlot=function _getHoveredPlot(chrtX,chrtY){var dataset=this,chartX=chrtX,chartY=chrtY,chart=dataset.getFromEnv("chart"),isBar=chart.isBar,xAxis=dataset.getFromEnv("xAxis"),x,pX;if(isBar){chartY+=xAxis.getTranslation()}else{chartX+=xAxis.getTranslation()}x=xAxis.getValue(isBar?chartY:chartX);pX=Math.round(x);return pX-x>0?dataset._checkPointerOverColumn(pX,chartX,chartY)||dataset._checkPointerOverColumn(pX-1,chartX,chartY):dataset._checkPointerOverColumn(pX+1,chartX,chartY)||dataset._checkPointerOverColumn(pX,chartX,chartY)};_proto.getPlotInCategoryAt=function getPlotInCategoryAt(chartX,chartY){if(chartX===void 0){chartX=0}if(chartY===void 0){chartY=0}var plots=this.components.data,xAxis=this.getFromEnv("xAxis"),yAxis=this.getFromEnv("yAxis"),xTranslation=xAxis.getTranslation()||0,yTranslation=yAxis.getTranslation()||0,isDatasetVisible=this.getState("visible"),xCoords=chartX+xTranslation,yCoords=chartY+yTranslation,foundPlot,categoryAxis,isAxisVertical,hoveredCategoryIndex,hoveredPlotInfo;if(xAxis.getName()==="category"&&xAxis.config.hasCategory){categoryAxis=xAxis}else if(yAxis.getName()==="category"&&yAxis.config.hasCategory){categoryAxis=yAxis}else{return false}isAxisVertical=categoryAxis.config.isVertical;if(isAxisVertical===null||typeof isAxisVertical==="undefined")return false;hoveredCategoryIndex=Math.round(categoryAxis.getValue(isAxisVertical?yCoords:xCoords));foundPlot=plots[hoveredCategoryIndex];hoveredPlotInfo=this._getHoveredPlot(chartX,chartY);if(isDatasetVisible&&hoveredPlotInfo){return hoveredPlotInfo}else if(isDatasetVisible&&foundPlot){return{pointIndex:foundPlot._index,hovered:false,pointObj:foundPlot}}return false};_proto._decideTooltipType=function _decideTooltipType(plotIndex,e){var dataset=this,chart=dataset.getFromEnv("chart"),drawTrendRegion=chart.config.drawTrendRegion,components=dataset.components,toolTipController=dataset.getFromEnv("toolTipController"),dataStore=components.data,data=dataStore[plotIndex],toolText=data&&(data.config.finalTooltext||data.config.toolText),currentToolTip=dataset.config.currentToolTip,originalEvent=e.originalEvent;if(toolText&&!drawTrendRegion){if(currentToolTip){toolTipController.draw(originalEvent,toolText,currentToolTip)}else{currentToolTip=dataset.config.currentToolTip=toolTipController.draw(originalEvent,toolText)}}};_proto._firePlotEvent=function _firePlotEvent(eventType,plotIndex,e){var dataset=this,chart=dataset.getFromEnv("chart"),components=dataset.components,toolTipController=dataset.getFromEnv("toolTipController"),dataStore=components.data,data=dataStore[plotIndex],setElement=data.graphics&&data.graphics.element,labelElement=data.graphics&&data.graphics.label,toolTip=dataset.config.currentToolTip,config,setLink;if(setElement){config=data.config;setLink=config.setLink;switch(eventType){case"fc-mouseover":dataset._decideTooltipType(plotIndex,e);_rolloverResponseSetter(chart,data,e,UNDEF,this);if(setLink){setElement.css({cursor:POINTER});labelElement&&labelElement.css({cursor:POINTER})}break;case"fc-mouseout":toolTipController.hide(toolTip);_rolloutResponseSetter(chart,data,e,UNDEF,this);if(setLink){setElement.css({cursor:DEFAULT_CURSOR});labelElement&&labelElement.css({cursor:DEFAULT_CURSOR})}break;case"fc-click":chart.plotEventHandler(setElement,e);break;case"fc-mousemove":dataset._decideTooltipType(plotIndex,e)}}};_proto.createContainer=function createContainer(){var dataset=this,dsType=dataset.getType(),chart=dataset.getFromEnv("chart"),parent=dataset.getLinkedParent(),group=dataset.config.primitiveType||dsType,parentContainer,commonElemsParentContainer,anchorElemsParentContainer,commonElemsLineParentContainer,parentShadowContainer;!parent.getChildContainer(group+"VcanvasGroup")&&(group="default");parentContainer=parent.getChildContainer(group+"VcanvasGroup");parentShadowContainer=parent.getChildContainer(group+"ShadowVcanvasGroup");commonElemsParentContainer=parent.getChildContainer("commonElemGroup")||parentContainer;commonElemsLineParentContainer=parent.getChildContainer("commonElemGroupLine");anchorElemsParentContainer=parent.getChildContainer("anchorGroup")||parentContainer;!dataset.getContainer("shadowGroup")&&dataset.addContainer("shadowGroup",createGroup("shadow-group",parentShadowContainer,dataset));!dataset.getContainer("errorShadowGroup")&&dataset.addContainer("errorShadowGroup",createGroup("error-shadow-group",parentShadowContainer,dataset));!dataset.getContainer("commonElemsGroup")&&dataset.addContainer("commonElemsGroup",createGroup("common-elems-group",commonElemsParentContainer,dataset));if(commonElemsLineParentContainer){!dataset.getContainer("commonElemsGroupLine")&&dataset.addContainer("commonElemsGroupLine",createGroup("common-elems-group",commonElemsLineParentContainer,dataset))}else{dataset.removeContainer("commonElemsGroupLine")}!dataset.getContainer("plotGroup")&&dataset.addContainer("plotGroup",createGroup("plot-group",anchorElemsParentContainer,dataset));!dataset.getContainer("errorPlotGroup")&&dataset.addContainer("errorPlotGroup",createGroup("error-plot-group",parentContainer,dataset));chart.hasAnchor&&dataset.getContainer("errorPlotGroup").insertBefore(dataset.getContainer("plotGroup"));!dataset.getContainer("labelGroup")&&dataset.addContainer("labelGroup",createGroup("label-group",parent.getChildContainer("vcanvasLabelGroup"),dataset).attr("class","froalacharts-datalabels"))};_proto.createCoordinates=function createCoordinates(){var dataSet=this,conf=dataSet.config,dsComponents=dataSet.components,dsData=dsComponents.data,chart=dataSet.getFromEnv("chart"),isBar=chart.isBar,yAxis=dataSet.getFromEnv("yAxis"),xAxis=dataSet.getFromEnv("xAxis"),yBase=yAxis.getAxisBase(),yBasePos=yAxis.getPixel(yBase),isVertical=xAxis.config.isVertical,dataObj,config,previousY,i,j,Px,Py,Pb,xDepth=chart.config.xDepth||0,yDepth=chart.config.yDepth||0,len=dsData.length,components=dataSet.components,groupManager=dataSet.getLinkedParent(),stackConf=groupManager.getstackConf&&groupManager.getstackConf(),dataStore=components.data,skipInfo=dataSet.getSkippingInfo&&dataSet.getSkippingInfo(),skippingApplied=skipInfo&&skipInfo.skippingApplied,plotDrawArray=skipInfo&&skipInfo.draw||[],plotDrawArrayLength=plotDrawArray&&plotDrawArray.length,xPx,yPx;!isBar&&(xDepth=-xDepth);isBar&&(yDepth=-yDepth);if(skippingApplied){len=plotDrawArrayLength}for(j=0;j<len;j++){i=plotDrawArray[j]||j;dataObj=dataStore[i];config=dataObj&&dataObj.config;if(dataObj===UNDEF){continue}previousY=config._b;xPx=xAxis.getPixel(stackConf&&stackConf[i]&&stackConf[i].x||config._x);Px=(isFinite(xPx)?xPx:0)+xDepth;yPx=yAxis.getPixel(config._y);Py=(isFinite(yPx)?yPx:0)+yDepth;Pb=(previousY?yAxis.getPixel(previousY):yBasePos)+yDepth;if(isVertical){config._Px=Py;config._Py=Px;config._Pby=Px;config._Pbx=Pb}else{config._Px=Px;config._Py=Py;config._Pby=Pb;config._Pbx=Px}if(config.givenPlotShowValue===0){config.showValue=0}else if(config.givenPlotShowValue===1){config.showValue=1}else if(config.givenPlotShowValue!==1&&conf.showValues){if(Math.sqrt((Pb-Py)*(Pb-Py))<config.minplotheightforvalue){config.showValue=0}else{config.showValue=1}}if(dataSet.getLineShift){config._Py+=dataSet.getLineShift("y")}}};_proto.setContainerVisibility=function setContainerVisibility(show){var dataSet=this,containers=dataSet.getContainer(),container;for(container in containers){if(containers.hasOwnProperty(container)){if(dataSet.getState("visible")===false&&(dataSet._conatinerHidden===false||dataSet._conatinerHidden===UNDEF)&&!show){containers[container].hide();dataSet._conatinerHidden=true}else{containers[container].show();dataSet._conatinerHidden=false}}}};_proto.plotAnimManager=function plotAnimManager(dataObj,attrObj,i,length){var dataSet=this,chart=dataSet.getFromEnv("chart"),animationManager=chart.getFromEnv("animationManager"),is3D=chart.config.is3D,chartConfig=chart.config,visible=dataSet.getState("visible"),xPos=attrObj.x,setElement,setValue,relativeGroupArray,config,configObj,skipInfo=dataSet.getSkippingInfo&&dataSet.getSkippingInfo(),plotDrawArray=skipInfo&&skipInfo.draw||[],container,isNegative,plotGroup3d=dataSet.getFromEnv("plotGroup3d"),attr;config=dataObj&&dataObj.config;setValue=config&&config.setValue;isNegative=setValue<0;if(is3D){relativeGroupArray=isNegative?plotGroup3d.negativeGroupArray:plotGroup3d.positiveGroupAarray;container=relativeGroupArray[chart.isBar?relativeGroupArray.length-1-i:i]}else{container=dataSet.getContainer("plotGroup")}setElement=dataObj.graphics.element;attr=attrObj;configObj={el:setElement||(is3D?"cubepath":"rect"),container:container,attr:visible&&attr,doNotRemove:true,props:{originalIndex:plotDrawArray[i]||i},index:i,length:length,component:dataSet,label:"rect"};if(!visible){configObj.callback=function(){this.hide()}}dataObj.graphics.element=setElement=animationManager.setAnimation(configObj);if(is3D){setElement.appendTo(container);if(chartConfig.isstacked&&isNegative||!chartConfig.isstacked&&chart.isBar){setElement.toBack()}}if(dataObj.config.setValue!==null){dataSet.getState("visible")&&setElement.show()}else{setElement.remove();delete dataObj.graphics.element}config._oldPx=config._Px;config._oldX=xPos;visible&&(dataObj.oldPrevDataObj=dataObj.prevDataObj)};_proto.flushOnScroll=function flushOnScroll(start,end){var dataSet=this,components=dataSet.components,datum,dataStore=components.data;for(var i=start,len=end-1;i<=len;i++){datum=dataStore[i];if(!(datum&&datum.graphics)){continue}_graphicsIterator(datum.graphics,dataSet.__removeElem);datum.graphics={}}};_proto.removingDraw=function removingDraw(){var dataset=this,datastore=dataset.components.data;datastore.forEach((function(datum){_graphicsIterator(datum.graphics,dataset.__removeElem);delete datum.graphics}));_ComponentInterface.prototype.removingDraw.call(this)};_proto._contextChanged=function _contextChanged(){var catLen;if(!this.config.context){this.config.context={}}var dataset=this,context=dataset.config.context,oldShift=context.shift,xAxis=dataset.getFromEnv("xAxis"),yAxis=dataset.getFromEnv("yAxis"),stringifiedOldLimits=context.axisLimit,stringifiedNewLimits,status=false,newAxisLimit={yAxis:{limit:yAxis.getVisibleConfig()},xAxis:{limit:xAxis.getVisibleConfig()}};newAxisLimit.yAxis.limitPixel={min:yAxis.getPixel(newAxisLimit.yAxis.limit.minValue),max:yAxis.getPixel(newAxisLimit.yAxis.limit.maxValue)};newAxisLimit.xAxis.limitPixel={min:xAxis.getPixel(newAxisLimit.xAxis.limit.minValue),max:xAxis.getPixel(newAxisLimit.xAxis.limit.maxValue)};stringifiedNewLimits=JSON.stringify(newAxisLimit);if(stringifiedOldLimits!==stringifiedNewLimits){context.axisLimit=stringifiedNewLimits;status=true}if(oldShift!==dataset.getFromEnv("shift")){context.shift=dataset.getFromEnv("shift");status=true}if(context.prevColNum!==dataset.getFromEnv("numOfColumns")){context.prevColNum=dataset.getFromEnv("numOfColumns");status=true}if(xAxis.getProcessLen){catLen=xAxis.getProcessLen()}else if(xAxis.getTicksLen){catLen=xAxis.getTicksLen()}if(context.prevCatlen!==catLen){context.prevCatlen=catLen;status=true}if(this.getFromEnv("chart").isRealTime){return true}return status};_proto.calculateScrollRange=function calculateScrollRange(){var dataSet=this,conf=dataSet.config,xAxis=dataSet.getFromEnv("xAxis"),len,catLen=xAxis.getTicksLen(),skipInfo=dataSet.getSkippingInfo&&dataSet.getSkippingInfo()||{},skippingApplied=skipInfo.skippingApplied,plotDrawArray=skipInfo.draw||[],labelDrawArray=skipInfo.labelDraw||[],plotDrawArrayLength=plotDrawArray.length;len=skippingApplied?plotDrawArrayLength-1:catLen;conf.scrollMinVal=mathMax(mathRound(xAxis.getVisibleConfig().minValue),0)-1;conf.scrollMaxVal=mathMin(mathRound(xAxis.getVisibleConfig().maxValue)+1,len)+1;len=skippingApplied?labelDrawArray.length-1:catLen;conf.scrollMinValForLabel=mathMax(mathRound(xAxis.getVisibleConfig().minValue),0)-1;conf.scrollMaxValForLabel=mathMin(mathRound(xAxis.getVisibleConfig().maxValue)+1,len)+1};_proto.drawPlots=function drawPlots(){var dataSet=this,chart=dataSet.getFromEnv("chart"),conf=dataSet.config,i,j,chartConfig=chart.config,showHoverEffect=chartConfig.plothovereffect,crispBox,dataObj,setElement,config,dataStore=dataSet.components.data,shadowContainer=dataSet.getContainer("shadowGroup"),trackerConfig,attrObj,scrollMinVal,scrollMaxVal,_oldStartIndex=conf._oldStartIndex,_oldEndIndex=conf._oldEndIndex,fi,skipInfo=dataSet.getSkippingInfo&&dataSet.getSkippingInfo(),plotDrawArray=skipInfo&&skipInfo.draw;scrollMinVal=conf.scrollMinVal;scrollMaxVal=conf.scrollMaxVal;if(scrollMinVal>_oldStartIndex){dataSet.flushOnScroll(_oldStartIndex,scrollMinVal>_oldEndIndex?_oldEndIndex:scrollMinVal)}if(scrollMaxVal<_oldEndIndex){dataSet.flushOnScroll(scrollMaxVal<_oldStartIndex?_oldStartIndex:scrollMaxVal,_oldEndIndex)}conf._oldStartIndex=scrollMinVal;conf._oldEndIndex=scrollMaxVal;for(j=scrollMinVal,fi=scrollMaxVal-1;j<scrollMaxVal;j++,fi--){i=plotDrawArray[j]||j;dataObj=dataStore[i];if(!dataObj){continue}config=dataObj.config;attrObj=config.props.element.attr;dataSet.plotAnimManager(dataObj,attrObj,j,scrollMaxVal);trackerConfig=dataObj.trackerConfig;setElement=dataObj.graphics.element;if(!setElement){continue}setElement.shadow(config.shadow,shadowContainer).data("BBox",crispBox);chart.config.enablemousetracking&&setElement.data(EVENTARGS,trackerConfig.eventArgs).data(showHoverEffectStr,showHoverEffect).data(SETROLLOVERATTR,config.setRolloverAttr||{}).data(SETROLLOUTATTR,config.setRolloutAttr||{})}conf.appearing&&(conf.appearing=false)};_proto.setColumnPosition=function setColumnPosition(){var dataSet=this,columnWidth,shift;if((columnWidth=dataSet.getFromEnv("plotWidth"))===UNDEF){var xAxis=dataSet.getFromEnv("xAxis"),chartConfig=this.getFromEnv("chartConfig"),skippingInfo=dataSet.getSkippingInfo(),offSetColNo=skippingInfo.plotsPerBin,definedGroupPadding=mathMax(chartConfig.plotSpacePercent,0),plotSpacePercent=mathMax((0,_lib.pluckNumber)(definedGroupPadding,20)%100,0),groupPadding=offSetColNo===1?plotSpacePercent/200:0,xAxisZeroPos=xAxis.getPixel(0),xAxisFirstPos=xAxis.getPixel(offSetColNo),chart=dataSet.getFromEnv("chart"),maxColWidth=chart.isBar?chart.config.maxBarHeight:chart.config.maxColWidth,groupMaxWidth=mathAbs(xAxisFirstPos-xAxisZeroPos),groupNetWidth,xPosFirst,xPosNext,isCrisp=true,groupNetGapWidth=4,groupNetHalfWidth,numOfColumns=1;groupNetWidth=(1-definedGroupPadding*.01)*groupMaxWidth||mathMin(groupMaxWidth*(1-groupPadding*2),maxColWidth*(numOfColumns||1));columnWidth=numOfColumns===0?groupNetWidth:groupNetWidth/numOfColumns;groupNetHalfWidth=groupNetWidth/2;xPosFirst=xAxisZeroPos-groupNetHalfWidth;xPosNext=xAxisFirstPos-groupNetHalfWidth;if(xPosNext-(xPosFirst+groupNetWidth)<groupNetGapWidth){isCrisp=false}if(plotSpacePercent===0){isCrisp=true}dataSet.addToEnv("isCrisp",isCrisp)}dataSet.addToEnv("columnWidth",columnWidth);shift=dataSet.getFromEnv("shift")||0;dataSet.addToEnv("columnXShift",shift-dataSet.getFromEnv("columnWidth")/2)};_proto.addDatasetSpecificEvtArgs=function addDatasetSpecificEvtArgs(_dataObj){var dataSet=this,dsConfig=dataSet.config,dataObj=_dataObj,config=dataObj.config,chartConfig=dataSet.getFromEnv("chart").config,trackerConfig=dataObj.trackerConfig,eventArgs=trackerConfig.eventArgs;Object.assign(eventArgs,{color:config.originalPlotColorl,gradientColor:dsConfig.plotgradientcolor,alpha:config.plotFillAlpha,borderColor:config.plotbordercolor||dsConfig.plotbordercolor,borderAlpha:config.plotBorderAlpha,borderThickness:chartConfig.plotborderthickness,borderDashed:config.dashed,hoverColor:config.hoverColor,hoverAlpha:config.hoverAlpha,borderHoverColor:config.hoverBorderColor,borderHoverAlpha:config.hoverBorderAlpha})};_proto.parsePlotAttributes=function parsePlotAttributes(dataObj,index){var dataSet=this,dsConfig=dataSet.config,JSONData=dataSet.config.JSONData,chart=dataSet.getFromEnv("chart"),chartAttr=chart.getFromEnv("dataSource").chart,isStacked=chart.config.isstacked,conf=dataSet.config,groupManager=dataSet.groupManager,datasetIndex=dataSet.getJSONIndex(),i=index,visible=dataSet.getState("visible"),chartConfig=chart.config,is3D=chart.config.is3D,isBar=chart.isBar,crispObj,xDepth=chartConfig.xDepth||0,yDepth=chartConfig.yDepth||0,yAxis=dataSet.getFromEnv("yAxis"),xAxis=dataSet.getFromEnv("xAxis"),xPos,yPos,plotGap,showTooltip=chartConfig.showtooltip,isVisible=dataSet.getState("visible")!==false,initialColumnWidth,xPosOffset,yPosOffset,initialColumnHeight,columnWidth,height,toolText,components=dataSet.components,dataStore=components.data,setTooltext,setLink,setValue,displayValue,config=dataObj.config,yBase=yAxis.getAxisBase(),yBasePos=yAxis.yBasePos=yAxis.getPixel(yBase),plotBorderThickness=(0,_lib.pluckNumber)(conf.plotborderthickness,chartConfig.plotborderthickness),plotRadius=(0,_lib.pluckNumber)(chartConfig.useroundedges,0),colorArr,plotBorderDashStyle,crispDim,trackerConfig,Px,Py,tempWidth,tempHeight,use3DLighting=conf.use3dlighting,currentYBaseTouched,minPx=mathMin(dsConfig.yAxisMinPixel,dsConfig.yAxisMaxPixel),stackConf=groupManager&&groupManager.stackConf,tunedAttr,shift=dataSet.getFromEnv("columnXShift"),viewPortConfig=chart.config.viewPortConfig,x=viewPortConfig.x,scaleX=viewPortConfig.scaleX,showPlotBorder=(0,_lib.pluckNumber)(chartConfig.showplotborder);setLink=config.setLink;colorArr=config.colorArr||[];if(xAxis.config.isVertical){initialColumnHeight=dataSet.getFromEnv("columnWidth");yPosOffset=shift}else{initialColumnWidth=dataSet.getFromEnv("columnWidth");xPosOffset=shift}if(!dataObj.graphics){dataStore[i].graphics={}}displayValue=config.displayValue;!isVisible&&(config._Py=config._Pby);Px=mathMin(config._Px,config._Pbx)+(xPosOffset||0)+x*scaleX;Py=mathMin(config._Py,config._Pby)+(yPosOffset||0);stackConf&&(Px-=initialColumnWidth/2);tempWidth=initialColumnWidth||mathAbs(config._Px-config._Pbx);tempHeight=initialColumnHeight||mathAbs(config._Py-config._Pby);if(isBar){if(config._Px-config._Pbx>0){crispObj=crispRight}else{crispObj=crispLeft}}else{if(config._Py-config._Pby>0){crispObj=crispBottom}else{crispObj=crispTop}}setTooltext=(0,_lib.getValidValue)((0,_lib.parseUnsafeString)((0,_lib.pluck)(config.origToolText,JSONData.plottooltext,chartAttr.plottooltext),false));if(dataSet.fineTunePlotDimension){tunedAttr=dataSet.fineTunePlotDimension(Px,Py,tempHeight,tempWidth,i);Px=tunedAttr.xPos;Py=tunedAttr.yPos;tempWidth=tunedAttr.width;tempHeight=tunedAttr.height}xPos=Px;yPos=Py;columnWidth=tempWidth;height=tempHeight;plotGap=xAxis.getPixel(1)-xAxis.getPixel(0)-(isBar?height:columnWidth);!isFinite(height)&&(height=0);if(visible){if(!(plotGap<5&&dataSet.getFromEnv("columnWidth")<5)){crispDim=(0,_lib.crispBound)(Px,Py,columnWidth,height,plotBorderThickness,crispObj,isStacked)}if(crispDim){xPos=crispDim.x;yPos=crispDim.y;plotBorderThickness=crispDim["stroke-width"];columnWidth=crispDim.width;height=crispDim.height||1}else{xPos=Px;yPos=Py}if(!xAxis.config.isVertical){if(yPos+height===minPx){height+=plotBorderThickness}else if(yPos===minPx){yPos-=plotBorderThickness;height+=plotBorderThickness}}else{if(xPos===minPx){xPos-=plotBorderThickness;columnWidth+=plotBorderThickness}}config.setRolloutAttr&&(config.setRolloutAttr["stroke-width"]=dsConfig.showplotborder?plotBorderThickness:0)}toolText=config.finalTooltext=config.toolText!==false?config.toolText+(setTooltext?"":config.toolTipValue):"";plotBorderDashStyle=config.plotBorderDashStyle;trackerConfig=dataObj.trackerConfig={};trackerConfig.eventArgs={index:i,link:setLink,value:config.setValue,displayValue:displayValue,categoryLabel:config.origLabel,toolText:toolText,id:"",datasetIndex:datasetIndex,datasetName:JSONData.seriesname,visible:visible};dataSet.addDatasetSpecificEvtArgs(dataObj);currentYBaseTouched=yBasePos===yPos+(setValue>0?height:0);config.props={element:{attr:{x:xPos||0,width:columnWidth||0,height:height||0,y:yPos||0,r:plotRadius,fill:(0,_lib.toRaphaelColor)(colorArr[0])||"",stroke:showPlotBorder?(0,_lib.toRaphaelColor)(colorArr[1])||"":_lib.TRACKER_FILL,"stroke-width":showPlotBorder?plotBorderThickness:0,"stroke-dasharray":plotBorderDashStyle,"stroke-linejoin":"miter",visibility:visible,cursor:setLink?POINTER:""}}};if(is3D){config.props.element.attr.noGradient=!use3DLighting;config.props.element.attr.xDepth=xDepth;config.props.element.attr.yDepth=yDepth}dataObj._xPos=xPos+xDepth;dataObj._width=columnWidth;dataObj._yPos=yPos-yDepth;dataObj._height=height;dataObj._index=i;dataObj._plotBorderThickness=plotBorderThickness;if(setLink||showTooltip){if(height<HTP){yPos-=(HTP-height)/2;height=HTP}trackerConfig.attr={x:xPos,y:yPos,width:columnWidth,height:height,r:plotRadius,cursor:setLink?POINTER:"",stroke:_lib.TRACKER_FILL,"stroke-width":showPlotBorder?plotBorderThickness:0,fill:_lib.TRACKER_FILL,visibility:visible}}config.oldValue=setValue;dataObj._oldYBaseTouched=currentYBaseTouched};_proto.parseLabelAttributes=function parseLabelAttributes(dataObj){var dataSet=this,chart=dataSet.getFromEnv("chart"),chartConfig=chart.config,smartLabel=chart.getFromEnv("smartLabel"),style=chart.config.dataLabelStyle,plotDataLabelStyle,conf=dataSet.config,legendInteractivity=conf.legendInteractivity,visible=dataSet.getState("visible"),attr,displayValue,rotateValues=chartConfig.rotatevalues?270:0,bBoxObj,graphic,textY,textX,yPos,xPos,setValue,config,showValue,pos,tempGraphics;config=dataObj&&dataObj.config;setValue=config&&config.setValue;if(dataObj===UNDEF||setValue===UNDEF||setValue===null||config.labelSki