UNPKG

@fusioncharts/fusiontime

Version:

FusionCharts JavaScript time-series charting framework

1 lines 3.77 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.getLogMinMax=exports.getLinearMinMax=void 0;var _lib=require("@fusioncharts/core/src/lib");var _isValidNumber=_interopRequireDefault(require("@fusioncharts/utils/src/type/is-valid-number"));var DOMAIN_PADDING_FRACTION=.2,getSmartLinearMin=function getSmartLinearMin(min,isBaseRequired,minLim,padFraction){var reducedMin=min-Math.abs(min*padFraction);reducedMin=reducedMin<minLim?minLim:reducedMin;return reducedMin>0&&isBaseRequired?0:reducedMin},getSmartLogMin=function getSmartLogMin(min,isBaseRequired){var reducedMin=min*.9;return isBaseRequired?Math.min(reducedMin,1):reducedMin},toNumOrUndef=function toNumOrUndef(v){return Number.isFinite(v)?v:_lib.UNDEF},getLogMinMax=exports.getLogMinMax=function getLogMinMax(dataMin,dataMax,userMin,userMax,baseArg,isBaseRequired){var base=baseArg;if(!(0,_isValidNumber.default)(base)||base===0)base=10;var logMin=dataMin>0&&isFinite(dataMin)?getSmartLogMin(dataMin,isBaseRequired):1,enforcedMin=(0,_isValidNumber.default)(userMin)&&userMin>0&&userMin<dataMin?userMin:logMin,logMax=dataMax>0&&isFinite(dataMax)?dataMax:logMin+ +base,enforcedMax=(0,_isValidNumber.default)(userMax)&&userMax>enforcedMin?userMax:logMax*1.2;return[enforcedMin,enforcedMax]},getLinearMinMax=exports.getLinearMinMax=function getLinearMinMax(dataMinArg,dataMaxArg,userMinArg,userMaxArg,isBaseRequired,_temp,strictPadding){var _ref=_temp===void 0?{}:_temp,maxPad=_ref.maxPad,minPad=_ref.minPad;if(strictPadding===void 0){strictPadding=false}var hasExplicitMaxPad=Number.isFinite(maxPad),hasExplicitMinPad=Number.isFinite(minPad),upperPad=hasExplicitMaxPad?maxPad:DOMAIN_PADDING_FRACTION,lowerPad=hasExplicitMinPad?minPad:DOMAIN_PADDING_FRACTION;var dataMin=toNumOrUndef(dataMinArg),dataMax=toNumOrUndef(dataMaxArg),userMin=toNumOrUndef(userMinArg),userMax=toNumOrUndef(userMaxArg),linearMax,linearMin=0,minLim,maxLim,isNegative;var hasUserMin=userMin!==_lib.UNDEF&&Number.isFinite(userMin),hasUserMax=userMax!==_lib.UNDEF&&Number.isFinite(userMax),hasDataMin=dataMin!==_lib.UNDEF&&Number.isFinite(dataMin),hasDataMax=dataMax!==_lib.UNDEF&&Number.isFinite(dataMax);if(hasDataMin&&hasDataMax){if(dataMin===dataMax){minLim=dataMin-Math.abs(dataMin*lowerPad);maxLim=dataMax+Math.abs(dataMax*upperPad)}else{var span=Math.abs(dataMax-dataMin);minLim=dataMin-span*lowerPad;maxLim=dataMax+span*upperPad}}else if(hasDataMax){minLim=dataMax-Math.abs(dataMax*lowerPad);maxLim=dataMax+Math.abs(dataMax*upperPad)}else if(hasDataMin){minLim=dataMin-Math.abs(dataMin*lowerPad);maxLim=dataMin+Math.abs(dataMin*upperPad)}else{minLim=0;maxLim=1}if(strictPadding){if(hasUserMin){linearMin=userMin}else if(hasDataMin&&hasExplicitMinPad){var padded=dataMin-Math.abs(dataMin)*lowerPad;linearMin=isBaseRequired&&padded>0?0:padded}else if(hasDataMin){linearMin=isBaseRequired&&dataMin>0?0:dataMin}else{linearMin=0}}else{if(hasUserMin){linearMin=userMin}else if(hasDataMin){linearMin=getSmartLinearMin(dataMin,isBaseRequired,minLim,lowerPad)}}isNegative=linearMin<0&&(hasUserMax&&userMax<0||hasDataMax&&dataMax<0);if(strictPadding){if(hasUserMax){linearMax=isNegative&&isBaseRequired?0:userMax}else if(hasDataMax){if(isNegative&&isBaseRequired){linearMax=0}else{var padFrac=hasExplicitMaxPad?maxPad:upperPad,_padded=dataMax+Math.abs(dataMax)*padFrac,clamped=hasExplicitMaxPad?_padded:Math.min(maxLim,_padded);linearMax=Number.isFinite(clamped)?clamped:dataMax}}else{linearMax=linearMin+1}}else{if(userMax>dataMax){linearMax=userMax}else if(dataMax!==_lib.UNDEF){if(isNegative&&isBaseRequired){linearMax=0}else{linearMax=dataMax+Math.abs(dataMax*.2);linearMax=maxLim<linearMax?maxLim:linearMax}}else{linearMax=linearMin+1}}return[linearMin,linearMax]};