@fusioncharts/fusiontime
Version:
FusionCharts JavaScript time-series charting framework
1 lines • 33.7 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 _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"));var _dependencyManager=require("@fusioncharts/core/src/dependency-manager");var _isValidNumber=_interopRequireDefault(require("@fusioncharts/utils/src/type/is-valid-number"));var _smartRenderer=_interopRequireDefault(require("@fusioncharts/core/src/component-interface/smart-renderer"));var _timeConverter=_interopRequireDefault(require("@fusioncharts/utils/src/time-converter"));var _column=_interopRequireDefault(require("./column.animation"));var _markerFactory=_interopRequireDefault(require("../../factories/marker-factory"));var _extent=_interopRequireDefault(require("@fusioncharts/utils/src/array/extent"));var _hour=_interopRequireDefault(require("@fusioncharts/utils/src/time-intervals/hour"));var _localizeDateString=require("../../_utils/localizeDateString");var chartNonce="";var ROLLOVER="DataPlotRollOver",ROLLOUT="DataPlotRollOut",HIGHLIGHT="DataPlotHighlight",VISIBLE="visible",BLANK="",_reducerFn=function _reducerFn(s,t){return Object.assign(s,t)},CLICK="DataPlotClick",getDataPos=function getDataPos(num){return[num.start,num.end]},isDataInvalid=function isDataInvalid(isLog,num,dataPos,focusLimit){return isLog&&num<=0||dataPos[1]<focusLimit[0]||dataPos[0]>focusLimit[1]},getGenericType=function getGenericType(type){switch(type){case"line":case"smooth-line":case"step-line":return"line";case"area":case"smooth-area":case"step-area":case"area-range":return"area";default:break}},checkForValidCoordinated=function checkForValidCoordinated(coordiante){var valid=true,key;for(key in coordiante){if(coordiante.hasOwnProperty(key)){valid=valid&&!isNaN(coordiante[key])}}return valid};var HTP=_lib.hasTouch?_lib.TOUCH_THRESHOLD_PIXELS:_lib.CLICK_THRESHOLD_PIXELS;(0,_dependencyManager.addDep)({name:"timeseriesColumnAnimation",type:"animationRule",extension:_column.default});var Column=function(_SmartRenderer){function Column(){var _this;_this=_SmartRenderer.call(this)||this;_this.getClassName=function(baseName){if(baseName===void 0){baseName=""}var randomString=Math.random().toString(36).substring(2);return baseName+"-"+randomString};var dataset=_this,config=_this.config;_this.registerFactory("markerFactory",_markerFactory.default);_this._getFirstValidData=function _getFirstValidDataFn(dataArr,validatorProp){var i,ii=dataArr.length;for(i=0;i<ii;i++){if(dataArr[0]&&dataArr[0][validatorProp]!==_lib.UNDEF){return dataArr[0][validatorProp]}}return _lib.UNDEF};config.hoverInfo=[];_this.addEventListener("beforeremove",(function(){dataset.getFromEnv("chart").setXScaleLimit(config.scaleX.getId(),dataset.getId());dataset.getFromEnv("chart").setYScaleLimit(config.scaleY.getId(),dataset.getId())}));return _this}(0,_inheritsLoose2.default)(Column,_SmartRenderer);var _proto=Column.prototype;_proto.getHoverInConfig=function getHoverInConfig(hoverIndices){return{style:this.config.hoverInStyle,hoverIndices:hoverIndices,hovered:true}};_proto.getHighlightConfig=function getHighlightConfig(hoverIndices){return{style:this.config.highlightStyle,hoverIndices:hoverIndices,hovered:false}};_proto.getHoverOutConfig=function getHoverOutConfig(hoverIndices){return{style:this.config.hoverOutStyle,hoverIndices:hoverIndices,hovered:false}};_proto.getType=function getType(){return"dataset"};_proto.getName=function getName(){return"timeseriesColumn"};_proto.__setDefaultConfig=function __setDefaultConfig(){_SmartRenderer.prototype.__setDefaultConfig.call(this);var config=this.config;config["default-plotSpacePercent"]=30;config.visibility=VISIBLE;config.prevBoundaryInfo={};config.dataMarkerPadding=0;config.style={};config.hoverInStyle={};config.highlightStyle={};config.hoverOutStyle={};config.defaultStyle={"stroke-width":1,"fill-opacity":1,"stroke-opacity":1,opacity:1};config.defaultPredictedDataStyle={"stroke-width":1,"fill-opacity":.2,"stroke-opacity":1,"stroke-dasharray":5};config.defaultHoverInStyle={opacity:.8};config.defaultHighlightStyle={opacity:.8};config.dataInfo=[];config.prevPerBinYExtents=[];config.dataIndices=[1,2]};_proto.configureAttributes=function configureAttributes(dataObj){var dataset=this,prop,chartAttr=dataset.getFromEnv("chart-attrib"),config=dataset.config;if(dataObj.hasOwnProperty("hoverIndices")){config.hoverInfo.push(dataObj);config.hoverMode=true}else{for(prop in dataObj){if(prop==="primaryColor"){var plotConfig=dataObj.plotCosmetics,genericConfig=dataObj.genericCosmetics,primaryColor=dataObj[prop],styles=void 0,getStyleDef=dataset.getFromEnv("getStyleDef"),applicableClassStyleGeneric=getStyleDef(genericConfig.style&&genericConfig.style.plot),applicableClassStyleGenericHover=getStyleDef(genericConfig.style&&genericConfig.style["plot:hover"]),applicableClassStyleGenericHighlight=getStyleDef(genericConfig.style&&genericConfig.style["plot:highlight"]),applicableClassStylePlot=getStyleDef(plotConfig.style&&plotConfig.style.plot),applicableInlineStylePlot=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig.plot),applicableClassStyleColumn=getStyleDef(plotConfig.style&&plotConfig.style.column),applicableInlineStyleColumn=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig.column),applicableHoverStylePlot=getStyleDef(plotConfig.style&&plotConfig.style["plot:hover"]),applicableHighlightStylePlot=getStyleDef(plotConfig.style&&plotConfig.style["plot:highlight"]),applicableHoverInlineStylePlot=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig["plot:hover"]),applicableHighlightInlineStylePlot=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig["plot:highlight"]),applicableHoverStyleColumn=getStyleDef(plotConfig.style&&plotConfig.style["column:hover"]),applicableHighlightStyleColumn=getStyleDef(plotConfig.style&&plotConfig.style["column:highlight"]),applicableHoverInlineStyleColumn=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig["column:hover"]),applicableHighlightInlineStyleColumn=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig["column:highlight"]),styleObj=config.style,hoverOutStyle=config.hoverOutStyle,hoverInStyle=config.hoverInStyle,highlightStyle=config.highlightStyle;[styleObj,config.defaultStyle,applicableClassStyleGeneric,applicableClassStylePlot,applicableInlineStylePlot,applicableClassStyleColumn,applicableInlineStyleColumn].reduce(_reducerFn);[hoverInStyle,config.defaultHoverInStyle,applicableClassStyleGenericHover,applicableHoverStylePlot,applicableHoverStyleColumn,applicableHoverInlineStylePlot,applicableHoverInlineStyleColumn].reduce(_reducerFn);[highlightStyle,config.defaultHighlightStyle,applicableClassStyleGenericHighlight,applicableHighlightStylePlot,applicableHighlightStyleColumn,applicableHighlightInlineStylePlot,applicableHighlightInlineStyleColumn].reduce(_reducerFn);styleObj.stroke=(0,_lib.convertColor)((0,_lib.pluck)(styleObj.stroke,primaryColor,config["default-stroke"]),(0,_lib.pluckNumber)(styleObj["stroke-opacity"],1)*100);styleObj.fill=(0,_lib.convertColor)((0,_lib.pluck)(primaryColor,styleObj.stroke,config["default-fill"]),(0,_lib.pluckNumber)(styleObj["fill-opacity"],1)*100);hoverInStyle.fill&&(hoverInStyle.fill=(0,_lib.convertColor)(hoverInStyle.fill,(0,_lib.pluckNumber)(hoverInStyle["fill-opacity"],styleObj["fill-opacity"])*100));hoverInStyle.stroke&&(hoverInStyle.stroke=(0,_lib.convertColor)(hoverInStyle.stroke,(0,_lib.pluckNumber)(hoverInStyle["stroke-opacity"],styleObj["stroke-opacity"])*100));highlightStyle.fill&&(highlightStyle.fill=(0,_lib.convertColor)(highlightStyle.fill,(0,_lib.pluckNumber)(highlightStyle["fill-opacity"],styleObj["fill-opacity"])*100));highlightStyle.stroke&&(highlightStyle.stroke=(0,_lib.convertColor)(highlightStyle.stroke,(0,_lib.pluckNumber)(highlightStyle["stroke-opacity"],styleObj["stroke-opacity"])*100));for(styles in Object.assign(Object.assign({},hoverInStyle),highlightStyle)){hoverOutStyle[styles]=(0,_lib.pluck)(styleObj[styles],"")}(0,_lib.defined)(hoverOutStyle["stroke-dasharray"])&&(hoverOutStyle["stroke-dasharray"]=null);config.plotBorderThickness=styleObj["stroke-width"];config.opacity=styleObj.opacity;config["fill-opacity"]=styleObj["fill-opacity"];config["stroke-opacity"]=styleObj["stroke-opacity"];delete styleObj.opacity;delete styleObj["fill-opacity"];delete styleObj["stroke-opacity"]}else{config[prop]=dataObj[prop]}}config.plotSpacePercent=(0,_lib.pluckNumber)(chartAttr.plotspacepercent,config["default-plotSpacePercent"]);config.limit=dataset._calculateLimits();var chart=dataset.getFromEnv("chart");chart.setYScaleLimit(config.scaleY.getId(),dataset.getId(),config.limit.y,config.limit.baseRequired);chart.setXScaleLimit(config.scaleX.getId(),dataset.getId(),config.limit.x)}this.parsePrediction(dataObj)};_proto.getValueFromPx=function getValueFromPx(pxValue){var binRange=this.getFromEnv("binDecider").getBinRange(),axisLength=binRange[1]-binRange[0],chart=this.getFromEnv("chart"),limit=this.config.calculateFromContext?chart.getContextLimit():chart.getFocusLimit(),diff=limit[1]-limit[0];return pxValue*diff/(axisLength-pxValue)};_proto.getPadding=function getPadding(){var dataset=this,config=dataset.config,scaleX=config.scaleX,curBin=this.getFromEnv("binDecider").getRangeThreshold(),scalePadding=0,dataMarkerPadding=dataset.getValueFromPx(config.dataMarkerPadding);if(scaleX.showPlotOverTick()){scalePadding=curBin[2]/2}return Math.ceil(Math.max(scalePadding,dataMarkerPadding))};_proto._calculateLimits=function _calculateLimits(){var _this$config=this.config,indices=_this$config.indices,data=_this$config.data,type=_this$config.type,scaleY=_this$config.scaleY,scaleX=_this$config.scaleX,calculateFromContext=_this$config.calculateFromContext,isContinuous=/continuous/.test(this.getName()),showPlotOverTick=scaleX.showPlotOverTick(),padding,returnObj={},firstData=data[0],lastData=data[data.length-1],isLog=scaleY.getType()==="log",isVisible=this.config.visibility==="visible",chart=this.getFromEnv("chart"),limit=calculateFromContext?chart.getContextLimit():chart.getFocusLimit(),minFn=function minFn(arr){var num=(0,_lib.pluckNumber)(arr[indices[2]],arr[indices[1]]),dataPos=getDataPos(arr[0]),isInvalid=isDataInvalid(isLog,num,dataPos,limit);return isInvalid?null:num},maxFn=function maxFn(arr){var num=arr[indices[1]],dataPos=getDataPos(arr[0]),isInvalid=isDataInvalid(isLog,num,dataPos,limit);return isInvalid?null:num};padding=this.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=!/line/.test(type);return returnObj};_proto.draw=function draw(){var dataset=this;dataset._createContainer();dataset._drawPlot();dataset.config.hoverInfo=[];dataset.config.hoverMode=false;dataset.config.repositioningDone=false};_proto._createContainer=function _createContainer(){var dataset=this;dataset.addGraphicalElement({el:"group",container:{id:"meso",label:"group",isParent:true},component:dataset,label:"group",id:"meso",attr:{name:"dataset-meso"}},true);dataset.addGraphicalElement({el:"group",container:{id:"thermo",label:"group",isParent:true},component:dataset,label:"group",id:"thermo",attr:{name:"dataset-thermo","clip-path":dataset.getFromEnv("dsGroupclipPath")}},true)};_proto.isDrawingRequired=function isDrawingRequired(){var dataset=this,config=dataset.config;if(config.repositioningDone||config.hoverMode){return true}};_proto._drawPlot=function _drawPlot(){var dataset=this,config=dataset.config,styleObj=config.style,definedOpacity=(0,_lib.defined)(config.opacity),definedStrokeOpacity=(0,_lib.defined)(config["stroke-opacity"]),definedFillOpacity=(0,_lib.defined)(config["fill-opacity"]),attr,isDatumPredictive=false,predictiveStyleAttributes=dataset.config.predictiveStyleAttributes,definedPredictiveOpacity=(0,_lib.defined)(predictiveStyleAttributes.predictiveOpacity),definedPredictiveStrokeOpacity=(0,_lib.defined)(predictiveStyleAttributes.predictiveStrokeOpacity),definedPredictiveFillOpacity=(0,_lib.defined)(predictiveStyleAttributes.predictiveFillOpacity),dataInfo=config.dataInfo;dataset.addGraphicalElement({el:"group",container:{id:"meso",label:"group"},component:dataset,label:"group",id:"meso-plot",attr:Object.assign({name:"column-plot-meso",visibility:config.visibility},styleObj)},true);dataset.addGraphicalElement({el:"group",container:{id:"meso",label:"group"},component:dataset,label:"group",id:"meso-plot-predictive",attr:Object.assign({name:"column-predictive-plot-meso",visibility:config.visibility},styleObj,predictiveStyleAttributes)},true);dataInfo.forEach((function(datum,index){if((0,_isValidNumber.default)(datum.value)||(0,_isValidNumber.default)(datum.high)&&(0,_isValidNumber.default)(datum.low)){attr={x:datum.x,y:datum.y,width:datum.width,height:datum.height};isDatumPredictive=dataset.isPlotPredictive(datum);definedOpacity&&(attr.opacity=config.opacity);definedStrokeOpacity&&(attr["stroke-opacity"]=config["stroke-opacity"]);definedFillOpacity&&(attr["fill-opacity"]=config["fill-opacity"]);datum.style&&Object.assign(attr,datum.style);if(isDatumPredictive){definedPredictiveOpacity&&(attr.opacity=predictiveStyleAttributes.predictiveOpacity);definedPredictiveStrokeOpacity&&(attr["stroke-opacity"]=predictiveStyleAttributes.predictiveStrokeOpacity);definedPredictiveFillOpacity&&(attr["fill-opacity"]=predictiveStyleAttributes.predictiveFillOpacity)}dataset.addGraphicalElement({el:"rect",container:{label:"group",id:!isDatumPredictive?"meso-plot":"meso-plot-predictive"},props:{dataLength:dataInfo.length},label:"rect",attr:attr,component:dataset,index:index},true);datum.style=_lib.UNDEF}}));config.hoverInfo=[]};_proto._isRepositioningNeeded=function _isRepositioningNeeded(){var dataset=this,config=dataset.config,xScale=dataset.getFromEnv("xScale"),yScale=dataset.getFromEnv("yScale"),_xScale$getDomain=xScale.getDomain(),xDomainStart=_xScale$getDomain[0],xDomainEnd=_xScale$getDomain[1],_xScale$getRange=xScale.getRange(),xRangeStart=_xScale$getRange[0],xRangeEnd=_xScale$getRange[1],_yScale$getDomain=yScale.getDomain(),yDomainStart=_yScale$getDomain[0],yDomainEnd=_yScale$getDomain[1],_yScale$getRange=yScale.getRange(),yRangeStart=_yScale$getRange[0],yRangeEnd=_yScale$getRange[1],positioningReq,prevBoundaryInfo=config.prevBoundaryInfo,hasDataYExtentChangedInAnyBin=this.hasDataYExtentChangedInAnyBin();if(+xDomainStart!==+prevBoundaryInfo.xDomainStart||+xDomainEnd!==+prevBoundaryInfo.xDomainEnd||+yDomainStart!==+prevBoundaryInfo.yDomainStart||+yDomainEnd!==+prevBoundaryInfo.yDomainEnd||xRangeStart!==prevBoundaryInfo.xRangeStart||xRangeEnd!==+prevBoundaryInfo.xRangeEnd||yRangeStart!==prevBoundaryInfo.yRangeStart||yRangeEnd!==+prevBoundaryInfo.yRangeEnd||config.prevVisibility!==config.visibility||config.legendInteracted||hasDataYExtentChangedInAnyBin){config.legendInteracted=false;positioningReq=true;config.prevBoundaryInfo={xDomainStart:xDomainStart,xDomainEnd:xDomainEnd,xRangeStart:xRangeStart,xRangeEnd:xRangeEnd,yDomainStart:yDomainStart,yDomainEnd:yDomainEnd,yRangeStart:yRangeStart,yRangeEnd:yRangeEnd};config.prevVisibility=config.visibility}return positioningReq};_proto.hasDataYExtentChangedInAnyBin=function hasDataYExtentChangedInAnyBin(){var config=this.config,data=config.data,prevPerBinYExtents=config.prevPerBinYExtents,indices=this.config.dataIndices,perBinYExtents=data.map((function(datum){return(0,_extent.default)(indices.map((function(idx){return datum[idx]})),Number)}));if(perBinYExtents.length===prevPerBinYExtents.length){var result=perBinYExtents.some((function(yExtent,idx){var prevYExtent=prevPerBinYExtents[idx];return yExtent[0]!==prevYExtent[0]||yExtent[1]!==prevYExtent[1]}));config.prevPerBinYExtents=perBinYExtents;return result}config.prevPerBinYExtents=perBinYExtents;return true};_proto.allocatePosition=function allocatePosition(){var dataset=this,config=dataset.config,_config$indices=config.indices,xIdx=_config$indices[0],yIdx=_config$indices[1],baseIdx=_config$indices[2],totalStackSum=_config$indices[3],binDecider=dataset.getFromEnv("binDecider"),xScale=dataset.getFromEnv("xScale"),yScale=dataset.getFromEnv("yScale"),dataInfo=config.dataInfo,seriesInfo=config.seriesInfo,dateColumn=dataset.getFromEnv("dateColumn"),isUTC=dataset.getFromEnv("UTC"),height,width,date,value,x,y,yBaseValue,yPos,yBase,hoverInfo,isNegative,pX,xShift,endXPosition,groupIndex=config.groupIndex||0,groupWidth,totalGroups=config.totalGroups||1,availableWidth,data=config.data,duration,eventArgs,seriesName,format=dateColumn.format,formatter=isUTC?_timeConverter.default.utcFormatter(format):_timeConverter.default.formatter(format),startDate,endDate,midGroup,gutter,i,len,bins=xScale.bins,plotBorderThickness=config.plotBorderThickness,considerPlotBorder=config.fillColor===config.strokeColor&&plotBorderThickness>0,paddingInTimestamp,rangeThreshold=binDecider.getRangeThreshold()[2],_xScale$getDomain2=xScale.getDomain(),startDomain=_xScale$getDomain2[0],endDomain=_xScale$getDomain2[1],dataObj;config.firstTimeStamp=data&&data[0]&&data[0][xIdx]&&data[0][xIdx].start;if(config.repositioningDone=dataset._isRepositioningNeeded()){if(config.visibility!=="visible"){return}dataInfo=config.dataInfo=[];config.availableWidth=availableWidth=0;for(i=0,len=bins.length;i<len;i++){if(bins[i].clipType!==2){config.availableWidth=availableWidth=xScale.getRangeValue(bins[i].end)-xScale.getRangeValue(bins[i].start);break}}config.timeStampGap=rangeThreshold;groupWidth=Math.max(availableWidth*(1-config.plotSpacePercent/100),1);width=groupWidth/totalGroups;midGroup=Math.round(totalGroups/2);gutter=totalGroups%2===0?0:.5;xShift=midGroup-groupIndex>0?-width*(midGroup-groupIndex-gutter):width*(groupIndex-midGroup+gutter);paddingInTimestamp=+xScale.getDomainValue(availableWidth*(config.plotSpacePercent/200))-+xScale.getDomainValue(0);config.actualStartDomain=+startDomain+paddingInTimestamp;config.actualEndDomain=+endDomain-paddingInTimestamp;considerPlotBorder&&(width=Math.max(width-plotBorderThickness,1));data.forEach((function(datum,index){date=datum[xIdx];value=datum[yIdx];duration=date.config.duration;startDate=date.start;endDate=date.end;if(!isUTC){var tempDate=new Date(startDate),winterOffset=new Date(tempDate.getFullYear(),0).getTimezoneOffset(),summerOffset=new Date(tempDate.getFullYear(),6).getTimezoneOffset();if(winterOffset>summerOffset){startDate=_hour.default.offset(startDate,1)}}if(!index){config.firstTimeStamp=date.start}yBaseValue=datum[baseIdx];yBase=yScale.getRangeValue(yBaseValue||Math.max(yScale.getDomain()[0],0));yPos=yScale.getRangeValue(value);if((0,_isValidNumber.default)(value)&&(0,_isValidNumber.default)(yBase)&&(0,_isValidNumber.default)(yPos)){x=xScale.getRangeValue(new Date(date.start),new Date(date.end));considerPlotBorder&&(x+=plotBorderThickness/2);x+=xShift;endXPosition=x+width;height=Math.abs(yBase-yPos);isNegative=yPos>yBase;y=isNegative?yBase:yPos;dataObj={startDate:startDate,endDate:endDate,value:value,yBaseValue:yBaseValue,yBase:yBase,x:x,endXPosition:endXPosition,y:y,width:width,height:height,totalStackSum:(0,_lib.defined)(datum[totalStackSum])?datum[totalStackSum]:_lib.UNDEF,eventArgs:{index:index,dataValue:value}};eventArgs={index:index,dataValue:value,start:startDate,startText:formatter.format(startDate),end:endDate,endText:formatter.format(endDate),binUnit:duration.Unit,binMultiplier:duration.number,plotType:config.type,timeFormatter:format,aggregation:config.aggregation,measure:config.measures[0],binValue:value,binValueFormatted:config.formatterFn&&config.formatterFn({value:value,type:"tooltip",prefix:config.prefix,suffix:config.suffix})};seriesName=Object.keys(seriesInfo)[0];if(seriesName){eventArgs.series=seriesName;eventArgs.seriesValue=seriesInfo[seriesName]}dataObj.eventArgs=eventArgs;pX=xScale.getBinIndex(date.start);dataInfo[pX]=dataObj}}))}if(hoverInfo=config.hoverInfo){hoverInfo.forEach((function(hoveredData){hoveredData.hoverIndices.forEach((function(index){if(typeof dataInfo[index]==="object"&&typeof hoveredData.style==="object"){dataInfo[index].style=(0,_lib.extend2)(dataInfo[index].style,hoveredData.style)}}))}))}};_proto._getRelevantInfo=function _getRelevantInfo(){var config=this.config;return{firstTimeStamp:config.firstTimeStamp,timeStampGap:config.timeStampGap,dataInfo:config.dataInfo,fill:config.style.stroke}};_proto._getHoveredPlot=function _getHoveredPlot(chartXArg,chartYArg){var dataset=this,chartX=chartXArg,chartY=chartYArg,xScale=dataset.getFromEnv("xScale"),xScaleRange=xScale.getRange(),canvas=dataset.getLinkedParent(),config=dataset.config,visible=config.visibility===VISIBLE,dataMarkers=[dataset.getChildren("dataMarker")],dataMarker,output,returnObj,translationObj=canvas.getTranslation(),translationX=translationObj?translationObj.x:0,translationY=translationObj?translationObj.y:0,pX;chartX-=translationX;chartY-=translationY;if(chartX<xScaleRange[0]||chartX>xScaleRange[1]){return{component:dataset}}pX=xScale.getBinIndex(xScale.getDomainValue(chartX));config.timeStampGap<=1&&pX===-1&&(pX=0);dataMarkers.forEach((function(dataMarkerArg){if(!output&&dataMarkerArg){dataMarker=dataMarkerArg[0];output=dataMarker._checkPointOverMarker(pX,chartX,chartY,config.availableWidth)}}));returnObj=output;if(!returnObj){if(visible){returnObj=dataset._checkPointerOverColumn(pX,chartX,chartY)}else{returnObj={}}}if(!returnObj.hovered){returnObj.binIndexHovered=xScale.getBinIndex(xScale.getDomainValue(chartX));returnObj.pointObj=config.dataInfo[returnObj.binIndexHovered]||xScale.getBinBounds(pX);returnObj.component=dataset}else{returnObj.binIndexHovered=returnObj.pointIndex}config.binIndexHovered=returnObj.binIndexHovered;return returnObj};_proto._getHoveredBin=function _getHoveredBin(){return this.config.binIndexHovered};_proto._getTooltext=function _getTooltext(pointFound,datasetHovered,dataIndex){var _dataSource$chart;var dataset=this,config=dataset.config,dataSource=dataset.getFromEnv("dataSource"),plots=dataset._linkedParent.getChildren("dataset"),tooltext=dataSource.tooltip?dataSource.tooltip.tooltext:null,tooltextElement,macroIndices,parserConfig,plotConfig,outPutFormatter=config.scaleX.formatters,timeFormat=config.scaleX._timeFormat,bin,binStart,binEnd,dsName=dataset.getName(),dsType=getGenericType(config.type),bodyStyle=dataset.getFromEnv("tooltipStyle").body,containerLineHeight=dataset.getFromEnv("tooltipStyle").container["line-height"]||1,colorBoxlen=containerLineHeight===1?bodyStyle["font-size"]:containerLineHeight,dataInfo=config.dataInfo,currData=dataInfo[dataIndex],value,opacity=pointFound?datasetHovered?1:.5:1,tooltipShapeFill=dsName==="continuous"?dsType==="line"?config.plotStyle.stroke:config.plotStyle.fill:config.style.fill,line2;chartNonce=(dataSource==null||(_dataSource$chart=dataSource.chart)==null?void 0:_dataSource$chart.nonce)||"";if(dataset._isInvalidTooltext(currData)){return""}if(!currData.tooltipValue){value=(0,_isValidNumber.default)(currData.yBaseValue)?currData.value-currData.yBaseValue:currData.value;currData.tooltipValue=(0,_isValidNumber.default)(value)?config.formatterFn({value:value,type:"tooltip",prefix:config.prefix,suffix:config.suffix}):""}if(tooltext){if(dataSource.yaxis.length>1){parserConfig={series:dataSource.yaxis.map((function(series){return{name:series.plot[0].value}}))}}else{parserConfig={series:dataSource.yaxis[0].plot.map((function(series){return{name:series.value}}))}}plotConfig={series:plots.map((function(index){var individualPlotConfig,isMajor,plotIdentifierElement;if(dataSource.xaxis[0].outputtimeformat){isMajor=timeFormat.minor?timeFormat.minor:timeFormat.major;binStart=outPutFormatter[isMajor].major.format(dataInfo[dataIndex].startDate);binEnd=outPutFormatter[isMajor].major.format(dataInfo[dataIndex].endDate)}else{bin=config.timeFormatterFn({type:"tooltip",dateRange:index.config.dataInfo[dataIndex]});binStart=bin.split("-")[0];binEnd=bin.split("-")[1]}individualPlotConfig=index.config.dataInfo[dataIndex].eventArgs;var tooltipPlotIdentifierElement=this.getAmanName("tooltip-aman");plotIdentifierElement='\n <style nonce="'+chartNonce+'">\n .'+tooltipPlotIdentifierElement+" {\n height: 10px;\n width: 10px;\n background-color: "+index.config.style.fill+';\n }\n </style>\n <div class="'+tooltipPlotIdentifierElement+'"></div>';return{color:index.config.style?index.config.style.fill:_lib.UNDEF,plotIdentifier:plotIdentifierElement,value:index.config.dataInfo[dataIndex].eventArgs.binValue,bin:bin,binStart:binStart,binEnd:binEnd,dataValue:index.config.dataInfo[dataIndex].eventArgs.binValueFormatted,volumeValue:dataInfo[dataIndex].eventArgs.binValue,volumeDataValue:dataInfo[dataIndex].eventArgs.binValueFormatted,openValue:individualPlotConfig.binOpen,openDataValue:individualPlotConfig.binOpenFormatted,highValue:individualPlotConfig.binHigh,highDataValue:individualPlotConfig.binHighFormatted,lowValue:individualPlotConfig.binLow,lowDataValue:individualPlotConfig.binLowFormatted,closeValue:individualPlotConfig.binClose,closeDataValue:individualPlotConfig.binCloseFormatted}}))};macroIndices=[154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171];tooltext=(0,_lib.parseTooltext)(tooltext,macroIndices,parserConfig,plotConfig);tooltextElement="<div>"+tooltext+"</div>"}else{var toolTextElementClass=this.getClassName("tool-text-element"),colorBoxLenClass=this.getClassName("color-box-len"),tooltipShapeFillClass=this.getClassName("tooltip-shape-fill"),configSeriesClass=this.getClassName("config-series"),tooltipValueClass=this.getClassName("tooltip-value");tooltextElement='\n <style nonce="'+chartNonce+'">\n .'+toolTextElementClass+" {\n margin-top: 6px;\n overflow: hidden;\n opacity: "+opacity+";\n }\n\n ."+colorBoxLenClass+" {\n float:left; \n height: "+colorBoxlen+"; \n width: "+colorBoxlen+"; \n position:relative;\n margin-right: 2px;\n }\n\n ."+tooltipShapeFillClass+" {\n display:block;\n height:64%;\n width:64%;\n position:absolute;\n top:50%;\n transform:translateY(-50%);\n background-color:"+tooltipShapeFill+";\n }\n\n ."+configSeriesClass+" {\n float: left;\n }\n\n ."+tooltipValueClass+' {\n float: right;\n }\n </style>\n <div class="'+toolTextElementClass+'">\n <span class="'+colorBoxLenClass+'">\n <span class="'+tooltipShapeFillClass+'"></span>\n </span>\n <div class="'+configSeriesClass+'">'+(0,_lib.parseUnsafeString)(config.series)+' </div>\n <div class="'+tooltipValueClass+'"> '+(currData.tooltipValue||"")+"</div>\n </div>"}line2=tooltextElement;return line2};_proto._isInvalidTooltext=function _isInvalidTooltext(currData){var dataset=this,config=dataset.config;if(!currData||currData.endDate<config.actualStartDomain||currData.startDate>config.actualEndDomain){return true}};_proto._getDateForToolText=function _getDateForToolText(dataIndex){var _this$getFromEnv;var dataset=this,config=dataset.config,dataInfo=config.dataInfo,line1=BLANK,line2=BLANK,currData=dataInfo[dataIndex];var lang=(_this$getFromEnv=this.getFromEnv("language"))!=null?_this$getFromEnv:"english";if(dataset._isInvalidTooltext(currData)){return{body:"",header:""}}if(!currData.tooltextTime){currData.tooltextTime=config.timeFormatterFn({type:"tooltip",dateRange:currData});currData._originalTooltextTime=currData.tooltextTime;currData._localizedTooltextLang=null;currData._localizedTooltextTime=null}if(currData._localizedTooltextLang!==lang){currData._localizedTooltextTime=(0,_localizeDateString.localizeDateString)(currData._originalTooltextTime,lang);currData._localizedTooltextLang=lang}var condition=currData.eventArgs&&currData.eventArgs.dataValue&&currData.totalStackSum,toolTextTimeClass=this.getClassName("tooltext-time"),totalStackSumClass=this.getClassName("tooltip-stack");if(condition&&currData.eventArgs.dataValue!==currData.totalStackSum){currData.totalStackSum=currData.eventArgs.dataValue}!currData.totalStackSumTooltip&&(0,_isValidNumber.default)(currData.totalStackSum)&&(currData.totalStackSumTooltip=config.formatterFn({value:currData.totalStackSum,type:"tooltip",prefix:config.prefix,suffix:config.suffix}));line1='\n <style nonce="'+chartNonce+'">\n .'+toolTextTimeClass+' {\n margin-bottom: 8px;\n }\n </style>\n <div class="'+toolTextTimeClass+'">'+currData._localizedTooltextTime+"</div>";currData.totalStackSumTooltip&&(line2='\n <style nonce="'+chartNonce+'">\n .'+totalStackSumClass+' {\n margin-bottom: 2px;\n }\n </style>\n <div class="'+totalStackSumClass+'">Total: '+currData.totalStackSumTooltip+"</div>");return{header:line1,body:line2}};_proto._checkPointerOverColumn=function _checkPointerOverColumn(pX,chartX,chartY){var dataset=this,config=dataset.config,plotBorderThickness=config.plotBorderThickness,dataInfo=config.dataInfo,pointObj,dx,dy,width,height,hovered,halfPlotBorderThickness,yPos;pointObj=dataInfo[pX];if(!pointObj){return{pointIndex:pX,hovered:false,component:dataset}}height=pointObj.height<HTP?HTP:pointObj.height;width=pointObj.width<HTP?HTP:pointObj.width;yPos=pointObj.height<HTP?pointObj.y-(HTP-pointObj.height):pointObj.y;if(plotBorderThickness!==_lib.UNDEF){halfPlotBorderThickness=plotBorderThickness/2}else{plotBorderThickness=halfPlotBorderThickness=0}dx=chartX-pointObj.x+halfPlotBorderThickness;dy=chartY-yPos+halfPlotBorderThickness;hovered=dx>=0&&dx<=width+plotBorderThickness&&dy>=0&&dy<=height+plotBorderThickness;return{pointIndex:pX,hovered:hovered,pointObj:pointObj,component:dataset}};_proto._firePlotEvent=function _firePlotEvent(eventType,plotIndex,e){var dataset=this,dataInfo=dataset.config.dataInfo,eventArgs=dataInfo[plotIndex]&&dataInfo[plotIndex].eventArgs||{},chart=dataset.getFromEnv("chart"),coordiante=(0,_lib.getMouseCoordinate)(chart.getFromEnv("chart-container"),e,chart),validCoordinates=checkForValidCoordinated(coordiante),args=(0,_lib.extend2)(coordiante,eventArgs),env,linkClickFN,cancelHover=function cancelHover(c,a){e.FusionChartsPreventEvent=true};if(plotIndex!==_lib.UNDEF&&validCoordinates){switch(eventType){case"fc-mouseover":chart.fireChartInstanceEvent(ROLLOVER,args,_lib.UNDEF,_lib.UNDEF,cancelHover);break;case"fc-mouseout":chart.fireChartInstanceEvent(ROLLOUT,args);break;case"fc-click":case"touchend":case"mouseup":chart.fireChartInstanceEvent(CLICK,args);env=chart.getFromEnv();linkClickFN=env&&env.linkClickFN;args.link&&linkClickFN&&linkClickFN.call({link:args.link},true);break;default:break}}};_proto.setHoverInEffect=function setHoverInEffect(indices,isHovered){var dataset=this,chart=dataset.getFromEnv("chart"),dataInfo=dataset.config.dataInfo,eventArgs;dataset.getFromEnv("animationManager").setAnimationState("mouseOver");if(!isHovered){indices.forEach((function(index){if(dataInfo[index]){eventArgs=dataInfo[index].eventArgs;chart.fireChartInstanceEvent(HIGHLIGHT,eventArgs)}}))}this.setData(isHovered?this.getHoverInConfig(indices):this.getHighlightConfig(indices),true)};_proto.setHoverOutEffect=function setHoverOutEffect(indices){this.getFromEnv("animationManager").setAnimationState("mouseOut");this.setData(this.getHoverOutConfig(indices),true)};_proto.getHighlightedIndices=function getHighlightedIndices(range){var dataset=this,config=dataset.config,dataInfo=config.dataInfo,hightlightedPoints=[];dataInfo.forEach((function(data,index){if(data.yBase<=range.minValue&&data.y>=range.maxValue){hightlightedPoints.push(index)}}));return hightlightedPoints};_proto.show=function show(){this.setData({visibility:"visible"},true)};_proto.hide=function hide(){this.setData({visibility:"hidden"},true)};_proto.isPlotPredictive=function isPlotPredictive(datum){return datum.startDate>=this.config.prediction.dateMs};_proto.parsePrediction=function parsePrediction(dataObject){this.config.prediction=dataObject.prediction||this.config.prediction;this.parsePredictiveStyleAttributes()};_proto.parsePredictiveStyleAttributes=function parsePredictiveStyleAttributes(){var predictiveStyleAttributes={},config=this.config;var predictiveStylePlot,predictiveStyleColumn;if(config.prediction.enabled){predictiveStylePlot=config.prediction.style.plot;predictiveStyleColumn=config.prediction.style.column;Object.assign(predictiveStyleAttributes,config.defaultPredictedDataStyle);Object.assign(predictiveStyleAttributes,predictiveStylePlot);Object.assign(predictiveStyleAttributes,predictiveStyleColumn)}predictiveStyleAttributes.predictiveOpacity=predictiveStyleAttributes.opacity;predictiveStyleAttributes.predictiveFillOpacity=predictiveStyleAttributes["fill-opacity"];predictiveStyleAttributes.predictiveStrokeOpacity=predictiveStyleAttributes["stroke-opacity"];delete predictiveStyleAttributes.opacity;delete predictiveStyleAttributes["fill-opacity"];delete predictiveStyleAttributes["stroke-opacity"];config.predictiveStyleAttributes=predictiveStyleAttributes||{}};return Column}(_smartRenderer.default);var _default=exports.default=Column;