@fusioncharts/fusiontime
Version:
FusionCharts JavaScript time-series charting framework
1 lines • 29.5 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 _safeMax=_interopRequireDefault(require("@fusioncharts/utils/src/array/safe-max"));var _safeMin=_interopRequireDefault(require("@fusioncharts/utils/src/array/safe-min"));var _extent=_interopRequireDefault(require("@fusioncharts/utils/src/array/extent"));var _dependencyManager=require("@fusioncharts/core/src/dependency-manager");var _isValidNumber=_interopRequireDefault(require("@fusioncharts/utils/src/type/is-valid-number"));var _timeConverter=_interopRequireDefault(require("@fusioncharts/utils/src/time-converter"));var _column=_interopRequireDefault(require("./column"));var _candlestick=_interopRequireDefault(require("./candlestick.animation"));var STROKE_COLOR="#464E56",BEAR="bear",BULL="bull",_reducerFn=function _reducerFn(s,t){return Object.assign(s,t)};(0,_dependencyManager.addDep)({name:"timeseriesCandlestickAnimation",type:"animationRule",extension:_candlestick.default});var CandleStick=function(_Column){function CandleStick(){var _this;for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key]}_this=_Column.call.apply(_Column,[this].concat(args))||this;_this.getClassName=function(baseName){if(baseName===void 0){baseName=""}var randomString=Math.random().toString(36).substring(2);return baseName+"-"+randomString};return _this}(0,_inheritsLoose2.default)(CandleStick,_Column);var _proto=CandleStick.prototype;_proto.getHoverInConfig=function getHoverInConfig(hoverIndices){var dsConfig=this.config;return{bullStyle:dsConfig.bullHoverInStyle,bearStyle:dsConfig.bearHoverInStyle,hoverIndices:hoverIndices,hovered:true}};_proto.getHighlightConfig=function getHighlightConfig(hoverIndices){var dsConfig=this.config;return{bullStyle:dsConfig.bullHighlightStyle,bearStyle:dsConfig.bearHighlightStyle,hoverIndices:hoverIndices,hovered:true}};_proto.getHoverOutConfig=function getHoverOutConfig(hoverIndices){var dsConfig=this.config,bullStyle=Object.assign({},dsConfig.bullHoverOutStyle),bearStyle=Object.assign({},dsConfig.bearHoverOutStyle),key;for(key in bullStyle){bullStyle[key]=null}for(key in bearStyle){bearStyle[key]=null}return{bullStyle:bullStyle,bearStyle:bearStyle,hoverIndices:hoverIndices,hovered:false}};_proto.__setDefaultConfig=function __setDefaultConfig(){var dataset=this,config=dataset.config;config.isStock=true;config.bullStyle={};config.bullHoverInStyle={};config.bullHighlightStyle={};config.bullHoverOutStyle={};config.bearStyle={};config.bearHoverInStyle={};config.bearHighlightStyle={};config.bearHoverOutStyle={};config.plotSpacePercent=40;config.dataMarkerPadding=0;config.visibility=_lib.VISIBLE;config.prevBoundaryInfo={};config.defaultBullStyle={"stroke-width":1,opacity:1,stroke:"000000",fill:"ffffff"};config.defaultBearStyle={"stroke-width":1,opacity:1,stroke:"000000",fill:"868AC8"};config.defaultBullHighlightStyle={"stroke-width":2};config.defaultBearHighlightStyle={"stroke-width":2};config.defaultBearHoverInStyle={"stroke-width":2};config.defaultBullHoverInStyle={"stroke-width":2};config.legendDefaultTextStyle={"font-family":_lib.DEFAULT_FT_FONT,"font-weight":"normal","font-style":"normal","font-size":"12px",fill:"#5F5F5F"};config.defaultBearPredictiveStyle={fill:"#62B58F"};config.defaultBullPredictiveStyle={fill:"#F76363"};config.strokeColor=STROKE_COLOR;config.hoverInfo=[];config.prevPerBinYExtents=[];config.dataIndices=[1,2,3,4]};_proto.configureAttributes=function configureAttributes(dataObj){var dataset=this,prop,dataSource=dataset.getFromEnv("dataSource"),getStyleDef=dataset.getFromEnv("getStyleDef"),legendConf=dataSource.legend,legendStyle=getStyleDef(legendConf&&legendConf.item&&legendConf.item.style&&legendConf.item.style.text),config=dataset.config;config.mergedLegendStyle=(0,_lib.extend2)((0,_lib.extend2)({},config.legendDefaultTextStyle),legendStyle);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,bullStyle=config.bullStyle,bearStyle=config.bearStyle,bullHoverInStyle=config.bullHoverInStyle,bearHoverInStyle=config.bearHoverInStyle,bullHighlightStyle=config.bullHighlightStyle,bearHighlightStyle=config.bearHighlightStyle,bullHoverOutStyle=config.bullHoverOutStyle,bearHoverOutStyle=config.bearHoverOutStyle,styles=void 0,applicableClassBearStyle=getStyleDef(plotConfig.style&&plotConfig.style.bear),applicableClassBullStyle=getStyleDef(plotConfig.style&&plotConfig.style.bull),applicableClassStyleGeneric=getStyleDef(genericConfig.style&&genericConfig.style.plot),applicableClassStyleGenericHover=getStyleDef(genericConfig.style&&genericConfig.style["plot:hover"]),applicableClassStyleGenericHighlight=getStyleDef(genericConfig.style&&genericConfig.style["plot:highlight"]),applicableClassBullStyleGeneric=getStyleDef(genericConfig.style&&genericConfig.style.bull),applicableClassBullStyleGenericHover=getStyleDef(genericConfig.style&&genericConfig.style["bull:hover"]),applicableClassBullStyleGenericHighlight=getStyleDef(genericConfig.style&&genericConfig.style["bull:highlight"]),applicableClassBearStyleGeneric=getStyleDef(genericConfig.style&&genericConfig.style.bear),applicableClassBearStyleGenericHover=getStyleDef(genericConfig.style&&genericConfig.style["bear:hover"]),applicableClassBearStyleGenericHighlight=getStyleDef(genericConfig.style&&genericConfig.style["bear:highlight"]),applicableClassBearHoverStyle=getStyleDef(plotConfig.style&&plotConfig.style["bear:hover"]),applicableClassBearHighlightStyle=getStyleDef(plotConfig.style&&plotConfig.style["bear:highlight"]),applicableClassBullHoverStyle=getStyleDef(plotConfig.style&&plotConfig.style["bull:hover"]),applicableClassBullHighlightStyle=getStyleDef(plotConfig.style&&plotConfig.style["bull:highlight"]),applicableInlineBearStyle=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig.bear),applicableInlineBullStyle=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig.bull),applicableInlineBearHoverStyle=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig["bear:hover"]),applicableInlineBearHighlightStyle=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig["bear:highlight"]),applicableInlineBullHoverStyle=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig["bull:hover"]),applicableInlineBullHighlightStyle=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig["bull:highlight"]),applicableClassStylePlot=getStyleDef(plotConfig.style&&plotConfig.style.plot),applicableInlineStylePlot=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig.plot),applicableClassStyleHoverPlot=getStyleDef(plotConfig.style&&plotConfig.style["generic:hover"]),applicableClassStyleHighlightPlot=getStyleDef(plotConfig.style&&plotConfig.style["generic:highlight"]),applicableInlineStyleHoverPlot=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig["plot:hover"]),applicableInlineStyleHighlightPlot=getStyleDef(dataObj.styleConfig&&dataObj.styleConfig["plot:highlight"]);delete applicableClassStyleGeneric.fill;delete applicableClassStylePlot.fill;delete applicableInlineStylePlot.fill;if(dataset.getName()==="timeseries-ohlc"){delete applicableInlineStylePlot.stroke;delete applicableClassStyleGeneric.stroke;delete applicableClassStylePlot.stroke}[bullStyle,config.defaultBullStyle,applicableClassStyleGeneric,applicableClassStylePlot,applicableInlineStylePlot,applicableClassBullStyleGeneric,applicableClassBullStyle,applicableInlineBullStyle].reduce(_reducerFn);[bearStyle,config.defaultBearStyle,applicableClassStyleGeneric,applicableClassStylePlot,applicableInlineStylePlot,applicableClassBearStyleGeneric,applicableClassBearStyle,applicableInlineBearStyle].reduce(_reducerFn);[bullHoverInStyle,config.defaultBullHoverInStyle,applicableClassStyleGenericHover,applicableClassStyleHoverPlot,applicableInlineStyleHoverPlot,applicableClassBullStyleGenericHover,applicableClassBullHoverStyle,applicableInlineBullHoverStyle].reduce(_reducerFn);[bullHighlightStyle,config.defaultBullHighlightStyle,applicableClassStyleGenericHighlight,applicableClassStyleHighlightPlot,applicableInlineStyleHighlightPlot,applicableClassBullStyleGenericHighlight,applicableClassBullHighlightStyle,applicableInlineBullHighlightStyle].reduce(_reducerFn);[bearHoverInStyle,config.defaultBearHoverInStyle,applicableClassStyleGenericHover,applicableClassStyleHoverPlot,applicableInlineStyleHoverPlot,applicableClassBearStyleGenericHover,applicableClassBearHoverStyle,applicableInlineBearHoverStyle].reduce(_reducerFn);[bearHighlightStyle,config.defaultBearHighlightStyle,applicableClassStyleGenericHighlight,applicableClassStyleHighlightPlot,applicableInlineStyleHighlightPlot,applicableClassBearStyleGenericHighlight,applicableClassBearHighlightStyle,applicableInlineBearHighlightStyle].reduce(_reducerFn);bullStyle.stroke=(0,_lib.convertColor)(bullStyle.stroke,(0,_lib.pluckNumber)(bullStyle["stroke-opacity"],1)*100);bullStyle.fill=(0,_lib.convertColor)(bullStyle.fill,(0,_lib.pluckNumber)(bullStyle["fill-opacity"],1)*100);bearStyle.stroke=(0,_lib.convertColor)(bearStyle.stroke,(0,_lib.pluckNumber)(bearStyle["fill-opacity"],1)*100);bearStyle.fill=(0,_lib.convertColor)(bearStyle.fill,(0,_lib.pluckNumber)(bearStyle["fill-opacity"],1)*100);bullHoverInStyle.fill&&(bullHoverInStyle.fill=(0,_lib.convertColor)(bullHoverInStyle.fill,(0,_lib.pluckNumber)(bullHoverInStyle["fill-opacity"],bullStyle["fill-opacity"])*100));bullHoverInStyle.stroke&&(bullHoverInStyle.stroke=(0,_lib.convertColor)(bullHoverInStyle.stroke,(0,_lib.pluckNumber)(bullHoverInStyle["stroke-opacity"],bullStyle["stroke-opacity"])*100));bearHoverInStyle.fill&&(bearHoverInStyle.fill=(0,_lib.convertColor)(bearHoverInStyle.fill,(0,_lib.pluckNumber)(bearHoverInStyle["fill-opacity"],bearStyle["fill-opacity"])*100));bearHoverInStyle.stroke&&(bearHoverInStyle.stroke=(0,_lib.convertColor)(bearHoverInStyle.stroke,(0,_lib.pluckNumber)(bearHoverInStyle["stroke-opacity"],bearStyle["stroke-opacity"])*100));bullHighlightStyle.fill&&(bullHighlightStyle.fill=(0,_lib.convertColor)(bullHighlightStyle.fill,(0,_lib.pluckNumber)(bullHighlightStyle["fill-opacity"],bullStyle["fill-opacity"])*100));bullHighlightStyle.stroke&&(bullHighlightStyle.stroke=(0,_lib.convertColor)(bullHighlightStyle.stroke,(0,_lib.pluckNumber)(bullHighlightStyle["stroke-opacity"],bullStyle["stroke-opacity"])*100));bearHoverInStyle.fill&&(bearHoverInStyle.fill=(0,_lib.convertColor)(bearHoverInStyle.fill,(0,_lib.pluckNumber)(bearHoverInStyle["fill-opacity"],bearStyle["fill-opacity"])*100));bearHoverInStyle.stroke&&(bearHoverInStyle.stroke=(0,_lib.convertColor)(bearHoverInStyle.stroke,(0,_lib.pluckNumber)(bearHoverInStyle["stroke-opacity"],bearStyle["stroke-opacity"])*100));config.plotBorderThickness=bearStyle["stroke-width"]=bullStyle["stroke-width"]=(0,_lib.pluckNumber)((0,_safeMin.default)([bearStyle["stroke-width"],bullStyle["stroke-width"]],Number.parseFloat));for(styles in Object.assign(Object.assign({},bullHoverInStyle),bullHighlightStyle)){bullHoverOutStyle[styles]=(0,_lib.pluck)(bullStyle[styles],"")}(0,_lib.defined)(bullHoverOutStyle["stroke-dasharray"])&&(bullHoverOutStyle["stroke-dasharray"]="");for(styles in Object.assign(Object.assign({},bearHoverInStyle),bearHighlightStyle)){bearHoverOutStyle[styles]=bearStyle[styles]||""}(0,_lib.defined)(bearHoverOutStyle["stroke-dasharray"])&&(bullHoverOutStyle["stroke-dasharray"]="");config.bullOpacity=bullStyle.opacity;config["bull-fill-opacity"]=bullStyle["fill-opacity"];config["bull-stroke-opacity"]=bullStyle["stroke-opacity"];config.bearOpacity=bearStyle.opacity;config["bear-fill-opacity"]=bearStyle["fill-opacity"];config["bear-stroke-opacity"]=bearStyle["stroke-opacity"];delete bullStyle.opacity;delete bullStyle["fill-opacity"];delete bullStyle["stroke-opacity"];delete bearStyle.opacity;delete bearStyle["fill-opacity"];delete bearStyle["stroke-opacity"]}else{config[prop]=dataObj[prop]}}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.parsePrediction=function parsePrediction(dataObject){this.config.prediction=dataObject.prediction||this.config.prediction;this.parsePredictiveStyleAttributes()};_proto.parsePredictiveStyleAttributes=function parsePredictiveStyleAttributes(){var predictiveStyleAttributes={},config=this.config;config.predictiveStyleAttributesBear={};config.predictiveStyleAttributesBull={};if(config.prediction.enabled){Object.assign(predictiveStyleAttributes,config.prediction.style.plot);Object.assign(config.predictiveStyleAttributesBear,config.defaultBearPredictiveStyle,config.prediction.style.plot,config.prediction.style.bear);Object.assign(config.predictiveStyleAttributesBull,config.defaultBullPredictiveStyle,config.prediction.style.plot,config.prediction.style.bull)}config.predictiveStyleAttributes=predictiveStyleAttributes||{}};_proto._calculateLimits=function _calculateLimits(){var _this$config=this.config,indices=_this$config.indices,data=_this$config.data,scaleY=_this$config.scaleY,scaleX=_this$config.scaleX,calculateFromContext=_this$config.calculateFromContext,firstData=data[0],lastData=data[data.length-1],showPlotOverTick=scaleX.showPlotOverTick(),isVisible=this.config.visibility==="visible",isLog=scaleY.getType()==="log",chart=this.getFromEnv("chart"),_ref=calculateFromContext?chart.getContextLimit():chart.getFocusLimit(),focusLimitStart=_ref[0],focusLimitEnd=_ref[1],returnObj={},padding,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)}},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)}};padding=this.getPadding();returnObj.x=[firstData&&firstData[indices[0]].start-padding,lastData&&lastData[indices[0]][showPlotOverTick?"start":"end"]+padding];returnObj.y=isVisible?[(0,_safeMin.default)(data,minFn),(0,_safeMax.default)(data,maxFn)]:_lib.UNDEF;returnObj.baseRequired=false;return returnObj};_proto._getRelevantInfo=function _getRelevantInfo(index){var config=this.config,fill,text,stroke;if(index!==_lib.UNDEF){var _ref2=config.dataInfo[index].groupId==="bull"?config.bullStyle:config.bearStyle;fill=_ref2.fill;stroke=_ref2.stroke;if((0,_lib.rgbaToHex)(fill)==="#ffffff"){text={fill:stroke}}}return{firstTimeStamp:config.firstTimeStamp,timeStampGap:config.timeStampGap,dataInfo:config.dataInfo,fill:fill,stroke:stroke,text:text}};_proto._createContainer=function _createContainer(){_Column.prototype._createContainer.call(this);var dataset=this,config=dataset.config,bullStyle=config.bullStyle,bearStyle=config.bearStyle;dataset.addGraphicalElement({el:"group",container:{id:"meso",label:"group",isParent:true},component:dataset,label:"group",id:"meso",attr:{name:"candlestick-dataset-meso"}});dataset.addGraphicalElement({el:"group",container:{id:"meso",label:"group"},component:dataset,label:"group",id:"meso-bull",attr:Object.assign({name:"bullGroup-meso",visibility:config.visibility},bullStyle)});dataset.addGraphicalElement({el:"group",container:{id:"meso",label:"group"},component:dataset,label:"group",id:"meso-bear",attr:Object.assign({name:"bearGroup-meso",visibility:config.visibility},bearStyle)});dataset.addGraphicalElement({el:"group",container:{id:"meso",label:"group"},component:dataset,label:"group",id:"meso-bull-predictive",attr:Object.assign({name:"predictive-bullGroup-meso",visibility:config.visibility},bullStyle,config.predictiveStyleAttributesBull)});dataset.addGraphicalElement({el:"group",container:{id:"meso",label:"group"},component:dataset,label:"group",id:"meso-bear-predictive",attr:Object.assign({name:"predictive-bearGroup-meso",visibility:config.visibility},bearStyle,config.predictiveStyleAttributesBear)})};_proto.getName=function getName(){return"timeseriesCandlestick"};_proto.getHighlightedIndices=function getHighlightedIndices(range){var dataset=this,config=dataset.config,dataInfo=config.dataInfo,hightlightedPoints=[];dataInfo.forEach((function(data,index){if(data.closeValuePx<=range.minValue&&data.closeValuePx>=range.maxValue){hightlightedPoints.push(index)}}));return hightlightedPoints};_proto.allocatePosition=function allocatePosition(){var dataset=this,binDecider=dataset.getFromEnv("binDecider"),xScale=dataset.getFromEnv("xScale"),yScale=dataset.getFromEnv("yScale"),config=dataset.config,measures=config.measures[0],_config$indices=config.indices,xIdx=_config$indices[0],openIdx=_config$indices[1],highIdx=_config$indices[2],lowIdx=_config$indices[3],closeIdx=_config$indices[4],dateColumn=dataset.getFromEnv("dateColumn"),isUTC=dataset.getFromEnv("UTC"),height,width,date,x,y,midX,yPos,yBase,groupId,open,close,high,low,dataObj,pX,lowStickYEntend,highStickYExtend,dataInfo=config.dataInfo,availableWidth,hoverInfo,openPx,closePx,duration,format=dateColumn.format,formatter=isUTC?_timeConverter.default.utcFormatter(format):_timeConverter.default.formatter(format),startDate,endDate,i,len,bins=xScale.bins,rangeThreshold=binDecider.getRangeThreshold()[2],_xScale$getDomain=xScale.getDomain(),startDomain=_xScale$getDomain[0],endDomain=_xScale$getDomain[1],paddingInTimestamp,data=config.data,openValueFormatted,highValueFormatted,lowValueFormatted,closeValueFormatted;if(config.repositioningDone=dataset._isRepositioningNeeded()){config.timeStampGap=rangeThreshold;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}}width=Math.max(availableWidth*(1-config.plotSpacePercent/100)-config.plotBorderThickness,1);paddingInTimestamp=+xScale.getDomainValue(availableWidth*(config.plotSpacePercent/200))-+xScale.getDomainValue(0);config.actualStartDomain=+startDomain+paddingInTimestamp;config.actualEndDomain=+endDomain-paddingInTimestamp;dataInfo=config.dataInfo=[];data.forEach((function(datum,index){date=datum[xIdx];open=datum[openIdx];close=datum[closeIdx];high=datum[highIdx];low=datum[lowIdx];duration=date.config.duration;startDate=date.start;endDate=date.end;if(!index){config.firstTimeStamp=date.start}closePx=yScale.getRangeValue(close);openPx=yScale.getRangeValue(open);highStickYExtend=yScale.getRangeValue(high);lowStickYEntend=yScale.getRangeValue(low);if((0,_isValidNumber.default)(openPx)||(0,_isValidNumber.default)(closePx)||(0,_isValidNumber.default)(highStickYExtend)||(0,_isValidNumber.default)(lowStickYEntend)){if((0,_isValidNumber.default)(openPx)&&(0,_isValidNumber.default)(closePx)){if(open>close){yBase=closePx;yPos=openPx;groupId=BEAR}else{yPos=closePx;yBase=openPx;groupId=BULL}height=Math.max(Math.abs(yBase-yPos),1);y=yPos>yBase?yBase:yPos}midX=xScale.getRangeValue(new Date(date.start),new Date(date.end));x=midX-width/2;dataObj={startDate:startDate,endDate:endDate};dataObj.x=x;dataObj.endXPosition=x+width;dataObj.midX=midX;dataObj.colHeight=height||0;dataObj.colY=y||openPx||closePx;dataObj.highStickYExtend=highStickYExtend;dataObj.y=(0,_safeMin.default)([highStickYExtend,closePx,openPx,lowStickYEntend]);dataObj.closeValuePx=closePx;dataObj.width=width;dataObj.openValue=open;dataObj.closeValue=close;dataObj.highValue=high;dataObj.lowValue=low;dataObj.value=close;dataObj.lowStickYEntend=lowStickYEntend;openValueFormatted=config.formatterFn({value:open,type:"tooltip",prefix:config.prefix,suffix:config.suffix});closeValueFormatted=config.formatterFn({value:close,type:"tooltip",prefix:config.prefix,suffix:config.suffix});highValueFormatted=config.formatterFn({value:high,type:"tooltip",prefix:config.prefix,suffix:config.suffix});lowValueFormatted=config.formatterFn({value:low,type:"tooltip",prefix:config.prefix,suffix:config.suffix});dataObj.eventArgs={index:index,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:measures.close,measureHigh:measures.high,measureLow:measures.low,measureOpen:measures.open,measuresClose:measures.close,binValue:close,binOpen:open,binHigh:high,binLow:low,binClose:close,binValueFomatted:closeValueFormatted,binOpenFormatted:openValueFormatted,binHighFormatted:highValueFormatted,binCloseFormatted:closeValueFormatted,binLowFormatted:lowValueFormatted};var minmax=(0,_extent.default)([openPx,closePx,highStickYExtend,lowStickYEntend]);dataObj.height=Math.abs(minmax[0]-minmax[1])||0;dataObj.groupId=groupId||"bull";dataObj.groupConfig=groupId==="bull"?"bullConfig":"bearConfig";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"){dataInfo[index].style=(0,_lib.extend2)(dataInfo[index].style,hoveredData[dataInfo[index].groupId+"Style"])}}))}))}};_proto._drawPlot=function _drawPlot(){var dataset=this,config=dataset.config,attr,dataInfo=config.dataInfo,definedBullOpacity=(0,_lib.defined)(config.bullOpacity),definedBullFillOpacity=(0,_lib.defined)(config["bull-fill-opacity"]),definedBullStrokeOpacity=(0,_lib.defined)(config["bull-stroke-opacity"]),predictiveStyleAttributesBull=config.predictiveStyleAttributesBull,definedPredictiveBullOpacity=(0,_lib.defined)(predictiveStyleAttributesBull.opacity),definedPredictiveBullFillOpacity=(0,_lib.defined)(predictiveStyleAttributesBull["fill-opacity"]),definedPredictiveBullStrokeOpacity=(0,_lib.defined)(predictiveStyleAttributesBull["stroke-opacity"]),definedBearOpacity=(0,_lib.defined)(config.bearOpacity),definedBearFillOpacity=(0,_lib.defined)(config["bear-fill-opacity"]),definedBearStrokeOpacity=(0,_lib.defined)(config["bear-stroke-opacity"]),predictiveStyleAttributesBear=config.predictiveStyleAttributesBear,definedPredictiveBearOpacity=(0,_lib.defined)(predictiveStyleAttributesBear.opacity),definedPredictiveBearFillOpacity=(0,_lib.defined)(predictiveStyleAttributesBear["fill-opacity"]),definedPredictiveBearStrokeOpacity=(0,_lib.defined)(predictiveStyleAttributesBear["stroke-opacity"]),attrBaseBull={},attrBaseBear={},attrBase,derivedGroupId=_lib.BLANKSTRING,isDatumPredictive=false,mergePredictiveStylesInDatumGraphics=function mergePredictiveStylesInDatumGraphics(attrBear,attrBull){definedPredictiveBearOpacity&&(attrBear.opacity=predictiveStyleAttributesBear.opacity);definedPredictiveBearFillOpacity&&(attrBear.opacity=predictiveStyleAttributesBear["fill-opacity"]);definedPredictiveBearStrokeOpacity&&(attrBear.opacity=predictiveStyleAttributesBear["stroke-opacity"]);definedPredictiveBullOpacity&&(attrBull.opacity=predictiveStyleAttributesBull.opacity);definedPredictiveBullFillOpacity&&(attrBull.opacity=predictiveStyleAttributesBull["fill-opacity"]);definedPredictiveBullStrokeOpacity&&(attrBull.opacity=predictiveStyleAttributesBull["stroke-opacity"])};definedBullOpacity&&(attrBaseBull.opacity=config.bullOpacity);definedBullFillOpacity&&(attrBaseBull.opacity=config["bull-fill-opacity"]);definedBullStrokeOpacity&&(attrBaseBull.opacity=config["bull-stroke-opacity"]);definedBearOpacity&&(attrBaseBear.opacity=config.bearOpacity);definedBearFillOpacity&&(attrBaseBear.opacity=config["bear-fill-opacity"]);definedBearStrokeOpacity&&(attrBaseBear.opacity=config["bear-stroke-opacity"]);dataInfo.forEach((function(datum,index){if(datum.groupConfig){attrBase=datum.groupId==="bull"?attrBaseBull:attrBaseBear;isDatumPredictive=dataset.isPlotPredictive(datum);derivedGroupId=isDatumPredictive?datum.groupId+"-predictive":datum.groupId;if(datum.colHeight>0){attr=Object.assign({x:datum.x,y:datum.colY,height:datum.colHeight,width:datum.width},attrBase);datum.style&&Object.assign(attr,datum.style);if(isDatumPredictive){mergePredictiveStylesInDatumGraphics(attrBaseBear,attrBaseBull)}dataset.addGraphicalElement({el:"rect",component:dataset,props:{index:index,dataLength:dataInfo.length},container:{label:"group",id:"meso-"+derivedGroupId},label:"rect",attr:attr},true)}else if(datum.openValue||datum.closeValue){attr=Object.assign({path:"M"+datum.x+","+datum.colY+",H"+(datum.x+datum.width)},attrBase);datum.style&&Object.assign(attr,datum.style);if(isDatumPredictive){mergePredictiveStylesInDatumGraphics(attrBaseBear,attrBaseBull)}dataset.addGraphicalElement({el:"path",component:dataset,props:{index:index,dataLength:dataInfo.length},container:{label:"group",id:"meso-"+derivedGroupId},label:"line",attr:attr},true)}if(datum.highStickYExtend){attr=Object.assign({path:"M"+datum.midX+","+datum.highStickYExtend+",V"+(datum.colY||datum.highStickYExtend+datum.height),"stroke-linecap":"round"},attrBase);datum.style&&Object.assign(attr,datum.style);dataset.addGraphicalElement({el:"path",component:dataset,props:{index:index,dataLength:dataInfo.length},container:{label:"group",id:"meso-"+datum.groupId},label:"high",attr:attr},true)}if(datum.lowStickYEntend){attr=Object.assign({path:"M"+datum.midX+","+datum.lowStickYEntend+",V"+(datum.colY+datum.colHeight||datum.lowStickYEntend-datum.height),"stroke-linecap":"round"},attrBase);datum.style&&Object.assign(attr,datum.style);dataset.addGraphicalElement({el:"path",component:dataset,props:{index:index,dataLength:dataInfo.length},container:{label:"group",id:"meso-"+datum.groupId},label:"low",attr:attr},true)}}}));config.hoverInfo=[]};_proto._getTooltext=function _getTooltext(pointFound,datasetHovered,dataIndex){var dataset=this,config=dataset.config,dataSource=dataset.getFromEnv("dataSource"),plots=dataset._linkedParent.getChildren("dataset"),tooltext=dataSource.tooltip?dataSource.tooltip.tooltext:null,macroIndices,parserConfig,plotConfig,timeNavigator=dataset._linkedParent._linkedParent._components.timeNavigator[0],formatter=timeNavigator.config.formatter,binStart,binEnd,containsVolume,dataInfo=config.dataInfo,currData=dataInfo[dataIndex],isDataDefined,chartNonce=(config==null?void 0:config.nonce)||"",opacity=pointFound?datasetHovered?1:.5:1,line1;if(dataset._isInvalidTooltext(currData)){return""}isDataDefined=(0,_lib.defined)(currData.groupConfig);if(tooltext){containsVolume=dataSource.yaxis.find((function(item){return item.plot.find((function(plotType){return plotType.value==="Volume"}))}));if(!containsVolume){parserConfig={series:dataSource.yaxis.map((function(series){return{name:series.title}}))};plotConfig={series:plots.map((function(index){binStart=formatter.format(index.config.dataInfo[dataIndex].startDate);binEnd=formatter.format(index.config.dataInfo[dataIndex].endDate);return{bin:binStart+"-"+binEnd,binStart:binStart,binEnd:binEnd,openValue:index.config.dataInfo[dataIndex].eventArgs.binOpen,openDataValue:index.config.dataInfo[dataIndex].eventArgs.binOpenFormatted,highValue:index.config.dataInfo[dataIndex].eventArgs.binHigh,highDataValue:index.config.dataInfo[dataIndex].eventArgs.binHighFormatted,lowValue:index.config.dataInfo[dataIndex].eventArgs.binLow,lowDataValue:index.config.dataInfo[dataIndex].eventArgs.binLowFormatted,closeValue:index.config.dataInfo[dataIndex].eventArgs.binClose,closeDataValue:index.config.dataInfo[dataIndex].eventArgs.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);line1="<div>"+tooltext+"</div>"}else{line1="<div></div>"}}else{var tooltipMarginClass=this.getClassName("tooltip-margin");line1='\n <style nonce="'+chartNonce+'">\n .'+tooltipMarginClass+" {\n margin-bottom: 5px; \n opacity: "+opacity+';\n }\n </style>\n <div class="'+tooltipMarginClass+'">\n <div>'+(0,_lib.parseUnsafeString)(config.series)+"</div>\n </div>";if(isDataDefined){var tooltipClass=this.getClassName("tooltip-class"),tooltipFloatRightClass=this.getClassName("tooltip-float-right-class"),tooltipFloatLeftClass=this.getClassName("tooltip-float-left-class");return(config.series?line1:"")+["open","high","low","close"].reduce((function(accumulator,currentValue){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 .'+tooltipClass+" {\n overflow: hidden; margin-top:4px;\n }\n\n ."+tooltipFloatLeftClass+" {\n float: left;\n }\n\n ."+tooltipFloatRightClass+' {\n float: right;\n }\n </style>\n <div class="'+tooltipClass+'">\n <div class="'+tooltipFloatLeftClass+'">'+currentValue+'</div>\n <div class="'+tooltipFloatRightClass+'">'+value+"</div>\n </div>":"")}),"")}}return line1};return CandleStick}(_column.default);var _default=exports.default=CandleStick;