@fusioncharts/features
Version:
FusionCharts JavaScript charting framework
1 lines • 7.49 kB
JavaScript
;exports.__esModule=true;exports.default=void 0;var _lib=require("@fusioncharts/core/src/lib");var BLACK_LIST={treemap:true,scatter:true,bubble:true,errorscatter:true,errorline:true,errorbar2d:true,candlestick:true,stackedcolumn3d:true,stackedbar3d:true,mscolumnline3d:true,mscombi3d:true,mscolumn3dlinedy:true,stackedcolumn3dline:true,stackedcolumn3dlinedy:true},DEFAULT_PLOT_COLOR="#000000",isBlackListed=function isBlackListed(component){return BLACK_LIST[component.getName().toLowerCase()]},getClassName=function getClassName(baseName){if(baseName===void 0){baseName=""}var randomString=Math.random().toString(36).substring(2);return baseName+"-"+randomString},reduceToolTexts=function reduceToolTexts(acc,tooltext,chartNonce){if(chartNonce===void 0){chartNonce=""}var toolTextMarginClass=getClassName("toolTextMargin");return"\n "+acc+'\n <style nonce="'+chartNonce+'">\n .'+toolTextMarginClass+' {\n margin: 0;\n }\n </style>\n <div class="'+toolTextMarginClass+'">'+tooltext+"</div>\n "},countHoveredPlots=function countHoveredPlots(acc,info){return info.hovered?acc+1:acc},extractColor=function extractColor(plotConfig){return plotConfig.originalPlotColor||plotConfig.plotColor||plotConfig.color||DEFAULT_PLOT_COLOR},compareByJsonIndex=function compareByJsonIndex(a,b){return b.getJSONIndex()-a.getJSONIndex()};function _enableConsolidatedToolTip(e){var _chart$config;var chart=e.sender.getFromEnv("chart"),canvas=this,toolTextGray=chart.config.tooltipgrayoutcolor,showPlotColor=chart.config.plotcolorintooltip,toolTipController=chart.getFromEnv("toolTipController"),datasets=chart.getDatasets().sort(compareByJsonIndex),consolidatedToolTip=chart.getFromEnv("consolidated-tooltip"),chartCoords=(0,_lib.getMouseCoordinate)(e.sender.getFromEnv("chart-container"),e.originalEvent,chart),canvasX=chartCoords.chartX,canvasY=chartCoords.chartY,chartNonce=(chart==null||(_chart$config=chart.config)==null?void 0:_chart$config.nonce)||"",alreadyColored=false,hoveredInfos=datasets.map((function(dataset){return dataset.getPlotInCategoryAt(canvasX,canvasY)})).filter(Boolean),numPlotsHovered=hoveredInfos.reduce(countHoveredPlots,0),plotTexts=hoveredInfos.map((function(hoveredInfo){var dataConfig=hoveredInfo.pointObj.config,text=dataConfig.finalTooltext||dataConfig.toolText,color=extractColor(dataConfig),colorClass=getClassName("color"),inlineBlockClass=getClassName("inlineBlock");if(numPlotsHovered>0){if(!alreadyColored&&hoveredInfo.hovered){text='\n <style nonce="'+chartNonce+'">\n .'+inlineBlockClass+' {\n display: inline-block;\n }\n </style>\n <div class="'+inlineBlockClass+'">'+text+"</div>";alreadyColored=true}else{color=toolTextGray;var hasifyColor=(0,_lib.hashify)(color);text='\n <style nonce="'+chartNonce+'">\n .'+colorClass+" {\n color: "+hasifyColor+";\n }\n ."+inlineBlockClass+' {\n display: inline-block;\n }\n </style>\n <div class="'+colorClass+" "+inlineBlockClass+'">'+text+"</div>"}}else{text='\n <style nonce="'+chartNonce+'">\n .'+inlineBlockClass+' {\n display: inline-block;\n }\n </style>\n <div class="'+inlineBlockClass+'">'+text+"</div>"}var hashifyColor=(0,_lib.hashify)(color);return'\n <style nonce="'+chartNonce+'">\n .'+colorClass+" {\n color: "+hashifyColor+";\n }\n ."+inlineBlockClass+" {\n display: inline-block;\n }\n </style>\n "+(showPlotColor?'<div class="'+colorClass+" "+inlineBlockClass+'">■ </div>':"")+text})),consolidatedText=[].concat(plotTexts).reverse().reduce((function(acc,text){return reduceToolTexts(acc,text,chartNonce)}),"");if(!canvas.isWithinCanvas(canvasX,canvasY)){consolidatedToolTip&&toolTipController.hide(consolidatedToolTip);return}if(consolidatedText){if(!consolidatedToolTip){chart.addToEnv("consolidated-tooltip",toolTipController.draw(e.originalEvent,consolidatedText))}else{toolTipController.draw(e.originalEvent,consolidatedText,consolidatedToolTip)}}else{consolidatedToolTip&&toolTipController.hide(consolidatedToolTip)}}function _disableConsolidatedToolTip(e){var chart=e.sender.getFromEnv("chart"),consolidatedToolTip=chart.getFromEnv("consolidated-tooltip");consolidatedToolTip&&chart.getFromEnv("toolTipController").hide(consolidatedToolTip)}function drawConsolidatedToolTip(idx){var _chart$config2;var chart=this.apiInstance,datasets=chart.getDatasets().sort(compareByJsonIndex),showPlotColor=chart.config.plotcolorintooltip,toolTipController=chart.getFromEnv("toolTipController"),consolidatedToolTip=chart.getFromEnv("consolidated-tooltip"),dataComponents=datasets.map((function(dataset){var dataComponent=dataset.components.data;return dataComponent[idx]&&dataComponent[idx]})).filter(Boolean),coords=dataComponents[0]&&{x:dataComponents[0].config._Px-dataComponents[0]._width,y:dataComponents[0].config._Py,width:dataComponents[0].config._width},chartNonce=(chart==null||(_chart$config2=chart.config)==null?void 0:_chart$config2.nonce)||"",consolidatedText=dataComponents.map((function(data){var config=data.config,text=config.finalTooltext||config.toolText,colorClass=getClassName("color"),inlineBlockClass=getClassName("inlineBlock"),hasifyColor=(0,_lib.hashify)(extractColor(config));return showPlotColor?'\n <style nonce="'+chartNonce+'">\n .'+colorClass+" {\n color: "+hasifyColor+";\n }\n ."+inlineBlockClass+' {\n display: inline-block;\n }\n </style>\n <div class="'+colorClass+'">■ </div><div class="'+inlineBlockClass+'">'+text+"</div>":'<div class="'+inlineBlockClass+'">'+text+"</div>"})).reduce((function(acc,text){return reduceToolTexts(acc,text,chartNonce)}),"");if(consolidatedText&&coords){if(!consolidatedToolTip){chart.addToEnv("consolidated-tooltip",toolTipController.drawAt(coords.x,coords.y,consolidatedText))}else{toolTipController.drawAt(coords.x,coords.y,consolidatedText,consolidatedToolTip)}}else{consolidatedToolTip&&toolTipController.hide(consolidatedToolTip)}}function consolidatedTooltipExt(FusionCharts){FusionCharts.addEventListener("predraw",(function onFcPredraw(event){var chart;if(event.sender.getType&&event.sender.getType()==="chartAPI"&&!isBlackListed(event.sender)){chart=event.sender;var canvases=chart.getChildren("canvas");chart.getFromEnv("chartInstance").drawConsolidatedToolTip=drawConsolidatedToolTip;canvases&&canvases.forEach((function(canvas){if(!chart.config.drawTrendRegion||!chart.config.showtooltip){canvas.removeEventListener("fc-mouseover",_enableConsolidatedToolTip);canvas.removeEventListener("fc-mousemove",_enableConsolidatedToolTip);canvas.removeEventListener("fc-mouseout",_disableConsolidatedToolTip);canvas.setState("consolidatedTooltipEventListenerAttached",false);return}if(!canvas.getState("consolidatedTooltipEventListenerAttached")&&chart.config.showtooltip){canvas.addEventListener("fc-mouseover",_enableConsolidatedToolTip);canvas.addEventListener("fc-mousemove",_enableConsolidatedToolTip);canvas.addEventListener("fc-mouseout",_disableConsolidatedToolTip);canvas.setState("consolidatedTooltipEventListenerAttached",true)}}))}}))}var _default=exports.default={extension:consolidatedTooltipExt,name:"ConsolidatedToolTip",type:"extension",requiresFusionCharts:true};