UNPKG

@fusioncharts/charts

Version:

JavaScript Data Visualisation Library

1 lines 77.8 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _extends=require("@babel/runtime/helpers/extends");exports.__esModule=true;exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _pie2d=_interopRequireWildcard(require("../pie2d"));var _lib=require("@fusioncharts/core/src/lib");var _componentInterface=require("@fusioncharts/core/src/component-interface");var _doughnut2d=require("../doughnut2d");var _index=_interopRequireDefault(require("./index.animation"));var _dependencyManager=require("@fusioncharts/core/src/dependency-manager");var _redraphaelShapes=_interopRequireDefault(require("@fusioncharts/core/src/_internal/redraphael/redraphael-shapes/redraphael-shapes.litepath"));function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var o,i,f=_extends({},null,{default:e});if(null===e||"object"!=typeof e&&"function"!=typeof e)return f;if(o=t?n:r){if(o.has(e))return o.get(e);o.set(e,f)}for(var _t in e)"default"!==_t&&{}.hasOwnProperty.call(e,_t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,_t))&&(i.get||i.set)?o(f,_t,i):f[_t]=e[_t]);return f})(e,t)}var Raphael=(0,_dependencyManager.getDep)("redraphael","plugin"),win=window,UNDEF,HIDDEN="hidden",PATH_STR="path",LITEPATH_STR="litepath",docMode8=window.document.documentMode===8,VISIBLE=docMode8?"visible":"",COMMASTRING=",",ROLLOVER="DataPlotRollOver",ROLLOUT="DataPlotRollOut",EVENTARGS="eventArgs",GROUPID="groupId",POINTER="pointer",elementStr=_lib.preDefStr.elementStr,M="M",L="L",V="v",A="A",Z="Z",math=Math,mathMax=math.max,mathMin=math.min,mathAbs=math.abs,mathCeil=math.ceil,mathSin=math.sin,mathATan2=math.atan2,mathCos=math.cos,mathFloor=math.floor,mathRound=math.round,pi=math.PI,pi2=2*pi,piBy2=pi/2,pi3By2=pi+piBy2,getAbsScaleAngle=function getAbsScaleAngle(start,end){return(start>end?pi2:0)+end-start},map=function map(arr,fn){var results=[],i=0,len=arr.length;for(;i<len;i++){results[i]=fn.call(arr[i],arr[i],i,arr)}return results},defined=function defined(obj){return obj!==UNDEF&&obj!==null},isObject=function isObject(obj){return typeof obj==="object"},isString=function isString(s){return typeof s==="string"},pInt=function pInt(s,mag){return parseInt(s,mag||10)},pie3DCacheColorStore={lighting3D:{},lighting2D:{}},getClickArcTangent=function getClickArcTangent(x,y,center,ref,pieYScale){return mathATan2((y-center[1]-ref.top)/pieYScale,x-center[0]-ref.left)},plotRollOver=function plotRollOver(e){var plotItem=this.data("plotItem"),index=plotItem.index,chart=plotItem.chart,animationManager=chart.getFromEnv("animationManager"),chartConfig=chart.config,dataSet=chart.getChildren("dataset")[0],dataSetConfig=dataSet.config,dataSetComponents=dataSet.components,data=dataSetComponents.data[index],setGraphics=data.graphics,setConfig=data.config,element=setGraphics.element,hoverEffects=setConfig.hoverEffects;if(!dataSetConfig.isRotating){chart.plotEventHandler(element,e,ROLLOVER);hoverEffects.enabled&&animationManager.setAnimation({el:element,attr:hoverEffects,component:dataSet})}chartConfig.isHovered=true},plotRollOut=function plotRollOut(e){var plotItem=this.data("plotItem"),index=plotItem.index,chart=plotItem.chart,animationManager=chart.getFromEnv("animationManager"),chartConfig=chart.config,dataSet=chart.getChildren("dataset")[0],dataSetConfig=dataSet.config,dataSetComponents=dataSet.components,data=dataSetComponents.data[index],setConfig,element;if(!data){return}setConfig=data.config;element=data.graphics.element;if(!dataSetConfig.isRotating){chart.plotEventHandler(element,e,ROLLOUT);animationManager.setAnimation({el:element,attr:{color:setConfig.color.color.split(",")[0],alpha:setConfig._3dAlpha,borderWidth:setConfig.borderWidth,borderColor:setConfig.borderColor},component:dataSet})}chartConfig.isHovered=false},plotDragStart=function plotDragStart(evt){var plotItem=this.data("plotItem"),chart=plotItem.chart,dataSet=chart.getChildren("dataset")[0],button=(0,_lib.pluckNumber)(evt.button,evt.originalEvent.button),dataSetConfig=dataSet.config,angle,x=evt.data[0],y=evt.data[1];dataSetConfig.isRightClicked=!!(!_lib.touchEnabled&&button!==0&&button!==1);if(!dataSetConfig.enableRotation||dataSetConfig.isRightClicked){return}dataSetConfig.isRotating=false;angle=getClickArcTangent.call(evt,x,y,dataSetConfig.center,dataSetConfig.chartPosition=(0,_lib.getPosition)(dataSet.getFromEnv("chart-container")),dataSetConfig.pieYScale);dataSetConfig.dragStartAngle=angle;dataSetConfig._lastAngle=-dataSetConfig.startAngle;dataSetConfig.startingAngleOnDragStart=dataSetConfig.startAngle},plotDragEnd=function plotDragEnd(){var plotItem=this.data("plotItem"),index=plotItem.index,chart=plotItem.chart,animationManager=chart.getFromEnv("animationManager"),chartConfig=chart.config,dataSet=chart.getChildren("dataset")[0],dataSetConfig=dataSet.config,dataSetComponents=dataSet.components,data=dataSetComponents.data[index],setGraphics=data.graphics,setConfig=data.config,element=setGraphics.element,startingAng=dataSetConfig.startAngle;if(dataSetConfig.isRightClicked){return}if(dataSetConfig.isRotating){setTimeout((function(){dataSetConfig.isRotating=false}),0);chart.fireChartInstanceEvent("rotationEnd",{startingAngle:(0,_lib.normalizeAngle)(startingAng,true),changeInAngle:startingAng-dataSetConfig.startingAngleOnDragStart});!chartConfig.isHovered&&animationManager.setAnimation({el:element,attr:{color:setConfig.color.color.split(",")[0],alpha:setConfig._3dAlpha,borderWidth:setConfig.borderWidth,borderColor:setConfig.borderColor},component:dataSet})}},plotDragMove=function plotDragMove(evt){var plotItem=this.data("plotItem"),chart=plotItem.chart,evtData=evt.data,dx=evtData[0],dy=evtData[1],x=evtData[2],y=evtData[3],dataSet=chart.getChildren("dataset")[0],dataSetConfig=dataSet.config,angle,currentTime,deltaAngle;if(isNaN(dx)||isNaN(dy)||!dataSetConfig.enableRotation||dataSetConfig.singletonCase||dataSetConfig.isRightClicked){return}angle=getClickArcTangent.call(evt,x,y,dataSetConfig.center,dataSetConfig.chartPosition,dataSetConfig.pieYScale);if(dataSetConfig.dragStartAngle!==angle&&!dataSetConfig.isRotating){dataSetConfig.isRotating=true;chart.fireChartInstanceEvent("rotationStart",{startingAngle:(0,_lib.normalizeAngle)(dataSetConfig.startAngle,true)})}deltaAngle=angle-dataSetConfig.dragStartAngle;dataSetConfig.dragStartAngle=angle;dataSetConfig.moveDuration=0;dataSetConfig._lastAngle+=deltaAngle*180/pi;currentTime=(new Date).getTime();if(!dataSetConfig._lastTime||dataSetConfig._lastTime+dataSetConfig.timerThreshold<currentTime){if(!dataSetConfig._lastTime){dataSet._rotate()}dataSetConfig.timerId=setTimeout((function(){if(!chart.disposed||!chart.disposing){dataSet._rotate()}}),dataSetConfig.timerThreshold);dataSetConfig._lastTime=currentTime}},elementZSortFn=function elementZSortFn(a,b){var centerAngleDiff=a._conf.index-b._conf.index||a._conf.cIndex-b._conf.cIndex||a._conf.isStart-b._conf.isStart||a._conf.si-b._conf.si;return centerAngleDiff},getStartIndex=function getStartIndex(array){var l,i,startsAtFrontHalf,startIndex=array[0]&&array[0]._conf.index,atFrontHalf,index;startsAtFrontHalf=startIndex<=pi;for(i=1,l=array.length;i<l;i+=1){index=array[i]._conf.index;atFrontHalf=index<=pi;if(atFrontHalf!==startsAtFrontHalf||index<startIndex){return i}}return 0},sortArrayByPoint=function sortArrayByPoint(a,b){return a.point.value-b.point.value},sortArrayByAngle=function sortArrayByAngle(a,b){return a.angle-b.angle},alignments=["start","start","end","end"],alignCenter="middle",ySign=[-1,1,1,-1],xSign=[1,1,-1,-1],attrKeyList={stroke:true,strokeWidth:true,"stroke-width":true,dashstyle:true,"stroke-dasharray":true,translateX:true,translateY:true,"stroke-opacity":true,fill:true,"fill-opacity":true,opacity:true,transform:true,cursor:true,sAngle:true,eAngle:true,color:true,alpha:true,borderColor:true,borderAlpha:true,borderWidth:true,rolloverProps:true,showBorderEffect:true,positionIndex:true,cx:true,cy:true,radiusYFactor:true,r:true,innerR:true},attrFN=function attrFN(hsh,val){var key,value,hash=hsh,slice=this,confObject=slice._confObject,commonAttr={},elements=confObject.elements,x,updateShape,updateColor,Pie3DManager=confObject.Pie3DManager,applyCommonAttr;if(isString(hash)&&defined(val)){key=hash;hash={};hash[key]=val}if(!hash||isString(hash)){if(attrKeyList[hash]){slice=confObject[hash]}else{slice=slice._attr(hash)}}else{for(key in hash){value=hash[key];if(attrKeyList[key]){confObject[key]=value;if(key==="cursor"||key==="transform"||key==="opacity"||key==="fill-opacity"){commonAttr[key]=value;applyCommonAttr=true}else if(key==="sAngle"||key==="eAngle"||key==="cx"||key==="cy"||key==="radiusYFactor"||key==="r"||key==="innerR"){updateShape=true}else if(key==="color"||key==="alpha"||key==="borderColor"||key==="borderAlpha"||key==="borderWidth"){updateColor=true}}else{slice._attr(key,value)}}if(updateShape){Pie3DManager._setSliceShape(confObject);Pie3DManager.refreshDrawing()}if(updateColor||updateShape){Pie3DManager._setSliceCosmetics(confObject)}if(applyCommonAttr){for(x in elements){elements[x].attr(commonAttr)}slice._attr(commonAttr)}}return slice},onFN=function onFN(eventType,handler,callFromRaphael){if(callFromRaphael){this._on(eventType,handler,true);return}var slice=this,confObject=slice._confObject,elements=confObject.elements,element;for(element in elements){elements[element].on(eventType,handler)}return slice._on(eventType,handler)},onDragFN=function onDragFN(dragStart,dragMove,dragEnd){var element,slice=this,confObject=slice._confObject,elements=confObject.elements,navigator=win.navigator,ua=navigator.userAgent.toLowerCase(),isAndroid=ua.indexOf("android")>-1;for(element in elements){if(isAndroid){if(element==="topBorder"||element==="frontOuter"||element==="startSlice"||element==="endSlice"){elements[element].drag(dragStart,dragMove,dragEnd)}}else{elements[element].drag(dragStart,dragMove,dragEnd)}}return slice._drag(dragStart,dragMove,dragEnd)},hideFN=function hideFN(){var slice=this,confObject=slice._confObject,elements=confObject.elements,element;for(element in elements){elements[element].hide()}return slice._hide()},showFN=function showFN(){var slice=this,confObject=slice._confObject,elements=confObject.elements,element;for(element in elements){elements[element].show()}return slice._show()},destroyFN=function destroyFN(){var confObject=this._confObject,elements=confObject.elements,x;for(x in elements){elements[x].destroy()}if(_lib.hasSVG){confObject.clipTop.destroy();confObject.clipOuterFront.destroy();confObject.clipOuterBack.destroy();if(confObject.clipOuterFront1){confObject.clipOuterFront1.destroy()}if(confObject.clipInnerFront){confObject.clipInnerFront.destroy()}if(confObject.clipInnerBack){confObject.clipInnerBack.destroy()}}return this._destroy()},dataFN=function dataFN(key,value){var slice=this,confObject=slice._confObject,elements=confObject.elements,element;if(value===UNDEF){return slice._data(key)}for(element in elements){elements[element].data(key,value)}return slice._data(key,value)},si=0;(0,_dependencyManager.addDep)({name:"pie3dAnimation",type:"animationRule",extension:_index.default});var Pie3DDataset=function(_Pie2DDataset){function Pie3DDataset(){return _Pie2DDataset.apply(this,arguments)||this}(0,_inheritsLoose2.default)(Pie3DDataset,_Pie2DDataset);var _proto=Pie3DDataset.prototype;_proto.__setDefaultConfig=function __setDefaultConfig(){_Pie2DDataset.prototype.__setDefaultConfig.call(this);var config=this.config;config.setBorderWidth=UNDEF;config.alphaanimation=1;config.showBorderEffect=UNDEF};_proto.placeDataLabels=function placeDataLabels(isRotating){var attr,dataSet=this,chart=dataSet.getFromEnv("chart"),toolTipController=chart.getFromEnv("toolTipController"),chartConfig=chart.config,plotOptions=dataSet.config,plotItems=dataSet.components.data,piePlotOptions=plotOptions.piePlotOptions,canvasLeft=chartConfig.canvasLeft,canvasTop=chartConfig.canvasTop,canvasWidth=chartConfig.canvasWidth,cx=canvasLeft+chartConfig.canvasWidth*.5,cy=canvasTop+chartConfig.canvasHeight*.5,smartLabel=chart.getFromEnv("smartLabel"),dataLabelsOptions=plotOptions.dataLabelOptions,style=dataLabelsOptions.style,lineHeight=(0,_lib.pluckNumber)(mathCeil(parseFloat(style.lineHeight)),12),placeInside=(0,_lib.getFirstValue)(dataLabelsOptions.placeInside,false),skipOverlapLabels=dataLabelsOptions.skipOverlapLabels,manageLabelOverflow=dataLabelsOptions.manageLabelOverflow,connectorPadding=dataLabelsOptions.connectorPadding,distanceOption=dataLabelsOptions.distance,connectorWidth=dataLabelsOptions.connectorWidth,remainingHeight,quarters=[[],[],[],[]],plotLeft=canvasLeft,plotTop=canvasTop,plotWidth=canvasWidth,labelFontSize=parseInt(style.fontSize,10),labelHeight=labelFontSize,halfLabelHeight=labelHeight/2,xDisplacement=[connectorPadding,connectorPadding,-connectorPadding,-connectorPadding],isSmartLineSlanted=dataLabelsOptions.isSmartLineSlanted,align,i,labelWidth,j,oriY,maxYmayHave,spaceRequired,length,k,sliced,x1,x2,x3,x4,y1,y2,y3,points,point,angle,excess,excessArr,dataLabel,dataLabelCheck,quarter,transX,transY,smartLabelObj,pointConfig,pointGraphics,connector,connectorPath,outside=distanceOption>0,center=plotOptions.center||(plotOptions.center=[cx,cy,piePlotOptions.size,piePlotOptions.innerSize||0]),centerY=center[1],centerX=center[0],radius=center[2],radiusY=center[4],dataLabelsRadius=plotOptions.labelsRadius,dataLabelsRadiusY=mathRound(plotOptions.labelsRadiusY*100)/100,maxLabels=plotOptions.maxLabels,enableSmartLabels=plotOptions.enableSmartLabels,labelQuardentHeight,maxQuardentLabel,pieSliceDepthHalf=plotOptions.pieSliceDepth/2,_textCss,_textAttrs,animationManager=chart.getFromEnv("animationManager"),dataLabelContainer=dataSet.getContainer("label-group");smartLabel.useEllipsesOnOverflow(chartConfig.useEllipsesWhenOverflow);if(!plotOptions.dataLabelCounter){return}if(!isRotating){smartLabel.setStyle(style)}if(plotItems.length===1){point=plotItems[0];pointGraphics=point.graphics;pointConfig=point.config;_textAttrs=pointConfig._textAttrs;_textCss=pointConfig._textCss;dataLabel=pointGraphics.label;connector=pointGraphics.connector;pointConfig.slicedTranslation=[plotLeft,plotTop];if(pointConfig.y!==null&&pointConfig.y!==UNDEF){_textAttrs.visibility=VISIBLE;_textAttrs["text-anchor"]=alignCenter;_textAttrs.x=centerX;_textAttrs.y=centerY+halfLabelHeight-2;_textAttrs._x=centerX}_textCss.cursor=pointConfig.labellink?"pointer":"";dataLabel=pointGraphics.label=animationManager.setAnimation({el:pointGraphics.label||"text",attr:_textAttrs,css:_textCss,label:"label",container:dataLabelContainer,component:dataSet});if(chartConfig.showtooltip&&dataLabel.abbrArr&&dataLabel.abbrArr.length){toolTipController.enableToolTip(dataLabel,UNDEF)}dataLabel.on("fc-dragstart",plotDragStart).on("fc-dragmove",plotDragMove).on("fc-dragend",plotDragEnd).on("fc-click",_pie2d.labelClickFn.bind(dataLabel,chart,point.config.labellink)).on("fc-mouseup",(0,_pie2d.plotClickHandler)(dataSet,dataLabel)).on("fc-mouseover",plotRollOver).on("fc-mouseout",plotRollOut);if(_textAttrs._x){dataLabel.x=_textAttrs._x;delete _textAttrs.x}dataLabel.data("plotItem",_textAttrs.plotItem).data(EVENTARGS,_textAttrs.eventArgs);if(_textAttrs.visibility===VISIBLE){dataLabel.show()}if(connector){connector.hide()}}else{if(placeInside){(0,_lib.fcEach)(plotItems,(function(plotPoint){var slicedTranslation,translateX,translateY;pointGraphics=plotPoint.graphics;pointConfig=plotPoint.config;_textAttrs=pointConfig._textAttrs;dataLabel=pointGraphics.label;if(pointConfig.y!==null&&pointConfig.y!==UNDEF){angle=pointConfig.angle;y3=centerY+center[6]*mathSin(angle)+halfLabelHeight-2;x3=centerX+center[5]*mathCos(angle);_textAttrs._x=x3;_textAttrs._y=y3;if(pointConfig.sliced){slicedTranslation=plotPoint.slicedTranslation;translateX=slicedTranslation[0]-plotLeft;translateY=slicedTranslation[1]-plotTop;x3=x3+translateX;y3=y3+translateY}_textAttrs.visibility=VISIBLE;_textAttrs.align=alignCenter;_textAttrs.x=x3;_textAttrs.y=y3}_textCss.cursor=pointConfig.labellink?"pointer":"";dataLabel=pointGraphics.label=animationManager.setAnimation({el:pointGraphics.label||"text",attr:_textAttrs,css:_textCss,label:"label",container:dataLabelContainer,component:dataSet});if(chartConfig.showtooltip&&dataLabel&&dataLabel.abbrArr&&dataLabel.abbrArr.length){toolTipController.enableToolTip(dataLabel,UNDEF)}dataLabel.data("plotItem",_textAttrs.plotItem).data(EVENTARGS,_textAttrs.eventArgs);if(_textAttrs.visibility===VISIBLE){dataLabel.show()}dataLabel.x=_textAttrs._x;dataLabel._x=_textAttrs._x;dataLabel._y=_textAttrs._y}))}else{(0,_lib.fcEach)(plotItems,(function(plotPoint){pointGraphics=plotPoint.graphics;pointConfig=plotPoint.config;_textCss=pointConfig._textCss;_textAttrs=pointConfig._textAttrs;if(!(_textAttrs.text=pointConfig.displayValue)){pointGraphics.connector&&animationManager.setAnimation({el:pointGraphics.connector,component:dataSet,callback:_pie2d.hideFn});pointGraphics.label&&animationManager.setAnimation({el:pointGraphics.label,component:dataSet,callback:_pie2d.hideFn});return}pointGraphics=plotPoint.graphics;if(pointConfig.y!==null&&pointConfig.y!==UNDEF){dataLabel=pointGraphics.label;connector=pointGraphics.connector;connector&&connector.show();dataLabel&&dataLabel.show()}dataLabel=pointGraphics.label;if(chartConfig.showtooltip&&dataLabel&&dataLabel.abbrArr&&dataLabel.abbrArr.length){toolTipController.enableToolTip(dataLabel,UNDEF)}angle=pointConfig.angle;if(angle<0){angle=pi2+angle}if(angle>=0&&angle<piBy2){quarter=1}else if(angle<pi){quarter=2}else if(angle<pi3By2){quarter=3}else{quarter=0}quarters[quarter].push({point:plotPoint,angle:angle})}));i=4;while(i--){if(skipOverlapLabels){excess=quarters[i].length-maxLabels;if(excess>0){quarters[i].sort(sortArrayByPoint);excessArr=quarters[i].splice(0,excess);for(j=0,length=excessArr.length;j<length;j+=1){point=excessArr[j].point;pointGraphics=point.graphics;if(pointGraphics.label){animationManager.setAnimation({el:pointGraphics.label,attr:{visibility:HIDDEN},component:dataSet})}if(pointGraphics.connector){animationManager.setAnimation({el:pointGraphics.connector,attr:{visibility:HIDDEN},component:dataSet})}}}}quarters[i].sort(sortArrayByAngle)}maxQuardentLabel=mathMax(quarters[0].length,quarters[1].length,quarters[2].length,quarters[3].length);labelQuardentHeight=mathMax(mathMin(maxQuardentLabel,maxLabels)*labelHeight,dataLabelsRadiusY+labelHeight);quarters[1].reverse();quarters[3].reverse();smartLabel.setStyle(style);k=4;while(k--){points=quarters[k];length=points.length;if(!skipOverlapLabels){if(length>maxLabels){labelHeight=labelQuardentHeight/length}else{labelHeight=labelFontSize}halfLabelHeight=labelHeight/2}spaceRequired=length*labelHeight;remainingHeight=labelQuardentHeight;for(i=0;i<length;i+=1,spaceRequired-=labelHeight){oriY=mathAbs(labelQuardentHeight*mathSin(points[i].angle));if(remainingHeight<oriY){oriY=remainingHeight}else if(oriY<spaceRequired){oriY=spaceRequired}remainingHeight=(points[i].oriY=oriY)-labelHeight}align=alignments[k];maxYmayHave=labelQuardentHeight-(length-1)*labelHeight;remainingHeight=0;for(i=points.length-1;i>=0;i-=1,maxYmayHave+=labelHeight){point=points[i].point;pointGraphics=point.graphics;pointConfig=point.config;_textAttrs=pointConfig._textAttrs;_textCss=pointConfig._textCss;if(pointConfig.y===null||!_textAttrs.text){continue}angle=points[i].angle;sliced=pointConfig.sliced;dataLabel=pointGraphics.label;oriY=mathAbs(labelQuardentHeight*mathSin(angle));if(oriY<remainingHeight){oriY=remainingHeight}else if(oriY>maxYmayHave){oriY=maxYmayHave}remainingHeight=oriY+labelHeight;y1=(oriY+points[i].oriY)/2;x1=centerX+xSign[k]*dataLabelsRadius*mathCos(math.asin(y1/labelQuardentHeight));y1*=ySign[k];y1+=centerY;y2=centerY+radiusY*mathSin(angle);x2=centerX+radius*mathCos(angle);(k<2&&x1<x2||k>1&&x1>x2)&&(x1=x2);x3=x1+xDisplacement[k];y3=y1+halfLabelHeight-2;x4=x3+xDisplacement[k];_textAttrs._x=x4;if(manageLabelOverflow){labelWidth=k>1?x4-canvasLeft:canvasLeft+plotWidth-x4;smartLabel.setStyle(pointConfig.style);lineHeight=(0,_lib.pluckNumber)(mathCeil(parseFloat(pointConfig.style.lineHeight)),12)+(mathCeil(parseFloat(pointConfig.style.border),12)*2||0);smartLabelObj=smartLabel.getSmartText(pointConfig.displayValue,labelWidth,lineHeight);_textAttrs.text=smartLabelObj.text;_textAttrs.tooltip=smartLabelObj.tooltext}if(angle<pi){y1+=pieSliceDepthHalf;y2+=pieSliceDepthHalf;y3+=pieSliceDepthHalf}_textAttrs._y=y3;if(sliced){transX=pointConfig.transX;transY=pointConfig.transY;x3=x3+transX;x1=x1+transX;x2=x2+transX;y1=y1+transY;y2=y2+transY;x4=x4+transX}_textAttrs.visibility=VISIBLE;_textAttrs["text-anchor"]=align;_textAttrs.x=x4;_textAttrs.y=y1;_textAttrs.opacity=1;_textCss.cursor=pointConfig.labellink?"pointer":"";dataLabelCheck=pointGraphics.label;dataLabel=animationManager.setAnimation({el:dataLabelCheck||"text",attr:_textAttrs,css:_textCss,container:dataLabelContainer,component:dataSet,label:"label"});if(chartConfig.showtooltip&&dataLabel&&dataLabel.abbrArr&&dataLabel.abbrArr.length){toolTipController.enableToolTip(dataLabel,UNDEF)}dataLabel.outlineText(plotOptions.showTextOutline,_textAttrs.fill);dataLabel.data("textPos",{x:x4,y:y1}).data("plotItem",_textAttrs.plotItem).data(EVENTARGS,_textAttrs.eventArgs);if(!dataLabelCheck){pointGraphics.label=dataLabel;dataLabel.on("fc-dragstart",plotDragStart).on("fc-dragmove",plotDragMove).on("fc-dragend",plotDragEnd).on("fc-click",_pie2d.labelClickFn.bind(dataLabel,chart,point.config.labellink)).on("fc-click",(0,_pie2d.plotClickHandler)(dataSet,dataLabel)).on("fc-mouseover",plotRollOver).on("fc-mouseout",plotRollOut)}dataLabel.x=_textAttrs._x;dataLabel._x=_textAttrs._x;dataLabel.y=_textAttrs._y;if(_textAttrs.tooltip){toolTipController.enableToolTip(dataLabel,_textAttrs.tooltip);delete _textAttrs.tooltip}if(outside&&connectorWidth&&enableSmartLabels){connector=pointGraphics.connector;pointConfig.connectorPath=connectorPath=[M,x2,y2,L,isSmartLineSlanted?x1:x2,y1,x3,y1];attr={path:connectorPath,"stroke-width":connectorWidth,stroke:dataLabelsOptions.connectorColor||"#606060",opacity:1,visibility:VISIBLE};if(connector){animationManager.setAnimation({el:connector,attr:attr,label:"connector",component:dataSet})}}}}}}};_proto._parsePie3DOptions=function _parsePie3DOptions(){var dataSet=this,conf=dataSet.config;return{size:2*conf.pieMinRadius,slicedOffset:conf.slicingDistance,allowPointSelect:true,cursor:POINTER,innerSize:dataSet.getName()==="pie3d"?0:_doughnut2d._getInnerSize.call(dataSet)}};_proto._parseBorderConfig=function _parseBorderConfig(setColor,setAlpha,dataJSON){var dataSet=this,conf=dataSet.config,pieBorderColor=conf.pieBorderColor,chartAttr=dataSet.getFromEnv("chart-attrib"),setPlotBorderColor=(0,_lib.pluck)(dataJSON.bordercolor,pieBorderColor),setPlotBorderAlpha=(0,_lib.pluck)(dataJSON.borderalpha,chartAttr.plotborderalpha,chartAttr.pieborderalpha);setPlotBorderColor=(0,_lib.pluck)(setPlotBorderColor,(0,_lib.getLightColor)(setColor,90)).split(COMMASTRING)[0];setPlotBorderAlpha=chartAttr.showplotborder===_lib.ZEROSTRING?_lib.ZEROSTRING:(0,_lib.pluck)(setPlotBorderAlpha,setAlpha,"80");return{setPlotBorderColor:setPlotBorderColor,setPlotBorderAlpha:setPlotBorderAlpha}};_proto._initPie3dManager=function _initPie3dManager(){var i,point,dataSet=this,chart=dataSet.getFromEnv("chart"),chartConfig=chart.config,precision=1e3,total=0,dataSetConfig=dataSet.config,dataSetComponents=dataSet.components,dataLabelOptions=dataSetConfig.dataLabelOptions,pie3DOptions=dataSetConfig.pie3DOptions=dataSet._parsePie3DOptions(),startingAngle=(0,_lib.pluck)(dataSetConfig.startAngle,0)%pi2,fontSize,managedPieSliceDepth=dataSetConfig.managedPieSliceDepth,slicedOffset=dataSetConfig.slicedOffset=pie3DOptions.slicedOffset,plotWidth=chartConfig.canvasWidth,plotHeight=chartConfig.canvasHeight,positions=[chartConfig.canvasLeft+plotWidth*.5,chartConfig.canvasTop+plotHeight*.5-managedPieSliceDepth*.5],start,pointConfig,end,angle,lastEnd,maxEnd,data=dataSetComponents.data,fraction,smallestSize=mathMin(plotWidth,plotHeight),isPercent,radiusX,radiusY,labelDistance=dataLabelOptions.distance,pieYScale=dataSetConfig.pieYScale,slicedOffsetY=dataSetConfig.slicedOffsetY||(dataSetConfig.slicedOffsetY=slicedOffset*dataSetConfig.pieYScale),pie3DManager=dataSet.getFromEnv("pie3DManager");positions.push(2*dataSetConfig.pieMinRadius,pie3DOptions.innerSize||0);positions=map(positions,(function(length,index){isPercent=/%$/.test(length);return isPercent?[plotWidth,plotHeight-managedPieSliceDepth,smallestSize,smallestSize][index]*pInt(length)/100:length}));positions[2]/=2;positions[3]/=2;positions.push(positions[2]*pieYScale);positions.push((positions[2]+positions[3])/2);positions.push(positions[5]*pieYScale);dataSet.getX=function(y,left){angle=math.asin((y-positions[1])/(positions[2]+labelDistance));return positions[0]+(left?-1:1)*(mathCos(angle)*(positions[2]+labelDistance))};dataSetConfig.center=positions;(0,_lib.fcEach)(data,(function(datapoint){total+=datapoint.config.y}));dataSetConfig.labelsRadius=positions[2]+labelDistance;dataSetConfig.labelsRadiusY=dataSetConfig.labelsRadius*pieYScale;dataSetConfig.quadrantHeight=(plotHeight-managedPieSliceDepth)/2;dataSetConfig.quadrantWidth=plotWidth/2;lastEnd=startingAngle;lastEnd=mathRound(lastEnd*precision)/precision;maxEnd=lastEnd+pi2;fontSize=(0,_lib.pluckNumber)(parseInt(dataLabelOptions.style.fontSize,10),10)+4;dataSetConfig.maxLabels=mathFloor(dataSetConfig.quadrantHeight/fontSize);dataSetConfig.labelFontSize=fontSize;dataSetConfig.connectorPadding=(0,_lib.pluckNumber)(dataLabelOptions.connectorPadding,5);dataSetConfig.isSmartLineSlanted=(0,_lib.pluck)(dataLabelOptions.isSmartLineSlanted,true);dataSetConfig.connectorWidth=(0,_lib.pluckNumber)(dataLabelOptions.connectorWidth,1);dataSetConfig.enableSmartLabels=dataLabelOptions.enableSmartLabels;if(!pie3DManager){pie3DManager=new Pie3DManager(chart);dataSet.attachChild(pie3DManager,"pie3DManager",false);dataSet.addToEnv("pie3DManager",pie3DManager)}dataSet._configurePie3DManager();for(i=data.length-1;i>=0;i-=1){point=data[i];pointConfig=point.config;start=lastEnd;fraction=total?pointConfig.y/total:0;lastEnd=mathRound((lastEnd+fraction*pi2)*precision)/precision;if(lastEnd>maxEnd){lastEnd=maxEnd}end=lastEnd;pointConfig.shapeArgs={sAngle:mathRound(start*precision)/precision,eAngle:mathRound(end*precision)/precision};pointConfig.centerAngle=angle=(end+start)/2%pi2;pointConfig.slicedTranslation=[mathRound(mathCos(angle)*slicedOffset),mathRound(mathSin(angle)*slicedOffsetY)];radiusX=mathCos(angle)*positions[2];dataSetConfig.radiusY=radiusY=mathSin(angle)*positions[4];pointConfig.tooltipPos=[positions[0]+radiusX*.7,positions[1]+radiusY];pointConfig.percentage=fraction*100;pointConfig.total=total}};_proto._configurePie3DManager=function _configurePie3DManager(){var dataSet=this,dataSetConfig=dataSet.config,dataSetComponents=dataSet.components,pie3DManager=dataSet.getFromEnv("pie3DManager"),data=dataSetComponents.data;if(pie3DManager){pie3DManager.configure(dataSetConfig.pieSliceDepth,data.length===1,dataSetConfig.use3DLighting,false)}};_proto.allocatePosition=function allocatePosition(){var dataset=this,chart=dataset.getFromEnv("chart"),chartConfig=chart.config,dataSetConfig=dataset.config,plotData=dataset.components.data,i,precision=1e3,dataObj,startingAngle=(0,_lib.pluck)(dataSetConfig.startAngle,0)%pi2,lastEnd=startingAngle,start,end,point,fraction,isPercent,pie3DOptions=dataSetConfig.pie3DOptions=dataset._parsePie3DOptions(),pieYScale=dataSetConfig.pieYScale,managedPieSliceDepth=dataSetConfig.managedPieSliceDepth,plotWidth=chartConfig.canvasWidth,plotHeight=chartConfig.canvasHeight,smallestSize=mathMin(plotWidth,plotHeight),positions=[chartConfig.canvasLeft+plotWidth*.5,chartConfig.canvasTop+plotHeight*.5-managedPieSliceDepth*.5],total=0,maxEnd,len=plotData.length;positions.push(2*dataSetConfig.pieMinRadius,pie3DOptions.innerSize||0);positions=map(positions,(function(length,index){isPercent=/%$/.test(length);return isPercent?[plotWidth,plotHeight-managedPieSliceDepth,smallestSize,smallestSize][index]*pInt(length)/100:length}));positions[2]/=2;positions[3]/=2;positions.push(positions[2]*pieYScale);positions.push((positions[2]+positions[3])/2);positions.push(positions[5]*pieYScale);dataSetConfig.center=positions;(0,_lib.fcEach)(plotData,(function(plotpoint){total+=plotpoint.config.y}));lastEnd=mathRound(lastEnd*precision)/precision;maxEnd=lastEnd+pi2;for(i=plotData.length-1;i>=0;i-=1){point=plotData[i];start=lastEnd;fraction=total?point.config.y/total:0;lastEnd=mathRound((lastEnd+fraction*pi2)*precision)/precision;if(lastEnd>maxEnd){lastEnd=maxEnd}end=lastEnd;point.config.shapeArgs={sAngle:mathRound(start*precision)/precision,eAngle:mathRound(end*precision)/precision}}for(i=0;i<len;i++){dataObj=plotData[i];dataset.parsePlotAttributes(dataObj,i);dataset.parseLabelAttributes(dataObj,i)}};_proto.parsePlotAttributes=function parsePlotAttributes(set,index){var positions,pieYScale,dataSet=this,dataSetComponents=dataSet.components,dataSetConfig=dataSet.config,chart=dataSet.getFromEnv("chart"),chartConfig=chart.config,plotData=dataSetComponents.data,dataLabelOptions=dataSetConfig.dataLabelOptions,style=dataLabelOptions.style,slicedOffset=dataSetConfig.slicingDistance,slicedOffsetY=dataSetConfig.slicedOffsetY||(dataSetConfig.slicedOffsetY=slicedOffset*dataSetConfig.pieYScale),showBorderEffect=dataSetConfig.showBorderEffect,dataLength=plotData.length,colorLabelFromPoint=dataSetConfig.usePerPointLabelColor,textDirection=chartConfig.textDirection,eventArgs,plotItem,val,displayValue,setLink,sliced,angle,connectorWidth,shapeArgs,toolText,setConfig,dataLabel,connector,i=index,isTranspose,_textAttrs,_textCss,setElAttr,connectorAttr,setElCosmetics={},prevPositions,dataLabelStyle=chartConfig.dataLabelStyle;positions=dataSetConfig.center;prevPositions=dataSetConfig.prevPositions||positions;pieYScale=dataSetConfig.pieYScale;setConfig=set.config;if(!(_textAttrs=setConfig._textAttrs)){_textAttrs=setConfig._textAttrs={}}if(!(_textCss=setConfig._textCss)){_textCss=setConfig._textCss={}}val=setConfig.y;displayValue=setConfig.displayValue;sliced=setConfig.sliced;shapeArgs=setConfig.shapeArgs;angle=setConfig.centerAngle;toolText=setConfig.toolText;setLink=!!setConfig.link;style=setConfig.style;if(val===null||val===UNDEF){return}setElAttr={sAngle:shapeArgs.sAngle,eAngle:shapeArgs.eAngle,r:!isTranspose?positions[2]:prevPositions[2],innerR:!isTranspose?positions[3]:prevPositions[3],cx:!isTranspose?positions[0]:prevPositions[0],cy:!isTranspose?positions[1]:prevPositions[1],radiusYFactor:pieYScale,opacity:1};if(displayValue!==UNDEF){if(style){if(!(_textCss=setConfig._textCss)){_textCss=setConfig._textCss={}}_textCss.fontFamily=style.fontFamily;_textCss.fontSize=style.fontSize;_textCss.lineHeight=style.lineHeight;_textCss.fontWeight=style.fontWeight;_textCss.fontStyle=style.fontStyle}else if(setConfig._textCss){dataLabel&&dataLabel.removeCSS();delete setConfig._textCss;_textCss=UNDEF}setConfig.style=style||(style=dataLabelStyle);_textAttrs.text=displayValue;_textAttrs.fill=(colorLabelFromPoint?(0,_lib.toRaphaelColor)(setConfig.color):style.color)||"#000000";_textAttrs["text-bound"]=[style.backgroundColor,style.borderColor,style.borderThickness,style.borderPadding,style.borderRadius,style.borderDash];_textAttrs.direction=textDirection;_textAttrs.lineHeight=style.lineHeight;if(dataLabel){if(_textCss){delete _textCss.fontFamily;delete _textCss.fontSize;delete _textCss.lineHeight;delete _textCss.fontWeight;delete _textCss.fontStyle;_textCss=UNDEF}}if(dataLabelOptions.distance>0&&(connectorWidth=dataLabelOptions.connectorWidth)&&dataLabelOptions.enableSmartLabels){connectorAttr={"stroke-width":connectorWidth,stroke:dataLabelOptions.connectorColor||"#606060",cursor:setLink?POINTER:"",opacity:1}}}else{_textAttrs.text=_lib.BLANKSTRING}setConfig.plotItem=plotItem={chart:chart,index:i,seriesData:dataSetConfig,value:val,angle:setConfig.angle=angle,link:setConfig.link,shapeArgs:shapeArgs,slicedX:sliced&&!dataSetConfig.singletonCase?mathCos(angle)*slicedOffset:0,slicedY:sliced&&!dataSetConfig.singletonCase?mathSin(angle)*slicedOffsetY:0,sliced:sliced,labelText:displayValue,name:setConfig.name,percentage:setConfig.percentage,toolText:toolText,originalIndex:dataLength-i-1,style:setConfig.style,transX:setConfig.transX=mathCos(angle)*slicedOffset,transY:setConfig.transY=mathSin(angle)*slicedOffsetY,slicedTranslation:setConfig.slicedTranslation="t"+setConfig.transX+","+setConfig.transY,label:dataLabel,connector:connector};setConfig.eventArgs=eventArgs={index:dataSetConfig.reversePlotOrder?dataLength-1-i:i,link:setConfig.link,value:setConfig.y,displayValue:setConfig.displayValueArgs,categoryLabel:setConfig.categoryLabel,isSliced:setConfig.sliced,toolText:setConfig.toolText,color:setConfig.setColor,alpha:setConfig.setAlpha,borderColor:setConfig.borderConfig.setPlotBorderColor,borderAlpha:setConfig.borderConfig.setPlotBorderAlpha,dashed:setConfig.setBorderDashed,showLabel:setConfig.showLabel,showValue:setConfig.showValue,labelPosition:setConfig.labelPosition,valuePosition:setConfig.valuePosition,labelFont:setConfig.labelFont,labelFontColor:setConfig.labelFontColor||"#555555",labelLink:setConfig.labelLink,hoverColor:setConfig.hoverEffects.hoverColor,hoverAlpha:setConfig.hoverEffects.alpha,borderHoverColor:setConfig.hoverBorderColor,borderHoverAlpha:setConfig.hoverEffects.borderAlpha,id:setConfig.id};setElCosmetics={color:setConfig.color.color.split(",")[0],alpha:setConfig._3dAlpha,borderWidth:setConfig.borderWidth,borderColor:setConfig.borderColor,borderAlpha:setConfig.borderConfig.setPlotBorderAlpha};(0,_lib.extend2)(setElAttr,setElCosmetics);setElAttr.cursor=setLink?POINTER:"";setElAttr.showBorderEffect=showBorderEffect;setElAttr.transform="t"+plotItem.slicedX+","+plotItem.slicedY;_textAttrs.plotItem=plotItem;_textAttrs[EVENTARGS]=eventArgs;setConfig.props={element:{attr:setElAttr},connector:{attr:connectorAttr},label:{attr:_textAttrs,css:_textCss}}};_proto.draw=function draw(){var positions,pieYScale,dataSet=this,dataSetComponents=dataSet.components,dataSetConfig=dataSet.config,chart=dataSet.getFromEnv("chart"),chartConfig=chart.config,animationManager=chart.getFromEnv("animationManager"),plotData=dataSetComponents.data,pie3DManager,dataLabelOptions=dataSetConfig.dataLabelOptions,style=dataLabelOptions.style,slicedOffset=dataSetConfig.slicingDistance,slicedOffsetY=dataSetConfig.slicedOffsetY||(dataSetConfig.slicedOffsetY=slicedOffset*dataSetConfig.pieYScale),showBorderEffect=dataSetConfig.showBorderEffect,dataLength=plotData.length,colorLabelFromPoint=dataSetConfig.usePerPointLabelColor,textDirection=chartConfig.textDirection,eventArgs,plotItem,set,val,valueTotal=dataSetConfig.valueTotal,displayValue,setLink,sliced,angle,connectorWidth,shapeArgs,toolText,setConfig,setGraphics,dataLabel,removeDataArr=dataSetComponents.removeDataArr||[],connector,visible=dataSet.getState("visible"),i,dataLabelContainer=dataSet.getContainer("labelGroup"),plotGroup,isTranspose,setElement,_textAttrs,_textCss,setElAttr,connectorAttr,isnewElem,element,sliceElements,setElCosmetics={},prevPositions,toolTipController=dataSet.getFromEnv("toolTipController"),showDataLabels=function showDataLabels(){dataLabelContainer.show();dataSet.placeDataLabels(false)},dataLabelStyle=chartConfig.dataLabelStyle;if(!dataSet.getContainer("pie-groups")){dataSet._createContainer()}dataLabelContainer=dataSet.getContainer("label-group");plotGroup=dataSet.getContainer("plot-group");animationManager.setAnimation({el:dataLabelContainer,attr:{css:dataLabelStyle},component:dataSet,label:"labelcontainer",callback:function callback(){if(!visible||!valueTotal){dataLabelContainer.hide();plotGroup.hide()}else{dataLabelContainer.show();plotGroup.show()}}});dataSet._initPie3dManager();pie3DManager=dataSet.getFromEnv("pie3DManager");removeDataArr.length&&dataSet.remove();positions=dataSetConfig.center;prevPositions=dataSetConfig.prevPositions||positions;pieYScale=dataSetConfig.pieYScale;if(!(plotData&&dataLength)){plotData=[]}i=-1;while(++i<dataLength){set=plotData[i];setConfig=set.config;if(!(_textAttrs=setConfig._textAttrs)){_textAttrs=setConfig._textAttrs={}}setGraphics=set.graphics;val=setConfig.y;displayValue=setConfig.displayValue;sliced=setConfig.sliced;shapeArgs=setConfig.shapeArgs;angle=setConfig.centerAngle;toolText=setConfig.toolText;setLink=!!setConfig.link;style=setConfig.style;if(val===null||val===UNDEF){continue}setElement=setGraphics.element;dataLabel=setGraphics.label;connector=setGraphics.connector;setElAttr={sAngle:shapeArgs.sAngle,eAngle:shapeArgs.eAngle,r:!isTranspose?positions[2]:prevPositions[2],innerR:!isTranspose?positions[3]:prevPositions[3],cx:!isTranspose?positions[0]:prevPositions[0],cy:!isTranspose?positions[1]:prevPositions[1],radiusYFactor:pieYScale,opacity:1};if(!setElement){isnewElem=true;setElement=setGraphics.element=pie3DManager.useSliceFromPool();if(!setElement){setElement=setGraphics.element=pie3DManager.createSlice().drag(plotDragMove,plotDragStart,plotDragEnd).on("fc-mouseover",plotRollOver).on("fc-mouseout",plotRollOut);setElement.on("fc-click",(0,_pie2d.plotClickHandler)(dataSet,setElement))}}else{isnewElem=false}if(displayValue!==UNDEF){if(style){if(!(_textCss=setConfig._textCss)){_textCss=setConfig._textCss={}}_textCss.fontFamily=style.fontFamily;_textCss.fontSize=style.fontSize;_textCss.lineHeight=style.lineHeight;_textCss.fontWeight=style.fontWeight;_textCss.fontStyle=style.fontStyle}else if(setConfig._textCss){dataLabel&&dataLabel.removeCSS();delete setConfig._textCss;_textCss=UNDEF}setConfig.style=style||(style=dataLabelStyle);_textAttrs.text=displayValue;_textAttrs.fill=(colorLabelFromPoint?(0,_lib.toRaphaelColor)(setConfig.color):style.color)||"#000000";_textAttrs["text-bound"]=[style.backgroundColor,style.borderColor,style.borderThickness,style.borderPadding,style.borderRadius,style.borderDash];_textAttrs.direction=textDirection;_textAttrs.lineHeight=style.lineHeight;if(dataLabelOptions.distance>0&&(connectorWidth=dataLabelOptions.connectorWidth)&&dataLabelOptions.enableSmartLabels){connectorAttr={"stroke-width":connectorWidth,stroke:dataLabelOptions.connectorColor||"#606060",cursor:setLink?POINTER:"",opacity:1};dataLabelContainer.show();connector=setGraphics.connector=animationManager.setAnimation({el:setGraphics.connector||"path",attr:connectorAttr,container:dataLabelContainer,label:"connector",component:dataSet}).show().on("fc-dragstart",plotDragStart).on("fc-dragmove",plotDragMove).on("fc-dragend",plotDragEnd).on("fc-mouseover",plotRollOver).on("fc-mouseout",plotRollOut)}}if(!valueTotal){dataLabel&&dataLabel.hide();connector&&connector.hide()}else{dataLabel&&dataLabel.show();connector&&connector.show()}plotItem={chart:chart,index:i,seriesData:dataSetConfig,value:val,angle:setConfig.angle=angle,link:setConfig.link,shapeArgs:shapeArgs,slicedX:sliced&&!dataSetConfig.singletonCase?mathCos(angle)*slicedOffset:0,slicedY:sliced&&!dataSetConfig.singletonCase?mathSin(angle)*slicedOffsetY:0,sliced:sliced,labelText:displayValue,name:setConfig.name,percentage:setConfig.percentage,toolText:toolText,originalIndex:dataLength-i-1,style:setConfig.style,graphic:setElement,transX:setConfig.transX=mathCos(angle)*slicedOffset,transY:setConfig.transY=mathSin(angle)*slicedOffsetY,slicedTranslation:setConfig.slicedTranslation="t"+setConfig.transX+","+setConfig.transY,label:dataLabel,connector:connector};eventArgs={index:dataSetConfig.reversePlotOrder?dataLength-1-i:i,link:setConfig.link,value:setConfig.y,displayValue:setConfig.displayValueArgs,categoryLabel:setConfig.categoryLabel,isSliced:setConfig.sliced,toolText:setConfig.toolText,color:setConfig.setColor,alpha:setConfig.setAlpha,borderColor:setConfig.borderConfig.setPlotBorderColor,borderAlpha:setConfig.borderConfig.setPlotBorderAlpha,dashed:setConfig.setBorderDashed,showLabel:setConfig.showLabel,showValue:setConfig.showValue,labelPosition:setConfig.labelPosition,valuePosition:setConfig.valuePosition,labelFont:setConfig.labelFont,labelFontColor:setConfig.labelFontColor||"#555555",labelLink:setConfig.labellink,hoverColor:setConfig.hoverEffects.hoverColor,hoverAlpha:setConfig.hoverEffects.alpha,borderHoverColor:setConfig.hoverBorderColor,borderHoverAlpha:setConfig.hoverEffects.borderAlpha,id:setConfig.id};setElCosmetics={color:setConfig.color.color.split(",")[0],alpha:setConfig._3dAlpha,borderWidth:setConfig.borderWidth,borderColor:setConfig.borderColor,borderAlpha:setConfig.borderConfig.setPlotBorderAlpha};if(isnewElem){(0,_lib.extend2)(setElAttr,setElCosmetics)}setElement.data(GROUPID,i).data("plotItem",plotItem).data(EVENTARGS,eventArgs);setElement.data(GROUPID,i).data("plotItem",plotItem).data(EVENTARGS,eventArgs);setElAttr.cursor=setLink?POINTER:"";setElAttr.showBorderEffect=showBorderEffect;setElAttr.color=setConfig.color.color.split(",")[0];setElAttr.alpha=setConfig._3dAlpha;setElAttr.borderWidth=setConfig.borderWidth;setElAttr.borderColor=setConfig.borderColor;toolTipController.enableToolTip(setElement,toolText);sliceElements=setElement._confObject.elements;for(element in sliceElements){toolTipController.enableToolTip(sliceElements[element],toolText)}setElAttr.transform="t"+plotItem.slicedX+","+plotItem.slicedY;_textAttrs.plotItem=plotItem;_textAttrs[EVENTARGS]=eventArgs;animationManager.setAnimation({el:setElement,attr:setElAttr,component:dataSet,label:"slice",state:isnewElem?"appearing":"updating"});connector&&connector.data("plotItem",plotItem).data(EVENTARGS,eventArgs)}showDataLabels();dataSet.drawn=true;dataSetConfig.prevPositions=positions.slice(0)};_proto.remove=function remove(){var dataSet=this,conf=dataSet.config,components=dataSet.components,animationManager=dataSet.getFromEnv("animationManager"),removeDataArr=components.removeDataArr||[],pool=dataSet.pool=dataSet.pool=[],len=removeDataArr.length,pie3DManager=this.getFromEnv("pie3DManager"),removeData,ele,graphics,i,elem,hideFunc=function hideFunc(graphic,type){return function(){if(type===elementStr){pie3DManager.removeSlice(graphic.element);delete graphic.element}else{graphic[type].hide()}}},startAngle=conf.startAngle,positions=conf.center;for(i=0;i<len;i++){removeData=removeDataArr[0];graphics=removeData.graphics;for(ele in graphics){elem=graphics[ele];if(!pool[ele]){pool[ele]=[]}if(ele===elementStr){animationManager.setAnimation({el:elem,attr:{sAngle:-startAngle,eAngle:-startAngle+.01,r:positions[2],innerR:positions[3],cx:positions[0],cy:positions[1]},component:dataSet,callback:hideFunc(graphics,ele)})}else{animationManager.setAnimation({el:elem,attr:{opacity:0},component:dataSet,callback:hideFunc(graphics,ele)})}}removeDataArr.splice(0,1)}};_proto._rotate=function _rotate(stAngle){var dataSet=this,setAngle=stAngle,dataSetConfig=dataSet.config,animationManager=dataSet.getFromEnv("animationManager"),dataSetComponents=dataSet.components,data=dataSetComponents.data,slicedOffset=dataSetConfig.slicedOffset,slicedOffsetY=dataSetConfig.slicedOffsetY,startingAngle=dataSetConfig.startAngle,pie3DManager=dataSet.getFromEnv("pie3DManager"),angle;setAngle=!isNaN(setAngle)?setAngle:-dataSetConfig._lastAngle;angle=(setAngle-startingAngle)%360;dataSetConfig.startAngle=(0,_lib.pluckNumber)(setAngle,dataSetConfig.startAngle)%360;angle=-(angle*pi)/180;if(pie3DManager){pie3DManager.rotate(angle)}(0,_lib.fcEach)(data,(function(point){var slicedTranslation=[],pointGraphics=point.graphics,pointConfig=point.config,element=pointGraphics.element,args=pointConfig.shapeArgs,newAngleArgs={sAngle:args.sAngle+=angle,eAngle:args.eAngle+=angle},pointAngle=pointConfig.angle=(0,_lib.normalizeAngle)((newAngleArgs.sAngle+newAngleArgs.eAngle)/2),sliced=pointConfig.sliced,cosAngle=mathCos(pointAngle),sinAngle=mathSin(pointAngle);slicedTranslation=pointConfig.slicedTranslation=[mathRound(cosAngle*slicedOffset),mathRound(sinAngle*slicedOffsetY)];pointConfig.transX=slicedTranslation[0];pointConfig.transY=slicedTranslation[1];pointConfig.slicedX=sliced?mathCos(angle)*slicedOffset:0;pointConfig.slicedY=sliced?mathSin(angle)*slicedOffsetY:0;if(element&&sliced){animationManager.setAnimation({el:element,attr:{transform:"t"+slicedTranslation[0]+","+slicedTranslation[1]},component:dataSet})}}));dataSet.placeDataLabels(true,data)};_proto.foldingFn=function foldingFn(){var conf=this.config,startAngle=conf.startAngle;return{sAngle:-startAngle,eAngle:-startAngle+.01}};_proto.getType=function getType(){return"dataset"};_proto.getName=function getName(){return"pie3d"};return Pie3DDataset}(_pie2d.default);if(Raphael&&Raphael._availableAnimAttrs&&Raphael._availableAnimAttrs.cx){Raphael._availableAnimAttrs.innerR=Raphael._availableAnimAttrs.depth=Raphael._availableAnimAttrs.radiusYFactor=Raphael._availableAnimAttrs.sAngle=Raphael._availableAnimAttrs.eAngle=Raphael._availableAnimAttrs.cx}(0,_redraphaelShapes.default)(Raphael);var Pie3DManager=function(_ComponentInterface){function Pie3DManager(chart){var _this;_this=_ComponentInterface.call(this)||this;var manager=_this;manager.config={};manager.linkedItems={chart:chart};return _this}(0,_inheritsLoose2.default)(Pie3DManager,_ComponentInterface);var _proto2=Pie3DManager.prototype;_proto2.getType=function getType(){return"pie3DManager"};_proto2.getName=function getName(){return"pie3d"};_proto2.createSlice=function createSlice(){var manager=this,renderer=manager.renderer,returnElement,confObject={elements:{},Pie3DManager:manager},slicingWallsArr=manager.slicingWallsArr,elements=confObject.elements,renderingPath=_lib.hasSVG?"litepath":"path";returnElement=renderer[renderingPath](manager.getContainer("topGroup"));returnElement._confObject=confObject;confObject.thisElement=returnElement;returnElement._destroy=returnElement.destroy;returnElement.destroy=destroyFN;returnElement._show=returnElement.show;returnElement.show=showFN;returnElement._hide=returnElement.hide;returnElement.hide=hideFN;returnElement._on=returnElement.on;returnElement.on=onFN;returnElement._drag=returnElement.drag;returnElement.drag=onDragFN;returnElement._attr=returnElement.attr;returnElement.attr=attrFN;returnElement._data=returnElement.data;returnElement.data=dataFN;manager.pointElemStore.push(returnElement);elements.topBorder=renderer[renderingPath](manager.getContainer("topGroup"));elements.bottom=renderer[renderingPath](manager.getContainer("bottomBorderGroup")).attr({"stroke-width":0});elements.bottomBorder=renderer[renderingPath](manager.getContainer("bottomBorderGroup"));elements.frontOuter=renderer[renderingPath](manager.getContainer("slicingWallsFrontGroup")).attr({"stroke-width":0});elements.backOuter=renderer[renderingPath](manager.getContainer("slicingWallsFrontGroup")).attr({"stroke-width":0});elements.startSlice=renderer[renderingPath](manager.getContainer("slicingWallsFrontGroup"));elements.endSlice=renderer[renderingPath](manager.getContainer("slicingWallsFrontGroup"));elements.frontOuter1=renderer[renderingPath](manager.getContainer("slicingWallsFrontGroup")).attr({"stroke-width":0});elements.frontOuter._conf={si:si,isStart:.5};elements.frontOuter1._conf={si:si,isStart:.5};elements.startSlice._conf={si:si,isStart:0};elements.endSlice._conf={si:si,isStart:1};elements.backOuter._conf={si:si,isStart:.4};slicingWallsArr.push(elements.startSlice,elements.frontOuter1,elements.frontOuter,elements.backOuter,elements.endSlice);if(manager.isDoughnut){elements.frontInner=renderer[renderingPath](manager.getContainer("slicingWallsFrontGroup")).attr({"stroke-width":0});elements.backInner=renderer[renderingPath](manager.getContainer("slicingWallsFrontGroup")).attr({"stroke-width":0});elements.backInner._conf={si:si,isStart:.5};elements.frontInner._conf={si:si,isStart:.4};slicingWallsArr.push(elements.frontInner,elements.backInner)}si+=1;return returnElement};_proto2.refreshDrawing=function refreshDrawing(){var slicingWallsArr=this.slicingWallsArr,x=0,sWall,ln=slicingWallsArr.length,startIndex,lastElem2,lastElem3,index,frontGroup=this.getContainer("slicingWallsFrontGroup"),backGroup=this.getContainer("slicingWallsBackGroup");slicingWallsArr.sort(elementZSortFn);startIndex=getStartIndex(slicingWallsArr);for(;x<ln;x+=1,startIndex+=1){if(startIndex===ln){startIndex=0}sWall=slicingWallsArr[startIndex];index=sWall._conf.index;if(index<piBy2){frontGroup.appendChild(sWall)}else if(index<=pi){if(lastElem2){sWall.insertBefore(lastElem2)}else{frontGroup.appendChild(sWall)}lastElem2=sWall}else if(index<=pi3By2){if(lastElem3){sWall.insertBefore(lastElem3)}else{backGroup.appendChild(sWall)}lastElem3=sWall}else{backGroup.appendChild(sWall)}}};_proto2.configure=function configure(dpth,hasOnePt,use3DLight,isDghnut){var manager=this,depth=dpth,hasOnePoint=hasOnePt,use3DLighting=use3DLight,isDoughnut=isDghnut,dataSet=manager.getLinkedParent(),renderer=manager.getFromEnv("paper"),seriesGroup=dataSet.getContainer("plot-group");if(isObject(depth)){depth=depth.depth;hasOnePoint=depth.hasOnePoint;use3DLighting=depth.use3DLighting;isDoughnut=depth.isDoughnut}if(!manager.renderer){manager.renderer=renderer}manager.hasOnePoint=hasOnePoint;manager.use3DLighting=use3DLighting;manager.isDoughnut=isDoughnut;manager.depth=depth;!manager.getContainer("bottomBorderGroup")&&manager.addContainer("bottomBorderGroup",renderer.group("bottom-border",seriesGroup));manager.getContainer("bottomBorderGroup").attr({transform:"t0,"+depth});!manager.getContainer("slicingWallsBackGroup")&&manager.addContainer("slicingWallsBackGroup",renderer.group("slicingWalls-back-Side",seriesGroup));!manager.getContainer("slicingWallsFrontGroup")&&manager.addContainer("slicingWallsFrontGroup",renderer.group("slicingWalls-front-Side",seriesGroup));!manager.getContainer("topGroup")&&manager.addContainer("topGroup",renderer.group("top-Side",seriesGroup));!manager.pointElemStore&&(manager.pointElemStore=[]);!manager.slicingWallsArr&&(manager.slicingWallsArr=[]);manager.moveCmdArr=[M];manager.lineCmdArr=[L];manager.closeCmdArr=[Z];manager.colorObjs=[]};_pr