UNPKG

@fusioncharts/fusiontime

Version:

FusionCharts JavaScript time-series charting framework

1 lines 8.71 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _mergeRight=_interopRequireDefault(require("ramda/es/mergeRight"));var _lib=require("@fusioncharts/core/src/lib");var _axis=_interopRequireDefault(require("../../../_internal/components/axis"));var _canvas=_interopRequireDefault(require("../../../_internal/components/canvas"));var _panelConfigurer=_interopRequireDefault(require("./_utils/panel-configurer"));var _enUS=_interopRequireDefault(require("@fusioncharts/utils/src/number-converter/locales/en-US"));var _isValidNumber=_interopRequireDefault(require("@fusioncharts/utils/src/type/is-valid-number"));var _numberConverter=require("@fusioncharts/utils/src/number-converter");var _formatSpecifier=_interopRequireDefault(require("@fusioncharts/utils/src/number-converter/format-specifier.js"));var BOTTOM="bottom",canvases=function canvases(key){return key.match(/^canvas/)},removeComponent=function removeComponent(component){return component.remove()},validateRound=function validateRound(round){if(typeof round==="string"){var parsedRound=parseInt(round,10);return Number.isNaN(parsedRound)?null:parsedRound}else if((0,_isValidNumber.default)(round)){return round}return null},getSpecifier=function getSpecifier(_ref){var value=_ref.value,type=_ref.type,subType=_ref.subType,_ref$defaultformat=_ref.defaultformat,defaultformat=_ref$defaultformat===void 0?true:_ref$defaultformat,round=_ref.round;var precision;if(round!=null){if(round>=0){precision=round}else{precision=Math.max(1,Math.floor(value).toString().length+round+1)}}if(defaultformat){var absValue=Math.abs(value);if(absValue!==0&&absValue<1e-4){switch(type){case"axis":if(round==null){return"$e"}else if(round<0){return"$."+precision+"~e"}return"$."+precision+"e";default:if(round==null){return"$.2e"}else if(round<0){return"$."+precision+"~e"}return"$."+precision+"e"}}else if(absValue>=1e-4&&absValue<1||absValue===0){switch(type){case"axis":if(round==null){return"$"}else if(round<0){return"$."+precision+"~"}return"$."+precision;default:if(round==null){return"$.2"}else if(round<0){return"$."+precision+"~"}return"$."+precision}}switch(type){case"axis":if(round==null){return"$~s"}else if(round<0){return"$."+precision+"~s"}return"$."+precision+"s";default:if(round==null){return"$.2~s"}else if(round<0){return"$."+precision+"~s"}return"$."+precision+"s"}}else{if(round==null)return"$.12~r";if(round>=0)return"$."+precision+"f";return"$."+precision+"~r"}},createFormatter=function createFormatter(formatConfig,_ref2){var subType=_ref2.type,converter=_ref2.converter;if(typeof formatConfig.formatter==="function"){return function(obj){return formatConfig.formatter(obj)+""}}var round=validateRound(formatConfig.round);return function(obj){var specifier=typeof formatConfig.formatter==="string"?formatConfig.formatter:getSpecifier(Object.assign({},formatConfig,{subType:subType,value:obj.value,type:obj.type,round:round})),hasSIPrefix=new _formatSpecifier.default(specifier).type==="s";return hasSIPrefix&&(round==null||round>=0)?converter.formatPrefix(specifier,obj.value).format(obj.value):converter.formatter(specifier).format(obj.value)}},visibleAxes=function visibleAxes(cfg){return!!cfg.visible},isLeftAligned=function isLeftAligned(_ref3){var align=_ref3.align;return align==="left"},isRightAligned=function isRightAligned(_ref4){var align=_ref4.align;return align==="right"},isTopAligned=function isTopAligned(_ref5){var align=_ref5.align;return align==="top"},isBottomAligned=function isBottomAligned(_ref6){var align=_ref6.align;return align==="bottom"},isValidYOrientation=function isValidYOrientation(orientation){return orientation==="left"||orientation==="right"},mergeBorderConfig=function mergeBorderConfig(panelCfg){var borderCfg={leftBorder:false,rightBorder:false,topBorder:false,bottomBorder:false},xConfigs=panelCfg.xConfigs,yConfigs=panelCfg.yConfigs;if(xConfigs.find(isLeftAligned)||yConfigs.find(isLeftAligned)){borderCfg.leftBorder=true}if(xConfigs.find(isRightAligned)||yConfigs.find(isRightAligned)){borderCfg.rightBorder=true}if(xConfigs.find(isTopAligned)||yConfigs.find(isTopAligned)){borderCfg.topBorder=true}if(xConfigs.find(isBottomAligned)||yConfigs.find(isBottomAligned)){borderCfg.bottomBorder=true}return(0,_mergeRight.default)(panelCfg,borderCfg)};var _default=exports.default=function _default(chart){var usedCanvasIds=[],unusedCanvasIds=[],canvasIds,baseTextStyle=chart.getFromEnv("baseTextStyle"),dataSource=chart.getFromEnv("dataSource"),DEFAULT_AXIS_X={orientation:"bottom",align:"bottom",tickpadding:2,visible:true,overlap:false,domainline:false,outputtimeformat:{},style:{"label-major":Object.assign({fill:"#818181"},baseTextStyle),"label-context":Object.assign({fill:"#818181"},baseTextStyle)}},DEFAULT_AXIS_Y={tickarguments:[4,"s"],ticksize:5,tickpadding:7,visible:true,overlap:false,domainline:false,style:{"label-major":Object.assign({"font-size":"11px"},baseTextStyle),"tick-mark-major":{stroke:"#efefef"}}};var hydrateX=(0,_mergeRight.default)(DEFAULT_AXIS_X),hydrateY=(0,_mergeRight.default)(DEFAULT_AXIS_Y),chartConfig=chart.config,canvasAxisMap=chartConfig.canvasAxisMap,focusAxesX=chartConfig.focusAxesX,focusAxesY=chartConfig.focusAxesY,chartAttrs=chart.getFromEnv("chart-attrib"),canvasStyle=chart.getFromEnv("getStyleDef")(chartAttrs.style&&chartAttrs.style.canvas),focusPanels=chartConfig.focusPanels.map((function(panel){return(0,_mergeRight.default)(panel,{x:panel.x.map((function(xCfg){var focusAxisX=focusAxesX[xCfg.index],formatObj=(0,_lib.pluck)(focusAxesX[xCfg.index].format,{});focusAxisX.timeFormatterFn=typeof formatObj.formatter==="function"?function(options){return formatObj.formatter.call(focusAxisX.scale,options)}:function(formatterObj){return focusAxisX.scale.getFormattedTime&&focusAxisX.scale.getFormattedTime(formatterObj,dataSource.tooltip&&dataSource.tooltip.outputtimeformat)};return(0,_mergeRight.default)(hydrateX(xCfg),(0,_panelConfigurer.default)(focusAxesX,xCfg.index))})),y:panel.y.map((function(yCfg){var focusAxisY=focusAxesY[yCfg.index],formatObj=Object.assign({defaultformat:true},(0,_lib.pluck)(focusAxesY[yCfg.index].format,{})),formatLocale;focusAxisY.formatLabelPrefix=formatObj.prefix||_lib.BLANKSTRING;focusAxisY.formatLabelSuffix=formatObj.suffix||_lib.BLANKSTRING;formatLocale=Object.assign({},_enUS.default,{prefix:focusAxisY.formatLabelPrefix,suffix:focusAxisY.formatLabelSuffix});focusAxisY.scale.setLocale(formatLocale);focusAxisY.formatterFn=createFormatter(formatObj,{converter:new _numberConverter.NumberConverter(formatLocale),type:focusAxisY.type});return(0,_mergeRight.default)(hydrateY(yCfg),(0,_panelConfigurer.default)(focusAxesY,yCfg.index))}))})})),createPanelComponents=function createPanelComponents(_ref7,i){var axisConfigsX=_ref7.x,axisConfigsY=_ref7.y,plotConfigs=_ref7.plots;var canvasId="canvas_"+i;var axisCount={left:0,right:0};if(!canvasAxisMap[canvasId]){canvasAxisMap[canvasId]={x:[],y:[]}}axisConfigsX.filter(visibleAxes).forEach((function(axisConfig,ai){var axisId="axesX_"+i+"_"+ai;axisConfig.align=axisConfig.align.toLowerCase();if(!["bottom","top"].includes(axisConfig.align)){axisConfig.align=BOTTOM}axisConfig.tickvisibilitylimit={start:_lib.UNDEF,end:_lib.UNDEF};(0,_lib.componentFactory)(chart,_axis.default,axisId,1,[axisConfig]);if(!canvasAxisMap[canvasId].x.includes(axisId)){canvasAxisMap[canvasId].x.push(axisId)}}));axisConfigsY.filter(visibleAxes).forEach((function(axisConfig,ai){var axisId="axesY_"+i+"_"+ai;if(isValidYOrientation(axisConfig.orientation)){axisConfig.align=axisConfig.orientation}axisConfig.orientation=axisConfig.align;axisConfig.domainline=axisCount[axisConfig.align]>0;if(axisConfig.type==="log")axisConfig.tickarguments=[4,"~s"];axisCount[axisConfig.align]++;axisConfig.tickvisibilitylimit={start:_lib.UNDEF,end:_lib.UNDEF};(0,_lib.componentFactory)(chart,_axis.default,axisId,1,[axisConfig]);if(!canvasAxisMap[canvasId].y.includes(axisId)){canvasAxisMap[canvasId].y.push(axisId)}}));usedCanvasIds.push(canvasId);(0,_lib.componentFactory)(chart,_canvas.default,canvasId,1,[mergeBorderConfig({plotConfigs:plotConfigs,tableMap:chartConfig.focusTableMap,xConfigs:axisConfigsX,yConfigs:axisConfigsY,enableGridLines:true,gridBandSupported:axisConfigsY[0].type!=="log",enableMouseTracking:1,enableMarkers:1,enableInteraction:1,canvasStyle:canvasStyle})])};focusPanels.forEach(createPanelComponents);canvasIds=Object.keys(chart.getChildren()).filter(canvases);unusedCanvasIds=canvasIds.filter((function(oldId){return!usedCanvasIds.includes(oldId)}));unusedCanvasIds.forEach((function(unusedId){chart.getChildren(unusedId).forEach(removeComponent)}));chartConfig.focusPanels=focusPanels};