@fusioncharts/fusiontime
Version:
FusionCharts JavaScript time-series charting framework
1 lines • 8.24 kB
JavaScript
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _index=_interopRequireDefault(require("@fusioncharts/datatable/src/aggregators/index.js"));var _arrayHasContent=_interopRequireDefault(require("@fusioncharts/utils/src/type/array-has-content"));var _isArray=_interopRequireDefault(require("@fusioncharts/utils/src/type/is-array"));var _isObject=_interopRequireDefault(require("@fusioncharts/utils/src/type/is-object"));var _isString=_interopRequireDefault(require("@fusioncharts/utils/src/type/is-string"));var _stringHasContent=_interopRequireDefault(require("@fusioncharts/utils/src/type/string-has-content"));var _uniq=_interopRequireDefault(require("ramda/es/uniq"));var _sanitiseAggregationWith=_interopRequireDefault(require("./sanitise-aggregation-with.js"));var VALID_PLOT_TYPES=["column","line","step-line","smooth-line","area","step-area","smooth-area","candlestick","ohlc","column-range","area-range"],VALID_CLIP_LEVEL={millisecond:true,second:true,minute:true,hour:true,day:true,month:true,year:true},sanitiseAggregation=(0,_sanitiseAggregationWith.default)(_index.default),getValidClips=function getValidClips(clips){return clips.map((function(clip){if(!(0,_isString.default)(clip.to)){clip.to=clip.from}if(clip.hasOwnProperty("format")&&!(0,_isString.default)(clip.format)){delete clip.format}if((0,_isObject.default)(clip.repeat)){if((0,_isString.default)(clip.repeat.unit)&&VALID_CLIP_LEVEL[clip.repeat.unit.toLowerCase()]){clip.repeat.unit=clip.repeat.unit.toLowerCase();clip.repeat.multiplier=Number(clip.repeat.multiplier);if(!clip.repeat.multiplier){clip.repeat.multiplier=1}}else{delete clip.repeat}}else{delete clip.repeat}return clip})).filter((function(clip){return(0,_isString.default)(clip.from)&&(0,_isObject.default)(clip.repeat)&&(0,_isString.default)(clip.repeat.unit)}))},DEFAULT_PLOT_TYPE="line";var UNDEF,truthFn=function truthFn(){return true},isValidPlotType=function isValidPlotType(plotType){return VALID_PLOT_TYPES.includes(plotType)},plotExistsIn=function plotExistsIn(obj){return(0,_stringHasContent.default)(obj.plot)||(0,_arrayHasContent.default)(obj.plot)||(0,_isObject.default)(obj.plot)},clipExistsIn=function clipExistsIn(obj){return(0,_arrayHasContent.default)(obj.clip)},objectHasContent=function objectHasContent(param){return(0,_isObject.default)(param)&&(plotExistsIn(param)||clipExistsIn(param))},stringExpando=function stringExpando(str,stringValidator,mergingInfo){if(mergingInfo===void 0){mergingInfo={}}var outputArr=[];if((0,_stringHasContent.default)(str)&&stringValidator(str)){var mergedPlot=(0,_isObject.default)(mergingInfo.plot)?Object.assign({},mergingInfo.plot):{},plotType=mergedPlot.type||mergingInfo.plottype;mergedPlot.type=isValidPlotType(plotType)?plotType:DEFAULT_PLOT_TYPE;mergedPlot.value=str;mergedPlot.aggregation=sanitiseAggregation(mergedPlot.aggregation||mergingInfo.aggregation);outputArr.push(Object.assign({},mergingInfo,{plot:[mergedPlot]}))}return outputArr},sanitiseObj=function sanitiseObj(obj,validator){var type=isValidPlotType(obj.type)?obj.type:DEFAULT_PLOT_TYPE,isOHLC=type==="candlestick"||type==="ohlc",isRangedData=type==="column-range"||type==="area-range",sanitisedName=function sanitisedName(str){return validator(str)?str:UNDEF};var value,validatedObj={},open,close,high,low;if((0,_isObject.default)(obj.value)){value=sanitisedName(obj.value.value)}else{value=sanitisedName(obj.value)}if(isOHLC){if((0,_isObject.default)(obj.value)){open=sanitisedName(obj.value.open);close=sanitisedName(obj.value.close);high=sanitisedName(obj.value.high);low=sanitisedName(obj.value.low)}if(open&&high&&low&&close){validatedObj=Object.assign({},obj,{type:type,high:high,low:low,open:open,close:close,value:null})}else if(!open&&!high&&!low&&!close){validatedObj=Object.assign({},obj,{type:type,high:value,low:value,open:value,close:value,value:value})}else{validatedObj=Object.assign({},obj,{type:type,high:high,low:low,open:open,close:close,value:null})}}else if(isRangedData){if((0,_isObject.default)(obj.value)){high=sanitisedName(obj.value.high);low=sanitisedName(obj.value.low)}if(high&&low){validatedObj=Object.assign({},obj,{type:type,high:high,low:low,value:null})}else if(!high&&!low){validatedObj=Object.assign({},obj,{type:type,high:value,low:value,value:value})}}else{validatedObj=Object.assign({},obj,{type:type,value:value})}validatedObj.typeinnavigator=isValidPlotType(validatedObj.typeinnavigator)?validatedObj.typeinnavigator:UNDEF;if(isOHLC&&(value||open||close||high||low)||value){return validatedObj}else if(isRangedData&&high&&low){return validatedObj}},objectExpando=function objectExpando(obj,stringValidator){var outputArr=[],plot=obj.plot,isPlotObject=(0,_isObject.default)(plot),action=obj.hasOwnProperty("plot")&&!(isPlotObject&&!plot.hasOwnProperty("value"))&&"axis",isValidString=function isValidString(str){return(0,_stringHasContent.default)(str)&&stringValidator(str)};if(objectHasContent(obj)){var array=[],validClips=(0,_arrayHasContent.default)(obj.clip)?getValidClips(obj.clip):[];outputArr.push(Object.assign({},obj,obj.aggregation?validClips.length?{plot:array,aggregation:sanitiseAggregation(obj.aggregation),clip:validClips}:{plot:array,aggregation:sanitiseAggregation(obj.aggregation)}:(0,_isArray.default)(obj.clips)?{plot:array,clip:validClips}:{plot:array}));if(isPlotObject||(0,_stringHasContent.default)(plot)){plot=[plot]}if((0,_arrayHasContent.default)(plot)){var filteredInfo=plot.filter((function(ele){return!!ele}));filteredInfo.forEach((function(ele){var output;if((0,_isObject.default)(ele)){var type=ele.type||obj.plottype;output=sanitiseObj(Object.assign({},ele,{aggregation:sanitiseAggregation(ele.aggregation||obj.aggregation),type:type}),isValidString)}else if(isValidString(ele)){output=sanitiseObj({value:ele,type:obj.plottype,aggregation:sanitiseAggregation(obj.aggregation)},isValidString)}output&&array.push(output)}))}}return outputArr[0]&&outputArr[0].plot.length?{output:outputArr,action:(0,_isArray.default)(plot)&&plot.length>outputArr[0].plot.length?"plot":false}:{output:[],action:action}},arrayExpando=function arrayExpando(arr,stringValidator,mergingInfo){var output=[],info,actions=[];arr.forEach((function(ele){if((0,_isString.default)(ele)){output=output.concat(stringExpando(ele,stringValidator,mergingInfo))}else if((0,_isObject.default)(ele)){info=objectExpando(ele,stringValidator);output=output.concat(info.output);info.action&&actions.push(info.action)}}));return{output:output,actions:actions}},expander=function expander(config,stringValidator,mergingInfo){var output=[],actions=[];if((0,_isString.default)(config)){output=stringExpando(config,stringValidator)}else if((0,_isObject.default)(config)){var action;var _objectExpando=objectExpando(config,stringValidator);output=_objectExpando.output;action=_objectExpando.action;action&&actions.push(action)}else if((0,_isArray.default)(config)){var _arrayExpando=arrayExpando(config,stringValidator,mergingInfo);output=_arrayExpando.output;actions=_arrayExpando.actions}return{output:output,actions:actions}},expando=function expando(dataTableColumns,config,isY){if(dataTableColumns===void 0){dataTableColumns=[]}if(isY===void 0){isY=true}var output=[],actions=[],outputLen=0,isObjectConfig=(0,_isObject.default)(config),stringValidator=function stringValidator(str){return dataTableColumns.indexOf(str)>=0};if(config){var _expander=expander(config,stringValidator);output=_expander.output;actions=_expander.actions;outputLen=output.length;var containsAxisAction=actions.includes("axis");if(isObjectConfig){containsAxisAction&&(actions=["fullaxis"])}else if((0,_isArray.default)(config)&&outputLen<config.length){if(outputLen){!containsAxisAction&&actions.push("axis")}else{actions=["fullaxis"]}}}if(!output.length){var _expander2=expander(dataTableColumns,truthFn,isObjectConfig&&config);output=_expander2.output}isY&&output.forEach((function(obj){if(!(0,_isString.default)(obj.title)){var nameArr=[];for(var i=0;i<obj.plot.length;i++){if(obj.plot[i].value){nameArr.push(obj.plot[i].value)}}obj.title=nameArr.join(" - ")}}));return{expandedAxis:output,actions:(0,_uniq.default)(actions)}};var _default=exports.default=expando;