X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph.js;h=0ff8bf1d9922ac026b071924284e602119ff2d6d;hb=d9369404ec8f1abf0a60f357bb1683058616f6de;hp=a2048d360a2d144aca32632fb29f8a5a7df2c36d;hpb=85b99f0b7b3020c58fc40e1a0df7e0e9782d50bf;p=dygraphs.git diff --git a/dygraph.js b/dygraph.js index a2048d3..0ff8bf1 100644 --- a/dygraph.js +++ b/dygraph.js @@ -91,6 +91,7 @@ Dygraph.DEFAULT_ATTRS = { }, labelsSeparateLines: false, labelsKMB: false, + labelsKMG2: false, strokeWidth: 1.0, @@ -1049,17 +1050,30 @@ Dygraph.numericTicks = function(minV, maxV, self) { // Construct labels for the ticks var ticks = []; + var k; + var k_labels = []; + if (self.attr_("labelsKMB")) { + k = 1000; + k_labels = [ "K", "M", "B", "T" ]; + } + if (self.attr_("labelsKMG2")) { + if (k) self.warn("Setting both labelsKMB and labelsKMG2. Pick one!"); + k = 1024; + k_labels = [ "k", "M", "G", "T" ]; + } + for (var i = 0; i < nTicks; i++) { var tickV = low_val + i * scale; + var absTickV = Math.abs(tickV); var label = self.round_(tickV, 2); - if (self.attr_("labelsKMB")) { - var k = 1000; - if (tickV >= k*k*k) { - label = self.round_(tickV/(k*k*k), 1) + "B"; - } else if (tickV >= k*k) { - label = self.round_(tickV/(k*k), 1) + "M"; - } else if (tickV >= k) { - label = self.round_(tickV/k, 1) + "K"; + if (k_labels.length) { + // Round up to an appropriate unit. + var n = k*k*k*k; + for (var j = 3; j >= 0; j--, n /= k) { + if (absTickV >= n) { + label = self.round_(tickV / n, 1) + k_labels[j]; + break; + } } } ticks.push( {label: label, v: tickV} );