@fusioncharts/fusiontime
Version:
FusionCharts JavaScript time-series charting framework
1 lines • 4.85 kB
JavaScript
;var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.calculateLimits=calculateLimits;exports.getTooltext=getTooltext;exports.isWithinShape=isWithinShape;var _lib=require("@fusioncharts/core/src/lib");var _safeMin=_interopRequireDefault(require("@fusioncharts/utils/src/array/safe-min"));var _safeMax=_interopRequireDefault(require("@fusioncharts/utils/src/array/safe-max"));function isWithinShape(pointObj,pX,x,y,component,maxRadius){var xPos1,yPos1,xPos2,yPos2,diff1,diff2;if(!pointObj){return{pointIndex:pX,hovered:false,component:component}}xPos1=pointObj.x;xPos2=pointObj.x;yPos1=pointObj.y;yPos2=pointObj.base;diff1=Math.sqrt(Math.pow(x-xPos1,2)+Math.pow(y-yPos1,2));diff2=Math.sqrt(Math.pow(x-xPos2,2)+Math.pow(y-yPos2,2));return{pointIndex:pX,hovered:diff1<=maxRadius||diff2<maxRadius,pointObj:pointObj,component:component}}function calculateLimits(dataset){var _dataset$config=dataset.config,indices=_dataset$config.indices,data=_dataset$config.data,type=_dataset$config.type,scaleY=_dataset$config.scaleY,scaleX=_dataset$config.scaleX,calculateFromContext=_dataset$config.calculateFromContext,isContinuous=/continuous/.test(dataset.getName()),showPlotOverTick=scaleX.showPlotOverTick(),padding,returnObj={},firstData=data[0],lastData=data[data.length-1],isLog=scaleY.getType()==="log",isVisible=dataset.config.visibility==="visible",chart=dataset.getFromEnv("chart"),_ref=calculateFromContext?chart.getContextLimit():chart.getFocusLimit(),focusLimitStart=_ref[0],focusLimitEnd=_ref[1],sanitiseFn=function sanitiseFn(num){if(isLog&&num<=0){return null}return num},minFn=function minFn(datum){if(!(datum[0].end<focusLimitStart)&&!(datum[0].start>focusLimitEnd)){return(0,_safeMin.default)([datum[indices[1]],datum[indices[2]],datum[indices[3]],datum[indices[4]]],sanitiseFn)}return null},maxFn=function maxFn(datum){if(!(datum[0].end<focusLimitStart)&&!(datum[0].start>focusLimitEnd)){return(0,_safeMax.default)([datum[indices[1]],datum[indices[2]],datum[indices[3]],datum[indices[4]]],sanitiseFn)}return null};padding=dataset.getPadding();if(showPlotOverTick){returnObj.x=[firstData&&firstData[indices[0]].start-padding,lastData&&lastData[indices[0]].start+padding]}else{if(isContinuous){returnObj.x=[firstData&&(firstData[indices[0]].start+firstData[indices[0]].end)/2-padding,lastData&&(lastData[indices[0]].start+lastData[indices[0]].end)/2+padding]}else{returnObj.x=[firstData&&firstData[indices[0]].start-padding,lastData&&lastData[indices[0]].end-padding]}}returnObj.y=isVisible?[(0,_safeMin.default)(data,minFn),(0,_safeMax.default)(data,maxFn)]:_lib.UNDEF;returnObj.baseRequired=true;returnObj.type=type;return returnObj}var getClassName=function getClassName(baseName){if(baseName===void 0){baseName=""}var randomString=Math.random().toString(36).substring(2);return baseName+"-"+randomString},getCSPNonce=function getCSPNonce(){var metaTag=document.querySelector('meta[http-equiv="Content-Security-Policy"]');if(metaTag){var content=metaTag.getAttribute("content");if(content){var match=content.match(/'nonce-([^']+)'/);if(match){return match[1]}}}return null};function getTooltext(dataset,pointFound,datasetHovered,dataIndex){var config=dataset.config,dataInfo=config.dataInfo,currData=dataInfo[dataIndex],opacity=pointFound?datasetHovered?1:.5:1,line2;var chartNonce=getCSPNonce();if(dataset._isInvalidTooltext(currData)){return""}line2=["high","low"].reduce((function(accumulator,currentValue){var currentvalueOverflowClass=getClassName("current-value-overflow"),currentValueClass=getClassName("-tooltip-current-value"),tooltipValueClass=getClassName("tooltip-class-value");var value=currData[currentValue+"TooltipValue"]||(currData[currentValue+"TooltipValue"]=currData[currentValue+"Value"]&&config.formatterFn({value:currData[currentValue+"Value"],type:"tooltip",prefix:config.prefix,suffix:config.suffix}));return accumulator+(value!==_lib.UNDEF?'\n <style nonce="'+chartNonce+'">\n .'+currentvalueOverflowClass+" {\n overflow: hidden;\n margin-top: 4px;\n }\n\n ."+currentValueClass+" {\n float: left;\n padding-right: 5px;\n }\n\n ."+tooltipValueClass+' {\n float: right;\n padding-right: 5px;\n }\n </style>\n <div class="'+currentvalueOverflowClass+'">\n <div class="'+currentValueClass+'">'+currentValue+'</div>\n <div class="'+tooltipValueClass+'">'+value+"</div>\n </div>":"")}),"");var tooltipOpacityClass=getClassName("tooltip-opacity-class");line2='\n <style nonce="'+chartNonce+'">\n .'+tooltipOpacityClass+" {\n margin-top:6px;\n overflow: hidden;\n opacity:"+opacity+';\n }\n </style>\n <div class="'+tooltipOpacityClass+'">\n '+line2+"\n </div>";return line2}