From a0b1552d4b98c42fa873138749240d8b52a9094b Mon Sep 17 00:00:00 2001 From: Mike Malamud Date: Sun, 11 Nov 2012 12:57:53 -0500 Subject: [PATCH] Fix for issue #860, Recalculate tickSize on updates --- jquery.flot.js | 65 ++++++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/jquery.flot.js b/jquery.flot.js index 5413e48..5394926 100644 --- a/jquery.flot.js +++ b/jquery.flot.js @@ -1244,40 +1244,47 @@ if (!axis.tickGenerator) { - var maxDec = opts.tickDecimals; - var dec = -Math.floor(Math.log(axis.delta) / Math.LN10); - if (maxDec != null && dec > maxDec) - dec = maxDec; - - var magn = Math.pow(10, -dec); - var norm = axis.delta / magn; // norm is between 1.0 and 10.0 - var size; - - if (norm < 1.5) - size = 1; - else if (norm < 3) { - size = 2; - // special case for 2.5, requires an extra decimal - if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { - size = 2.5; - ++dec; + axis.tickGenerator = function (axis) { + var maxDec = opts.tickDecimals, + dec = -Math.floor(Math.log(axis.delta) / Math.LN10); + + if (maxDec != null && dec > maxDec) + dec = maxDec; + + var magn = Math.pow(10, -dec), + norm = axis.delta / magn, // norm is between 1.0 and 10.0 + size, + + ticks = [], + start, + i = 0, + v = Number.NaN, + prev; + + if (norm < 1.5) + size = 1; + else if (norm < 3) { + size = 2; + // special case for 2.5, requires an extra decimal + if (norm > 2.25 && (maxDec == null || dec + 1 <= maxDec)) { + size = 2.5; + ++dec; + } } - } - else if (norm < 7.5) - size = 5; - else size = 10; + else if (norm < 7.5) + size = 5; + else size = 10; - size *= magn; + size *= magn; - if (opts.minTickSize != null && size < opts.minTickSize) - size = opts.minTickSize; + if (opts.minTickSize != null && size < opts.minTickSize) + size = opts.minTickSize; - axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); - axis.tickSize = opts.tickSize || size; + axis.tickDecimals = Math.max(0, maxDec != null ? maxDec : dec); + axis.tickSize = opts.tickSize || size; + + start = floorInBase(axis.min, axis.tickSize) - axis.tickGenerator = function (axis) { - var ticks = [], start = floorInBase(axis.min, axis.tickSize), - i = 0, v = Number.NaN, prev; do { prev = v; v = start + i * axis.tickSize;