@fusioncharts/fusiontime
Version:
FusionCharts JavaScript time-series charting framework
1 lines • 7.56 kB
JavaScript
;var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _inheritsLoose2=_interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _componentInterface=require("@fusioncharts/core/src/component-interface");var _libGraphics=require("@fusioncharts/core/src/lib/lib-graphics");var _lib=require("@fusioncharts/core/src/lib");var _isValidNumber=_interopRequireDefault(require("@fusioncharts/utils/src/type/is-valid-number"));var _tooltipAndHover=require("./tooltip-and-hover");function getFirstDefinedColor(colorArr){var i,len;for(i=0,len=colorArr.length;i<len;i++){if(colorArr[i]!==UNDEF&&colorArr[i]!=="none"){return(0,_libGraphics.convertColor)(colorArr[i])}}}var BLANK="",DEFAULT_FORMAT="%A, %b %d, %Y",isPlotStackable=function isPlotStackable(plotType){return plotType==="column"},xShift=5;var UNDEF,previousIndexIdMap={};var CrosslineManager=function(_SmartRenderer){function CrosslineManager(){var _this;_this=_SmartRenderer.call(this)||this;var crosslineManager=_this,senderCanvas,toolTipController,verticalDate,dsConfig,isSenderCanvas,tooltext,translation,multiCanvasTooltip,scale,previousPointIndex,isWithinCanvas;crosslineManager.canvases=[];crosslineManager._handler=function(e){multiCanvasTooltip=crosslineManager.config.multiCanvasTooltip;senderCanvas=e.sender.getLinkedParent();scale=senderCanvas.config&&senderCanvas.config.xConfigs[0].scale;isWithinCanvas=senderCanvas.isWithinCanvas(e.data.chartX,e.data.chartY);var hoveredInfo=e.data.hoveredInfo||{},verticalCrossline,horizontalCrossline,datasets,tooltipAndHover,tooltipAndHoverConfig,datasetHoveredIndex,startDate,endDate,values,pointIndex,pointObj,yScale,yAlign,domain,tooltipStyle=crosslineManager.getFromEnv("tooltipStyle"),dataSource=crosslineManager.getFromEnv("dataSource"),customeToolText=dataSource.tooltip?dataSource.tooltip.tooltext:null;if(isWithinCanvas&&hoveredInfo.pointObj){domain=crosslineManager.getFromEnv("chart").config.focusAxesX[0].scale.getDomain();startDate=hoveredInfo.pointObj.startDate;endDate=hoveredInfo.pointObj.endDate;verticalDate=scale.getDomainValue(scale.getRangeValue(startDate,endDate));if(+verticalDate<+domain[0]||+verticalDate>+domain[1]||+startDate===+endDate){verticalDate=UNDEF}}else{verticalDate=UNDEF}crosslineManager.canvases.forEach((function(canvas){isSenderCanvas=canvas===senderCanvas;translation=canvas.getTranslation();pointObj=UNDEF;verticalCrossline=canvas.getChildren("verticalCrossLine")[0];verticalCrossline.setData({values:verticalDate?[verticalDate]:[],showMarker:isSenderCanvas,dateRange:{startDate:startDate,endDate:endDate}},true);datasets=canvas.getChildren("dataset")||[];if(datasets.length&&(!isPlotStackable(datasets[0].getName())||datasets.length===1)&&hoveredInfo.component&&(hoveredInfo.component.getType()==="dataset"||hoveredInfo.component.getType()==="dataMarker")){datasets.forEach((function(ds){ds._getHoveredPlot(e.data.chartX,e.data.chartY);pointIndex=isWithinCanvas&&ds._getHoveredBin();previousPointIndex=previousIndexIdMap[ds.getId()];if((0,_lib.defined)(previousPointIndex)&&previousPointIndex!==pointIndex){ds.setHoverOutEffect([previousPointIndex])}previousIndexIdMap[ds.getId()]=pointIndex;if(hoveredInfo.hovered&&isSenderCanvas){if(hoveredInfo.component===ds){ds.setHoverInEffect([pointIndex],true)}else{if(ds.getName()==="continuous"){ds.setHoverInEffect([pointIndex],false,true)}else{ds.setHoverOutEffect([pointIndex])}}}else{ds.setHoverInEffect([pointIndex],false)}}))}else if(!isWithinCanvas){datasets.forEach((function(ds){ds.setHoverOutEffect([previousIndexIdMap[ds.getId()]])}))}if(multiCanvasTooltip&&!isSenderCanvas){tooltipAndHover=canvas.getChildren("tooltipHover")[0];tooltipAndHoverConfig=tooltipAndHover.config;if(tooltipAndHoverConfig.showTooltip){tooltext=BLANK;toolTipController=canvas.getFromEnv("toolTipController");if(isWithinCanvas&&hoveredInfo.component&&hoveredInfo.component.getType()==="dataset"){datasets.forEach((function(ds,dsIndex){pointIndex=ds._getHoveredBin();if(ds.config.visibility==="visible"&&ds.config.dataInfo[pointIndex]){pointObj=ds.config.dataInfo[pointIndex];tooltext+=ds._getTooltext(false,false,pointIndex);datasetHoveredIndex=dsIndex}}));if(pointObj){pointIndex=datasets[datasetHoveredIndex]._getHoveredBin();var _datasets$datasetHove=datasets[datasetHoveredIndex]._getDateForToolText(pointIndex),header=_datasets$datasetHove.header,body=_datasets$datasetHove.body,xRange=hoveredInfo.component.getFromEnv("xScale").getRange();if(customeToolText){tooltext=(0,_tooltipAndHover.createDivString)("",body+tooltext)}else{tooltext=(0,_tooltipAndHover.createDivString)(tooltipStyle.headerStyleString,header)+(0,_tooltipAndHover.createDivString)(tooltipStyle.bodyStyleString,body+tooltext)}tooltext!==""&&pointObj.endXPosition>xRange[0]&&pointObj.x<xRange[1]?tooltipAndHoverConfig.currentToolTip=toolTipController.drawAt(pointObj.x+(pointObj.width||0)/2+xShift+translation.x,(pointObj.colY||pointObj.y)+translation.y,tooltext,tooltipAndHoverConfig.currentToolTip,canvas):toolTipController.hide(tooltipAndHoverConfig.currentToolTip)}else{toolTipController.hide(tooltipAndHoverConfig.currentToolTip)}}else{toolTipController.hide(tooltipAndHoverConfig.currentToolTip)}}}}));horizontalCrossline=senderCanvas.getChildren("horizontalCrossLine")&&senderCanvas.getChildren("horizontalCrossLine")[0];if(hoveredInfo.hovered&&hoveredInfo.component.getType()==="dataset"&&isWithinCanvas){if(hoveredInfo.pointObj.eventArgs.highValue&&hoveredInfo.pointObj.eventArgs.lowValue){values=[hoveredInfo.pointObj.eventArgs.highValue,hoveredInfo.pointObj.eventArgs.lowValue]}else{values=(0,_isValidNumber.default)(hoveredInfo.pointObj.yBaseValue)?Math.abs(hoveredInfo.pointObj.yBaseValue)<=Math.abs(hoveredInfo.pointObj.value)?[hoveredInfo.pointObj.value]:[hoveredInfo.pointObj.yBaseValue]:[hoveredInfo.pointObj.value]}dsConfig=hoveredInfo.component.config;senderCanvas.config.yConfigs.forEach((function(yconfig){if(yconfig.scale===hoveredInfo.component.config.scaleY){yScale=yconfig.scale;yAlign=yconfig.align}}));dsConfig.visibility!=="hidden"&&horizontalCrossline.setData({values:values,scale:yScale,yAxisAlignment:yAlign,showMarker:true,texts:values,suffix:dsConfig.suffix,prefix:dsConfig.prefix,formatterFn:dsConfig.formatterFn,markerFill:getFirstDefinedColor([dsConfig.style&&dsConfig.style.fill,dsConfig.plotStyle&&dsConfig.plotStyle.fill,dsConfig.plotStyle&&dsConfig.plotStyle.stroke])},true)}else{horizontalCrossline&&horizontalCrossline.setData({values:[]},true)}};return _this}(0,_inheritsLoose2.default)(CrosslineManager,_SmartRenderer);var _proto=CrosslineManager.prototype;_proto.__setDefaultConfig=function __setDefaultConfig(){_SmartRenderer.prototype.__setDefaultConfig.call(this);this.config.defaultFormat=DEFAULT_FORMAT;this.canvases=[]};_proto.configure=function configure(){_SmartRenderer.prototype.configure.call(this);var crosslineManager=this,chart=crosslineManager.getLinkedParent(),canvasLength=chart.config.focusPanels.length,mouseTracker,currentCanvas,i;crosslineManager.config.multiCanvasTooltip=(0,_lib.pluckNumber)(crosslineManager.getFromEnv("chart-attrib").multicanvastooltip,1);for(i=0;i<canvasLength;i++){currentCanvas=chart.getChildren("canvas_"+i)[0];crosslineManager.canvases.push(currentCanvas);mouseTracker=currentCanvas.getFromEnv("mouseTracker");crosslineManager.addExtEventListener("canvasHovered",crosslineManager._handler,mouseTracker)}};return CrosslineManager}(_componentInterface.SmartRenderer);var _default=exports.default=CrosslineManager;