@fusioncharts/widgets
Version:
FusionCharts JavaScript charting framework
1 lines • 18.5 kB
JavaScript
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _componentInterface=require("@fusioncharts/core/src/component-interface");var _lib=require("@fusioncharts/core/src/lib");var _pie2d=require("@fusioncharts/charts/src/dataset/pie2d");var _column=require("@fusioncharts/charts/src/dataset/column");var _schedular=require("@fusioncharts/core/src/schedular");var CRISP="crisp",M="M",L="L",POINTER="pointer",DEFAULT="default",win=window,userAgent=win.navigator.userAgent,isIE=/msie/i.test(userAgent)&&!win.opera,noneStr="none",EVENTARGS="eventArgs",TRACKER_FILL="rgba(192,192,192,"+(isIE?.002:1e-6)+")",removeCSSProps=["fontFamily","fontSize","fontWeight","fontStyle"],hideFn=function hideFn(){this.hide()},ROLLOVER="DataPlotRollOver",ROLLOUT="DataPlotRollOut",MOUSEOVER="mouseover",extractTextStyle=function extractTextStyle(dataObj,chartAttr){var keyMap={labelfont:"fontFamily",labelfontcolor:"color",labelfontsize:"fontSize",labelfontbold:"fontWeight",labelfontitalic:"fontStyle",labelalpha:"alpha"},style,key;for(key in keyMap){if(!(key in dataObj)&&!(key in chartAttr)){continue}style=style||{};if(key==="labelfontsize"){style[keyMap[key]]=(0,_lib.pluck)(dataObj[key],this.computeFontSize(chartAttr[key]));style.fontSizeWithUnit=(0,_lib.pluckFontSizeMaintainUnit)(dataObj.labelfontsize,chartAttr.labelfontsize)}else{style[keyMap[key]]=(0,_lib.pluck)(dataObj[key],chartAttr[key])}}if(!style){return style}if(style.fontWeight){style.fontWeight=(0,_lib.pluckNumber)(style.fontWeight)?"bold":"normal"}if(style.fontStyle){style.fontStyle=(0,_lib.pluckNumber)(style.fontStyle)?"italic":"normal"}style.color=(0,_lib.convertColor)(style.color,style.alpha);return style};var FunnelPyramidBasePoint=function(_ComponentInterface){function FunnelPyramidBasePoint(){var _this;_this=_ComponentInterface.call(this)||this;var point=_this;_this.hoverHandler=function(evt){var graphic=point.getGraphicalElement("graphic"),chart=point.getLinkedParent().getFromEnv("chart"),ele=this;ele.data(EVENTARGS,Object.assign(ele.data(EVENTARGS),{isSliced:point.isSliced}));if(evt.type===MOUSEOVER){graphic.attr(point.setRolloverAttr);chart.plotEventHandler(ele,evt,ROLLOVER)}else{graphic.attr(point.setRolloutAttr);chart.plotEventHandler(ele,evt,ROLLOUT)}};return _this}(0,_inheritsLoose2.default)(FunnelPyramidBasePoint,_ComponentInterface);var _proto=FunnelPyramidBasePoint.prototype;_proto.parseAndConfigurePoint=function parseAndConfigurePoint(dataObj,res,colorIndex,index){var point=this,datasetStore=point.getLinkedParent(),chart=datasetStore.getFromEnv("chart"),conf=datasetStore.config,numberFormatter=datasetStore.getFromEnv("number-formatter"),smartLabel=datasetStore.getFromEnv("smartLabel"),colorManager=datasetStore.getFromEnv("color-manager"),showValue,refreshedData,highestValue,patternType,patternAngle,patternDensity,patternSize,patternAlpha,patternBgColor,sumValue=0,sum,dataValue,prevValue,name,smartTextObj,pointSliced,pValue,formatedVal,labelText,displayValueText,displayValue,toolText,ttValue,filteredDataObj,id,showPercentValues=conf.showPercentValues,labelSepChar=conf.labelSepChar,chartAttr=chart.getFromEnv("chart-attrib"),isSliced=conf.isSliced,plotColor,plotAlpha,plotBorderColor,plotBorderAlpha,pointShadow={apply:conf.showShadow,opacity:1},minplotheightforvalue=(0,_lib.pluckNumber)(dataObj.minplotheightforvalue,chartAttr.minplotheightforvalue,0),tooltipOptions,hoverEffects,displayValueArgs,plotBorderWidth=conf.plotBorderThickness,defStyle=conf.style,legendItemId,colorApplied,labellink,legendColor,legendIconAlpha,legendIconBgAlpha;conf.showTextOutline=(0,_lib.pluckNumber)(chartAttr.textoutline,0);refreshedData=res.refreshedData;sumValue=res.sumValue;sum=numberFormatter.dataLabels(sumValue);highestValue=res.highestValue;labellink=(0,_lib.pluck)(dataObj.labellink,chartAttr.labellink,dataObj.link,_lib.UNDEF);legendItemId=dataObj.legendItemId;dataValue=dataObj.cleanValue;prevValue=index?refreshedData[index-1].value:dataValue;name=(0,_lib.parseUnsafeString)((0,_lib.pluck)(dataObj.label,dataObj.name,_lib.BLANKSTRING));id=dataObj.id?(0,_lib.parseUnsafeString)((0,_lib.pluck)(dataObj.id)):name;smartLabel.setStyle(point.getFromEnv("dataLabelStyle"));smartTextObj=smartLabel.getOriSize(name);patternType=_column.PATTERN_TYPES.includes(dataObj.patterntype)?dataObj.patterntype:conf.patternType;patternAngle=(0,_lib.pluckNumber)(dataObj.patternangle,chart.getFromEnv("chart-attrib").patternangle,patternType===_column.PATTERN_TYPES[0]?40:0);patternDensity=(0,_lib.pluckNumber)(dataObj.patterndensity,conf.patternDensity);patternSize=(0,_lib.pluckNumber)(dataObj.patternsize,patternType===_column.PATTERN_TYPES[0]?2:4);patternAlpha=(0,_lib.pluckNumber)(dataObj.patternalpha,conf.patternAlpha);patternBgColor=(0,_lib.pluck)(dataObj.patternbgcolor,conf.patternBgColor);plotAlpha=dataObj.alpha||conf.plotFillAlpha;colorApplied=(0,_lib.pluck)(dataObj.color,colorManager.getPlotColor(colorIndex));legendColor=(0,_lib.convertColor)(colorApplied);legendIconAlpha=dataObj.legendiconalpha;legendIconBgAlpha=dataObj.legendiconbgalpha;plotColor=(0,_lib.convertColor)(colorApplied,plotAlpha);plotBorderColor=(0,_lib.pluck)(dataObj.bordercolor,conf.plotBorderColor,conf.usePattern?colorApplied:(0,_lib.getLightColor)(colorApplied,25)).split(_lib.COMMASTRING)[0];plotBorderAlpha=!conf.showPlotBorder?_lib.ZEROSTRING:(0,_lib.pluck)(dataObj.borderalpha,conf.plotBorderAlpha,conf.usePattern?"100":"80");pointShadow.opacity=Math.max(plotAlpha,plotBorderAlpha)/100;pointSliced=(0,_lib.pluckNumber)(dataObj.issliced,isSliced);if(pointSliced){conf.noOFSlicedElement+=1;conf.preSliced=pointSliced}if(res.prevPerValReq){sumValue=prevValue}pValue=numberFormatter.percentValue(dataValue/sumValue*100);if(!conf.datalabelDisabled){formatedVal=numberFormatter.dataLabels(dataValue)||_lib.BLANKSTRING;labelText=conf.showLabels===1?name:_lib.BLANKSTRING;showValue=(0,_lib.pluckNumber)(dataObj.showvalue,conf.showValues,1);displayValueText=showValue===1?showPercentValues===1?pValue:formatedVal:_lib.BLANKSTRING;displayValue=(0,_lib.getValidValue)((0,_lib.parseUnsafeString)(dataObj.displayvalue));displayValueArgs=(0,_lib.pluck)(displayValue,name+labelSepChar+(showPercentValues?pValue:formatedVal),_lib.BLANKSTRING);if(displayValue){displayValueText=displayValue}else{if(displayValueText!==_lib.BLANKSTRING&&labelText!==_lib.BLANKSTRING){displayValueText=labelText+labelSepChar+displayValueText}else{displayValueText=(0,_lib.pluck)(labelText,displayValueText)||_lib.BLANKSTRING}}}toolText=(0,_lib.getValidValue)((0,_lib.parseUnsafeString)((0,_lib.pluck)(dataObj.tooltext,conf.toolText),false));if(toolText!==_lib.UNDEF){tooltipOptions={formatedVal:formatedVal,name:name,pValue:pValue,sum:sum,sumValue:sum,dataValue:dataValue,prevValue:prevValue,highestValue:highestValue};toolText=(0,_lib.parseTooltext)(toolText,[1,2,3,7,14,24,25,37],datasetStore.getTooltipMacroStub(tooltipOptions),dataObj,chartAttr)}else{ttValue=conf.showPercentInToolTip===1?pValue:formatedVal;toolText=name!==_lib.BLANKSTRING?name+conf.tooltipSepChar+ttValue:ttValue}hoverEffects=datasetStore.pointHoverOptions(dataObj,{color:colorApplied,alpha:plotAlpha,borderColor:plotBorderColor,borderAlpha:plotBorderAlpha,borderWidth:plotBorderWidth});filteredDataObj={displayValue:displayValueText,origValue:displayValueText,displayValueArgs:displayValueArgs,style:_lib.parsexAxisStyles.apply(this,[dataObj,{},chartAttr,defStyle,plotColor]),appliedStyle:extractTextStyle.apply(this,[dataObj,chartAttr]),name:name,categoryLabel:name,rawColor:colorApplied,rawAlpha:plotAlpha,toolText:toolText,legendCosmetics:_lib.UNDEF,legendItemId:legendItemId||point&&point.legendItemId,showInLegend:_lib.UNDEF,y:dataValue,shadow:pointShadow,smartTextObj:smartTextObj,legendColor:legendColor,color:plotColor,alpha:plotAlpha,legendiconalpha:legendIconAlpha,legendiconbgalpha:legendIconBgAlpha,borderColor:(0,_lib.convertColor)(plotBorderColor,plotBorderAlpha),plotBorderColor:plotBorderColor,plotBorderAlpha:plotBorderAlpha,borderWidth:plotBorderWidth,link:(0,_lib.getValidValue)(dataObj.link),isSliced:pointSliced,doNotSlice:!conf.enableSlicing,hoverEffects:hoverEffects.enabled&&hoverEffects.options,labellink:labellink,rolloverProperties:hoverEffects.enabled&&hoverEffects.rolloverOptions,minplotheightforvalue:minplotheightforvalue,showValue:showValue,id:id,patternAttr:{patternType:patternType,patternAngle:patternAngle,patternDensity:patternDensity,patternSize:patternSize,patternAlpha:patternAlpha,patternBgColor:patternBgColor,color:plotColor,alpha:plotAlpha,x:0,y:0}};point.configure(filteredDataObj)};_proto.drawLabel=function drawLabel(){var point=this,index=point.index,datasetStore=point.getLinkedParent(),chart=datasetStore.getFromEnv("chart"),animationManager=datasetStore.getFromEnv("animationManager"),toolTipController=datasetStore.getFromEnv("toolTipController"),conf=datasetStore.config,dataLabelsGroup=chart.getChildContainer("datalabelsGroup"),dataStore=datasetStore.getChildren("data"),displayValue=point.displayValue,plotItem=point.plot||{},dataLabel=point.getGraphicalElement("dataLabel"),connector=point.getGraphicalElement("connector"),isNewDataLabel=!dataLabel,labelY=point.labelY,labelX=point.labelX,style=point.style||{},fontSize=(0,_lib.pluckNumber)(parseInt(style.fontSize,10),conf.baseFontSize),isFunnel=datasetStore.getName()==="funnel",lineHeight=conf.lineHeight,value,connectorAttr,actions,drawConnector,labelDrawingConfig,yShift=fontSize*.3,yDisplacement=lineHeight*.3,connectorStartY,connectorEndY,lastConnectorEndY,showLabelsAtCenter=conf.showLabelsAtCenter,rolloverAttr=point.setRolloverAttr,eventArgs,connectorEndSwitchHistoryY=conf.connectorEndSwitchHistoryY,connectorEndX,connectorStartX,labelDistance=conf.labelDistance,blankSpace=conf.blankSpace,connectorPath,yD,streamLinedData=conf.streamLinedData,shapeArgs=point.shapeArgs,canLabelBeShown=!shapeArgs||shapeArgs.h>point.minplotheightforvalue;if(!point.displayValue||isFunnel&&!conf.streamLinedData&&!index){dataLabel&&animationManager.setAnimation({el:dataLabel,component:datasetStore,callback:hideFn,doNotRemove:true});connector&&animationManager.setAnimation({el:connector,component:datasetStore,callback:hideFn,doNotRemove:true});return}labelDrawingConfig=datasetStore.config.labelDrawingConfig[index];actions=labelDrawingConfig.actions;value=point.y;connectorAttr={"stroke-width":conf.dataConnectorStyle.connectorWidth,stroke:conf.dataConnectorStyle.connectorColor,transform:labelDrawingConfig.transform};labelDrawingConfig.args.cursor=point.labellink?"pointer":"default";if(labelDrawingConfig.args&&labelDrawingConfig.css){labelDrawingConfig.args.fill=labelDrawingConfig.css.color||labelDrawingConfig.css.fill}if(value===null||value===_lib.UNDEF||!shapeArgs){if(dataLabel){dataLabel.removeCSS(removeCSSProps);dataLabel&&animationManager.setAnimation({el:dataLabel,attr:labelDrawingConfig.args,component:datasetStore});dataLabel&&dataLabel.css(labelDrawingConfig.css)}else{dataLabel=animationManager.setAnimation({el:"text",label:"dataLabel",attr:labelDrawingConfig.args,css:labelDrawingConfig.css,container:dataLabelsGroup,component:datasetStore});point.addGraphicalElement("dataLabel",dataLabel)}dataLabel.outlineText(conf.showTextOutline,labelDrawingConfig.args.fill)}else{drawConnector=!(isFunnel&&index===0&&conf.streamLinedData);if(point.plot){dataLabel&&dataLabel.removeCSS(removeCSSProps);dataLabel=animationManager.setAnimation({el:dataLabel||"text",label:"dataLabel",attr:labelDrawingConfig.args,css:labelDrawingConfig.css,container:dataLabelsGroup,component:datasetStore});dataLabel.outlineText(conf.showTextOutline,labelDrawingConfig.args.fill);point.addGraphicalElement("dataLabel",dataLabel);connector=animationManager.setAnimation({el:connector||"path",attr:drawConnector&&connectorAttr,container:dataLabelsGroup,callback:function callback(){conf.showLabelsAtCenter&&this.hide()},component:datasetStore,label:"connector"});drawConnector&&point.addGraphicalElement("connector",connector)}toolTipController.enableToolTip(dataLabel,point.originalText);if(!isNewDataLabel){point.labelClickFn&&dataLabel.off("fc-click",point.labelClickFn);point.actionsClick&&dataLabel.off("fc-click",point.actionsClick)}eventArgs={index:point.index,link:point.link,value:point.y,displayValue:point.displayValueArgs,categoryLabel:point.categoryLabel,dataIndex:point.index||_lib.BLANK,toolText:point.toolText,label:point.categoryLabel,color:point.rawColor,alpha:point.rawAlpha,showValue:point.showValue,isSliced:point.isSliced,borderColor:point.plotBorderColor,borderAlpha:point.plotBorderAlpha,hoverColor:rolloverAttr.color,hoverAlpha:rolloverAttr.opacity,borderHoverColor:rolloverAttr.rawBorderColor,borderHoverAlpha:rolloverAttr.borderAlpha,borderHoverThickness:rolloverAttr["stroke-width"],id:point.id};dataLabel.data(EVENTARGS,eventArgs);point.labellink&&dataLabel.on("fc-click",function(_dataLabel,labellink){point.labelClickFn=function(){_pie2d.labelClickFn.call(_dataLabel,chart,labellink)};return point.labelClickFn}(dataLabel,point.labellink));!point.doNotSlice&&dataLabel.on("fc-click",function(context){point.actionsClick=function(){actions.click.call(context)};return point.actionsClick}(labelDrawingConfig.context));isNewDataLabel&&dataLabel.hover(actions.hover[0],actions.hover[1])}if(!showLabelsAtCenter){connectorStartY=labelY-yShift-point.distributionFactor*lineHeight;connectorEndY=labelY-yShift;lastConnectorEndY=connectorEndSwitchHistoryY[point.alignmentSwitch];if(conf.lastplotY!==_lib.UNDEF&&lastConnectorEndY!==_lib.UNDEF&&lastConnectorEndY-connectorEndY<lineHeight){connectorEndY=lastConnectorEndY-lineHeight;labelY=connectorEndY}point.displayValue&&(connectorEndSwitchHistoryY[point.alignmentSwitch]=connectorEndY);conf.lastplotY=point.plotY;if(conf.labelAlignment===conf.alignmentType.alternate){if(point.alignmentSwitch){connectorEndX=labelX+blankSpace+point.virtualWidth;connectorStartX=connectorEndX+labelDistance+point.distributionFactor*conf.globalMinXShift}else{connectorEndX=labelX-blankSpace;connectorStartX=connectorEndX-(labelDistance-(point.lOverflow||0))-point.distributionFactor*conf.globalMinXShift}}else{connectorEndX=labelX-blankSpace;connectorStartX=connectorEndX-(labelDistance-(point.lOverflow||0))-point.distributionFactor*conf.globalMinXShift}if(typeof displayValue!=="undefined"&&displayValue!==_lib.BLANKSTRING&&!(isFunnel&&index===0&&streamLinedData)){connectorPath=[M,connectorStartX,connectorStartY,L,connectorEndX,connectorEndY];animationManager.setAnimation({el:connector,state:"transform",label:"connector",attr:{path:connectorPath,"shape-rendering":connectorStartY===connectorEndY&&connectorEndY<1?CRISP:_lib.BLANK},component:datasetStore});connector.show()}else{connector&&animationManager.setAnimation({el:connector,component:datasetStore})}if(index===0&&streamLinedData){yD=labelY+(dataStore[1].plot.dy||0)}else{yD=connectorEndY+(plotItem.dy||0)}if(displayValue!==_lib.BLANKSTRING){animationManager.setAnimation({el:dataLabel,state:"transform",attr:{transform:["t",labelX,yD]},component:datasetStore,label:"dataLabel"});dataLabel.show()}else{dataLabel&&animationManager.setAnimation({el:dataLabel,component:datasetStore})}}else{if(index===0&&streamLinedData){yD=labelY-yDisplacement+(dataStore[1].plot.distanceAvailed||0)}else{yD=labelY-yDisplacement+(plotItem.distanceAvailed||0)}if(displayValue!==_lib.BLANKSTRING){animationManager.setAnimation({el:dataLabel,attr:{transform:["t",labelX,yD]},component:datasetStore});dataLabel.show()}else{dataLabel&&animationManager.setAnimation({el:dataLabel,component:datasetStore})}if(!canLabelBeShown&&point.getGraphicalElement("dataLabel")){point.getGraphicalElement("dataLabel").hide()}}dataLabel.attr({"text-bound":[style.backgroundColor,style.borderColor,style.borderThickness,style.borderPadding,style.borderRadius,style.borderDash]})};_proto.drawTracker=function drawTracker(){var point=this,datasetStore=point.getLinkedParent(),chart=datasetStore.getFromEnv("chart"),renderer=chart.getFromEnv("paper"),trackerGroup=chart.getChildContainer("trackerGroup"),shapeArgs,trackerObj,trackerLabel=+new Date,graphic,rolloverAttr,eventArgs;if(!point){return}graphic=point.getGraphicalElement("graphic");trackerObj=point.getGraphicalElement("trackerObj");if(graphic){shapeArgs=graphic.Shapeargs.silhuette;rolloverAttr=point.setRolloverAttr;eventArgs={index:point.index,link:point.link,value:point.y,displayValue:point.displayValueArgs,categoryLabel:point.categoryLabel,dataIndex:point.index||_lib.BLANK,toolText:point.toolText,label:point.categoryLabel,color:point.rawColor,alpha:point.rawAlpha,showValue:point.showValue,isSliced:point.isSliced,borderColor:point.plotBorderColor,borderAlpha:point.plotBorderAlpha,hoverColor:rolloverAttr.color,hoverAlpha:rolloverAttr.opacity,borderHoverColor:rolloverAttr.rawBorderColor,borderHoverAlpha:rolloverAttr.borderAlpha,borderHoverThickness:rolloverAttr["stroke-width"],id:point.id};if(datasetStore.config.usePattern){eventArgs.pattern={patternType:point.patternAttr.patternType,patternColor:point.patternAttr.color,patternBgColor:point.patternAttr.patternBgColor===TRACKER_FILL?_lib.UNDEF:point.patternAttr.patternBgColor};delete eventArgs.color}point.datasetIndex=point.index;if(trackerObj){trackerObj.attr({path:shapeArgs,isTracker:trackerLabel,fill:TRACKER_FILL,stroke:noneStr,transform:"t0,"+(point.plot._startTranslateY||0),cursor:point.link?POINTER:DEFAULT})}else{trackerObj=renderer.path(shapeArgs,trackerGroup).attr({isTracker:trackerLabel,fill:TRACKER_FILL,stroke:noneStr,transform:"t0,"+(point.plot._startTranslateY||0),cursor:point.link?POINTER:DEFAULT});point.addGraphicalElement("trackerObj",trackerObj)}trackerObj.data(EVENTARGS,eventArgs);trackerObj.show()}};_proto.syncDraw=function syncDraw(){var component=this;component.fireEvent("predraw");component.removeJob("draw");component.getState("removed")?component.removingDraw():component.drawPlots&&component.drawPlots();component.addExtEventListener("animationComplete",component.__remove,component.getFromEnv("animationManager"));component.childrenSyncDraw();component.setState("dirty",false);component.setState("parentChanged",false);component.addJob("draw-complete",(function(){component.fireEvent("drawn")}),_schedular.priorityList.instant)};return FunnelPyramidBasePoint}(_componentInterface.ComponentInterface);var _default=exports.default=FunnelPyramidBasePoint;