UNPKG

@fusioncharts/fusiontime

Version:

FusionCharts JavaScript time-series charting framework

1 lines 11.1 kB
"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 _candlestick=_interopRequireDefault(require("./candlestick"));var _isValidNumber=_interopRequireDefault(require("@fusioncharts/utils/src/type/is-valid-number"));var _lib=require("@fusioncharts/core/src/lib");var _dependencyManager=require("@fusioncharts/core/src/dependency-manager");var _ohlc=_interopRequireDefault(require("./ohlc.animation"));var _safeMin=_interopRequireDefault(require("@fusioncharts/utils/src/array/safe-min"));var _extent=_interopRequireDefault(require("@fusioncharts/utils/src/array/extent"));var _timeConverter=_interopRequireDefault(require("@fusioncharts/utils/src/time-converter"));(0,_dependencyManager.addDep)({name:"ohlcAnimation",type:"animationRule",extension:_ohlc.default});var UNDEF;var tooltipYbuffer=10,DEFAULT_BEAR_STROKE_COLOR="868AC8";var OHLC=function(_CandleStick){function OHLC(){return _CandleStick.apply(this,arguments)||this}(0,_inheritsLoose2.default)(OHLC,_CandleStick);var _proto=OHLC.prototype;_proto.__setDefaultConfig=function __setDefaultConfig(){var config=this.config;_CandleStick.prototype.__setDefaultConfig.call(this);config.defaultBearStyle.stroke=DEFAULT_BEAR_STROKE_COLOR;config.defaultBearPredictiveStyle={};config.defaultBullPredictiveStyle={}};_proto._getRelevantInfo=function _getRelevantInfo(index){var config=this.config;return{firstTimeStamp:config.firstTimeStamp,timeStampGap:config.timeStampGap,dataInfo:config.dataInfo,fill:index!==UNDEF&&config.dataInfo[index].groupId==="bull"?config.bullStyle.stroke:config.bearStyle.stroke}};_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="",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){isDatumPredictive=dataset.isPlotPredictive(datum);derivedGroupId=isDatumPredictive?datum.groupId+"-predictive":datum.groupId;if(isDatumPredictive){mergePredictiveStylesInDatumGraphics(attrBaseBear,attrBaseBull)}attrBase=datum.groupId==="bull"?attrBaseBull:attrBaseBear;if(!!datum.lowStickYEntend+!!datum.highStickYExtend+!!datum.open+!!datum.close>1){if(datum.groupId==="bull"){attr=Object.assign({path:"M"+datum.midX+","+(datum.highStickYExtend||datum.open||datum.close)+",V"+(datum.lowStickYEntend||datum.close||datum.open),"stroke-linecap":"round"},attrBase);datum.style&&Object.assign(attr,datum.style);dataset.addGraphicalElement({el:"path",component:dataset,container:{label:"group",id:"meso-"+derivedGroupId},props:{index:index,dataLength:dataInfo.length},label:"highlow",attr:attr},true)}else{attr=Object.assign({path:"M"+datum.midX+","+(datum.highStickYExtend||datum.close)+",V"+(datum.lowStickYEntend||datum.open),"stroke-linecap":"round"},attrBase);datum.style&&Object.assign(attr,datum.style);dataset.addGraphicalElement({el:"path",component:dataset,container:{label:"group",id:"meso-"+derivedGroupId},props:{index:index,dataLength:dataInfo.length},label:"highlow",attr:attr},true)}}else if(datum.lowStickYEntend||datum.highStickYExtend){attr=Object.assign({path:"M"+datum.midX+","+(datum.lowStickYEntend||datum.highStickYExtend)+",V"+(datum.lowStickYEntend||datum.highStickYExtend),"stroke-linecap":"round"},attrBase);datum.style&&Object.assign(attr,datum.style);dataset.addGraphicalElement({el:"path",component:dataset,container:{label:"group",id:"meso-"+datum.groupId},props:{index:index,dataLength:dataInfo.length},label:"highlow",attr:attr},true)}if(datum.open){attr=Object.assign({path:"M"+datum.midX+","+datum.open+",H"+datum.leftExtend},attrBase);datum.style&&Object.assign(attr,datum.style);dataset.addGraphicalElement({el:"path",component:dataset,container:{label:"group",id:"meso-"+derivedGroupId},props:{index:index,dataLength:dataInfo.length},label:"open",attr:attr},true)}if(datum.close){attr=Object.assign({path:"M"+datum.midX+","+datum.close+",H"+datum.rightExtend},attrBase);datum.style&&Object.assign(attr,datum.style);dataset.addGraphicalElement({el:"path",component:dataset,container:{label:"group",id:"meso-"+derivedGroupId},props:{index:index,dataLength:dataInfo.length},label:"close",attr:attr},true);datum.style=UNDEF}}}));config.hoverInfo=[]};_proto.allocatePosition=function allocatePosition(){var dataset=this,binDecider=dataset.getFromEnv("binDecider"),xScale=dataset.getFromEnv("xScale"),yScale=dataset.getFromEnv("yScale"),config=dataset.config,_config$indices=config.indices,xIdx=_config$indices[0],openIdx=_config$indices[1],highIdx=_config$indices[2],lowIdx=_config$indices[3],closeIdx=_config$indices[4],width,date,midX,open,close,high,low,pX,dataObj,dataInfo=config.dataInfo,dateColumn=dataset.getFromEnv("dateColumn"),isUTC=dataset.getFromEnv("UTC"),groupId,hoverInfo,lowStickYEntend,highStickYExtend,availableWidth,closePx,openPx,startDate,endDate,i,len,bins=xScale.bins,data=config.data,format=dateColumn.format,measures=config.measures[0],formatter=isUTC?_timeConverter.default.utcFormatter(format):_timeConverter.default.formatter(format),duration,openValueFormatted,highValueFormatted,lowValueFormatted,closeValueFormatted;if(config.repositioningDone=dataset._isRepositioningNeeded()){config.timeStampGap=binDecider.getRangeThreshold()[2];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=availableWidth*(1-config.plotSpacePercent/100);dataInfo=config.dataInfo=[];data.forEach((function(datum,index){date=datum[xIdx];midX=xScale.getRangeValue(new Date(date.start),new Date(date.end));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)){groupId=open>close?"bear":"bull"}dataObj={startDate:startDate,endDate:endDate};dataObj.rightExtend=midX+width/2;dataObj.leftExtend=dataObj.x=midX-width/2;dataObj.endXPosition=dataObj.x+width;dataObj.y=(0,_safeMin.default)([highStickYExtend,openPx,closePx,lowStickYEntend]);dataObj.closeValuePx=yScale.getRangeValue(close);dataObj.width=width;dataObj.close=closePx;dataObj.openValue=open;dataObj.closeValue=close;dataObj.highValue=high;dataObj.lowValue=low;dataObj.value=close;dataObj.open=openPx;dataObj.midX=midX;dataObj.groupId=groupId||"bull";dataObj.lowStickYEntend=lowStickYEntend;dataObj.highStickYExtend=highStickYExtend;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.colY=dataObj.height/2+highStickYExtend-tooltipYbuffer;dataObj["stroke-width"]=(0,_lib.pluckNumber)(config["default-stroke-width"],1);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=hoveredData[dataInfo[index].groupId+"Style"]}}))}))}};_proto.getName=function getName(){return"timeseries-ohlc"};return OHLC}(_candlestick.default);var _default=exports.default=OHLC;