From 8e5672aee6a710433a68bfeb2f7913a5a1d236e8 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Mon, 26 Jun 2017 18:13:32 +0300 Subject: [PATCH] heatmap: fix Y axis value rounding with linear scale --- public/app/plugins/panel/heatmap/rendering.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/public/app/plugins/panel/heatmap/rendering.ts b/public/app/plugins/panel/heatmap/rendering.ts index 085d9bd2673..153375dfa41 100644 --- a/public/app/plugins/panel/heatmap/rendering.ts +++ b/public/app/plugins/panel/heatmap/rendering.ts @@ -131,7 +131,9 @@ export default function link(scope, elem, attrs, ctrl) { tick_interval = tickStep(y_min, y_max, ticks); ticks = Math.ceil((y_max - y_min) / tick_interval); + let decimalsAuto = getPrecision(tick_interval); let decimals = panel.yAxis.decimals === null ? getPrecision(tick_interval) : panel.yAxis.decimals; + let scaledDecimals = getScaledDecimals(decimals, tick_interval); // Set default Y min and max if no data if (_.isEmpty(data.buckets)) { @@ -153,7 +155,7 @@ export default function link(scope, elem, attrs, ctrl) { let yAxis = d3.axisLeft(yScale) .ticks(ticks) - .tickFormat(tickValueFormatter(decimals)) + .tickFormat(tickValueFormatter(decimals, scaledDecimals)) .tickSizeInner(0 - width) .tickSizeOuter(0) .tickPadding(Y_AXIS_TICK_PADDING); @@ -293,10 +295,14 @@ export default function link(scope, elem, attrs, ctrl) { return tickValues; } - function tickValueFormatter(decimals) { + function getScaledDecimals(decimals, tick_size) { + return decimals - Math.floor(Math.log(tick_size) / Math.LN10); + } + + function tickValueFormatter(decimals, scaledDecimals = null) { let format = panel.yAxis.format; return function(value) { - return kbn.valueFormats[format](value, decimals); + return kbn.valueFormats[format](value, decimals, scaledDecimals); }; }