UNPKG

@fusioncharts/charts

Version:

JavaScript Data Visualisation Library

1 lines 10.3 kB
"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 _mscolumn2d=_interopRequireDefault(require("../mscolumn2d"));var _quadrant=_interopRequireDefault(require("../../_internal/components/quadrant"));var _xyAxis=_interopRequireDefault(require("../../factories/xy-axis"));var _legend=_interopRequireDefault(require("../../factories/legend"));var _lib=require("@fusioncharts/core/src/lib");var UNDEF,MOUSEOUT="fc-mouseout",LINEAR="linear",SEVENTY_STR="70",AUTO_STR="auto",TOOLTIP_SEP_CHAR=", ",_getHoveredTrendLine=function _getHoveredTrendLine(chartX,chartY,trendLines){var i,trendLinesLen=trendLines&&trendLines.length,xPos=chartX,yPos=chartY,slope,trendObj,A,B,C,dist,x1,y1,x2,y2;if(!trendLinesLen){return UNDEF}for(i=trendLinesLen-1;i>=0;i--){trendObj=trendLines[i];x1=trendObj.x1;y1=trendObj.y1;x2=trendObj.x2;y2=trendObj.y2;if(trendObj.isTrendZone){if(xPos>=x1&&xPos<=x2&&yPos>=y1&&yPos<=y2){return trendObj}}else{if(y1!==y2&&x1!==x2){slope=(y1-y2)/(x1-x2);A=slope;B=-1;C=y1-slope*x1;dist=Math.abs(A*xPos+B*yPos+C)/Math.sqrt(Math.pow(A,2)+Math.pow(B,2))}else if(x1===x2){dist=Math.abs(x1-xPos)}else if(y1===y2){dist=Math.abs(y1-yPos)}if(dist<=trendObj.tolerance){return trendObj}}}};var ScatterBase=function(_MSColumn2D){function ScatterBase(){var _this;_this=_MSColumn2D.call(this)||this;_this.registerFactory("axis",_xyAxis.default,["canvas"]);_this.registerFactory("legend",_legend.default);_this.registerFactory("quadrant",(function(chart){var canvas=chart.getChildren("canvas")[0],quadrant,children=chart.getChildren(),redraw=function redraw(){return quadrant.asyncDraw()};(0,_lib.componentFactory)(canvas,_quadrant.default,"quadrant");quadrant=canvas.getChildren("quadrant")[0];quadrant.addExtEventListener("visiblerangeset",redraw,children.xAxis[0]);quadrant.addExtEventListener("visiblerangeset",redraw,children.yAxis[0]);quadrant.configure()}),["dataset"]);return _this}(0,_inheritsLoose2.default)(ScatterBase,_MSColumn2D);ScatterBase.getName=function getName(){return"ScatterBase"};var _proto=ScatterBase.prototype;_proto.mouseoutHandler=function mouseoutHandler(e,_lastDatasetIndex,_lastPointIndex){var chart=this,datasets=chart.config.datasetOrder||chart.getDatasets(),mouseTracker=chart.getChildren("mouseTracker")[0];if(datasets[_lastDatasetIndex]&&datasets[_lastDatasetIndex].components.data[_lastPointIndex]){datasets[_lastDatasetIndex]._firePlotEvent(MOUSEOUT,_lastPointIndex,e)}else{chart.getFromEnv("toolTipController").hideAll()}delete mouseTracker._lastDatasetIndex;delete mouseTracker._lastPointIndex};_proto.parseChartAttr=function parseChartAttr(dataObj){_MSColumn2D.prototype.parseChartAttr.call(this,dataObj);this.config.drawTrendRegion=0};_proto.__setDefaultConfig=function __setDefaultConfig(){var config=this.config;_MSColumn2D.prototype.__setDefaultConfig&&_MSColumn2D.prototype.__setDefaultConfig.call(this);config.valuefontbold=0;config.stickytracking=1;config.usemessagelog=0;config.animationeffect=LINEAR;config.showshadow=1;config.showhovereffect=UNDEF;config.plothovereffect=UNDEF;config.anchorhovereffect=UNDEF;config.plotborderdashed=UNDEF;config.stack100percent=UNDEF;config.showpercentvalues=UNDEF;config.showpercentintooltip=UNDEF;config.plotbordercolor=UNDEF;config.showtooltip=1;config.seriesnameintooltip=1;config.rotatevalues=0;config.minimizetendency=0;config.plotfillangle=270;config.valuepadding=2;config.useplotgradientcolor=1;config.plotborderthickness=1;config.plotfillalpha=SEVENTY_STR;config.showvalues=1;config.valueposition=AUTO_STR;config.tooltipsepchar=TOOLTIP_SEP_CHAR;config.usedataplotcolorforlabels=0;config.placevaluesinside=0;config.showplotborder=1;config.use3dlighting=1;config.useroundedges=0;config.plotspacepercent=20;config.plotpaddingpercent=UNDEF;config.plotfillratio=UNDEF;config.maxcolwidth=50;config.plotborderdashlen=5;config.plotborderdashgap=4;config.useScaleRecursively=true;config.zeroplanethickness=1;config.zeroplanealpha=40;config.showzeroplaneontop=0;config.setadaptivexmin=1};_proto._drawTrendTooltip=function _drawTrendTooltip(trendline,e){var iapi=this,toolTipController=iapi.getFromEnv("toolTipController"),currentToolTip=iapi.config.currentTrendToolTip,toolText=trendline.tooltext,originalEvent=e.originalEvent;if(currentToolTip){toolTipController.draw(originalEvent,toolText,currentToolTip)}else{currentToolTip=iapi.config.currentTrendToolTip=toolTipController.draw(originalEvent,toolText)}};_proto._mouseEvtHandler=function _mouseEvtHandler(e,data){var iapi=this,mouseTracker=data.mouseTracker,canvas=iapi.getChildren("canvas")[0],toolTipController=iapi.getFromEnv("toolTipController"),hoveredVtrendline,hoveredTrendLine,oriEvent=e.originalEvent,chartConfig=iapi.config,canvasBaseDepth=chartConfig.canvasBaseDepth||0,canvasLeft=chartConfig.canvasLeft-(chartConfig.toleranceLeft||0),canvasRight=chartConfig.canvasRight+(chartConfig.toleranceRight||0),canvasBottom=chartConfig.canvasBottom+(chartConfig.toleranceBottom||0),canvasTop=chartConfig.canvasTop-(chartConfig.toleranceTop||0),datasets=chartConfig.datasetOrder||iapi.getDatasets(),coordinate,chartX,chartY,dataset,hoveredInfo,pointFound=false,i=datasets.length,j,l,derivedEvensInfo,_lastDatasetIndex=mouseTracker._lastDatasetIndex,_lastPointIndex=mouseTracker._lastPointIndex;coordinate=(0,_lib.getMouseCoordinate)(iapi.getFromEnv("chart-container"),oriEvent,iapi);chartX=coordinate.chartX;chartY=coordinate.chartY;if(chartX>canvasLeft-canvasBaseDepth&&chartX<canvasRight&&chartY>canvasTop&&chartY<canvasBottom+canvasBaseDepth){while(i--&&!pointFound){dataset=datasets[i];if(dataset&&dataset.getState("visible")){hoveredInfo=dataset._getHoveredPlot&&dataset._getHoveredPlot(chartX,chartY);if(hoveredInfo&&hoveredInfo.hovered||hoveredVtrendline){pointFound=true;hoveredInfo.datasetIndex=i;derivedEvensInfo=mouseTracker.getMouseEvents(e,hoveredInfo.datasetIndex,hoveredInfo.pointIndex)}}}hoveredVtrendline=_getHoveredTrendLine(chartX,chartY,canvas.config.vtrendlines);hoveredTrendLine=_getHoveredTrendLine(chartX,chartY,canvas.config.trendlines)}if((!pointFound||derivedEvensInfo&&derivedEvensInfo.fireOut)&&typeof _lastDatasetIndex!=="undefined"){if(datasets[_lastDatasetIndex]&&datasets[_lastDatasetIndex]._firePlotEvent){if(derivedEvensInfo&&!derivedEvensInfo.events.length){mouseTracker.mouseoutTimer=setTimeout((function(){iapi.mouseoutHandler(e,_lastDatasetIndex,_lastPointIndex)}),20)}else{iapi.mouseoutHandler(e,_lastDatasetIndex,_lastPointIndex);clearTimeout(mouseTracker.mouseoutTimer)}}}if(pointFound){if(iapi.config.currentTrendToolTip){toolTipController.hide(iapi.config.currentTrendToolTip)}l=derivedEvensInfo.events&&derivedEvensInfo.events.length;if(l){mouseTracker._lastDatasetIndex=hoveredInfo.datasetIndex;_lastPointIndex=mouseTracker._lastPointIndex=hoveredInfo.pointIndex}for(j=0;j<l;j+=1){dataset&&dataset._firePlotEvent&&dataset._firePlotEvent(derivedEvensInfo.events[j],_lastPointIndex,e,hoveredInfo.datasetIndex)}}else if(hoveredVtrendline&&hoveredVtrendline.tooltext){iapi._drawTrendTooltip(hoveredVtrendline,e)}else if(hoveredTrendLine&&hoveredTrendLine.tooltext){iapi._drawTrendTooltip(hoveredTrendLine,e)}else if(iapi.config.currentTrendToolTip){toolTipController.hide(iapi.config.currentTrendToolTip)}};_proto._setCategories=function _setCategories(){var iapi=this,dataObj=iapi.getFromEnv("dataSource"),xAxis=iapi.getChildren("xAxis"),xAxisLabelMode=String((0,_lib.pluck)(dataObj.chart.xaxislabelmode,"categories")).toLowerCase(),categoriesArr=dataObj.categories,categories=categoriesArr&&categoriesArr[0]&&categoriesArr[0].category;xAxis[0].setAxisConfig({xAxisLabelMode:"categories"});if(xAxisLabelMode!=="auto"&&xAxisLabelMode!=="mixed"&&categories&&categories.length>0){xAxis[0].setTickValues(categories)}else if(xAxisLabelMode!=="auto"){xAxis[0].setTickValues(categories);xAxis[0].setAxisConfig({xAxisLabelMode:"mixed"})}else{xAxis[0].setTickValues(categories);xAxis[0].setAxisConfig({xAxisLabelMode:"auto"})}};_proto._allocateSpace=function _allocateSpace(dimensions){var iapi=this,canvas=iapi.getChildren("canvas"),canvasConfig=canvas&&canvas[0].config,config=iapi.config,canvasHeight=config.canvasHeight,canvasWidth=config.canvasWidth,availableHeight=config.availableHeight,availableWidth=config.availableWidth;config.canvasLeft+=dimensions.left||0;config.canvasTop+=dimensions.top||0;canvasWidth=config.canvasWidth=Math.max(canvasWidth-((dimensions.left||0)+(dimensions.right||0)),0);canvasHeight=config.canvasHeight=Math.max(canvasHeight-((dimensions.top||0)+(dimensions.bottom||0)),0);config.availableHeight=Math.max(availableHeight-((dimensions.top||0)+(dimensions.bottom||0)),0);config.availableWidth=Math.max(availableWidth-((dimensions.left||0)+(dimensions.right||0)),0);config.canvasRight=config.canvasLeft+canvasWidth;config.canvasBottom=config.canvasTop+canvasHeight;if(canvasConfig){canvasConfig.canvasPaddingLeft=Math.max(canvasConfig.canvasPaddingLeft,dimensions.paddingLeft||0);canvasConfig.canvasPaddingRight=Math.max(canvasConfig.canvasPaddingRight,dimensions.paddingRight||0);canvasConfig.canvasPaddingTop=Math.max(canvasConfig.canvasPaddingTop,dimensions.paddingTop||0);canvasConfig.canvasPaddingBottom=Math.max(canvasConfig.canvasPaddingBottom,dimensions.paddingBottom||0)}canvas[0].setDimension({top:config.canvasTop,left:config.canvasLeft,width:config.canvasWidth,height:config.canvasHeight})};_proto._postSpaceManagement=function _postSpaceManagement(){var iapi=this,config=iapi.config,components=iapi.getChildren(),xAxis=components.xAxis&&components.xAxis[0],legend=components.legend&&components.legend[0],xDepth=config.xDepth,i,canvas,canvasArr=iapi.getChildren("canvas");iapi.setAxisDimention();xAxis&&iapi._allocateXAxisLabelSpace(xAxis);xAxis&&xAxis.shiftLabels(-xDepth,0);legend&&legend.postSpaceManager();for(i=0;i<(canvasArr&&canvasArr.length);i++){canvas=canvasArr[i];canvas.setCanvasPadding()}iapi.setAxisDimention();iapi.allocateDimensionOfChartMenuBar()};_proto._checkInvalidSpecificData=function _checkInvalidSpecificData(){var jsonData=this.getFromEnv("dataSource"),datasetsJSON=jsonData.dataset;if(!datasetsJSON){return true}};return ScatterBase}(_mscolumn2d.default);var _default=exports.default=ScatterBase;