diff --git a/src/js/charts/AxisChart.js b/src/js/charts/AxisChart.js index f4b2634..6174200 100644 --- a/src/js/charts/AxisChart.js +++ b/src/js/charts/AxisChart.js @@ -40,6 +40,7 @@ export default class AxisChart extends BaseChart { this.config.yAxisMode = options.axisOptions.yAxisMode || 'span'; this.config.xIsSeries = options.axisOptions.xIsSeries || 0; this.config.shortenYAxisNumbers = options.axisOptions.shortenYAxisNumbers || 0; + this.config.yAxisRange = options.axisOptions.yAxisRange || {}, this.config.formatTooltipX = options.tooltipOptions.formatTooltipX; this.config.formatTooltipY = options.tooltipOptions.formatTooltipY; @@ -86,7 +87,7 @@ export default class AxisChart extends BaseChart { } calcYAxisParameters(dataValues, withMinimum = 'false') { - const yPts = calcChartIntervals(dataValues, withMinimum); + const yPts = calcChartIntervals(dataValues, withMinimum, this.config.yAxisRange); const scaleMultiplier = this.height / getValueRange(yPts); const intervalHeight = getIntervalSize(yPts) * scaleMultiplier; const zeroLine = this.height - (getZeroIndex(yPts) * intervalHeight); diff --git a/src/js/utils/intervals.js b/src/js/utils/intervals.js index f109def..f580902 100644 --- a/src/js/utils/intervals.js +++ b/src/js/utils/intervals.js @@ -73,7 +73,7 @@ function getChartIntervals(maxValue, minValue = 0) { return intervals; } -export function calcChartIntervals(values, withMinimum = false) { +export function calcChartIntervals(values, withMinimum = false, range = {}) { //*** Where the magic happens *** // Calculates best-fit y intervals from given values @@ -82,6 +82,14 @@ export function calcChartIntervals(values, withMinimum = false) { let maxValue = Math.max(...values); let minValue = Math.min(...values); + if (range.max) { + maxValue = maxValue > range.max ? maxValue : range.max; + } + + if (range.min) { + minValue = minValue < range.min ? minValue : range.end; + } + // Exponent to be used for pretty print let exponent = 0, intervals = []; // eslint-disable-line no-unused-vars