mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Fix rounding of intervals (#9197)
* Prometheus: Fix actual step computation logic when a min_step is specified and the range is longer than min_step * 11000. * Fix kbn.round_interval for exact intervals. * Remove redundant 1d return, fix a couple of comments. * Be more cautious with values close to 1d not rounding up to 1d. They may, because of the way the calculation uses 2 potentially different current time values.
This commit is contained in:
parent
b1506a2b09
commit
1076b75a21
@ -17,90 +17,87 @@ function($, _) {
|
||||
kbn.round_interval = function(interval) {
|
||||
switch (true) {
|
||||
// 0.015s
|
||||
case (interval <= 15):
|
||||
case (interval < 15):
|
||||
return 10; // 0.01s
|
||||
// 0.035s
|
||||
case (interval <= 35):
|
||||
case (interval < 35):
|
||||
return 20; // 0.02s
|
||||
// 0.075s
|
||||
case (interval <= 75):
|
||||
case (interval < 75):
|
||||
return 50; // 0.05s
|
||||
// 0.15s
|
||||
case (interval <= 150):
|
||||
case (interval < 150):
|
||||
return 100; // 0.1s
|
||||
// 0.35s
|
||||
case (interval <= 350):
|
||||
case (interval < 350):
|
||||
return 200; // 0.2s
|
||||
// 0.75s
|
||||
case (interval <= 750):
|
||||
case (interval < 750):
|
||||
return 500; // 0.5s
|
||||
// 1.5s
|
||||
case (interval <= 1500):
|
||||
case (interval < 1500):
|
||||
return 1000; // 1s
|
||||
// 3.5s
|
||||
case (interval <= 3500):
|
||||
case (interval < 3500):
|
||||
return 2000; // 2s
|
||||
// 7.5s
|
||||
case (interval <= 7500):
|
||||
case (interval < 7500):
|
||||
return 5000; // 5s
|
||||
// 12.5s
|
||||
case (interval <= 12500):
|
||||
case (interval < 12500):
|
||||
return 10000; // 10s
|
||||
// 17.5s
|
||||
case (interval <= 17500):
|
||||
case (interval < 17500):
|
||||
return 15000; // 15s
|
||||
// 25s
|
||||
case (interval <= 25000):
|
||||
case (interval < 25000):
|
||||
return 20000; // 20s
|
||||
// 45s
|
||||
case (interval <= 45000):
|
||||
case (interval < 45000):
|
||||
return 30000; // 30s
|
||||
// 1.5m
|
||||
case (interval <= 90000):
|
||||
case (interval < 90000):
|
||||
return 60000; // 1m
|
||||
// 3.5m
|
||||
case (interval <= 210000):
|
||||
case (interval < 210000):
|
||||
return 120000; // 2m
|
||||
// 7.5m
|
||||
case (interval <= 450000):
|
||||
case (interval < 450000):
|
||||
return 300000; // 5m
|
||||
// 12.5m
|
||||
case (interval <= 750000):
|
||||
case (interval < 750000):
|
||||
return 600000; // 10m
|
||||
// 12.5m
|
||||
case (interval <= 1050000):
|
||||
case (interval < 1050000):
|
||||
return 900000; // 15m
|
||||
// 25m
|
||||
case (interval <= 1500000):
|
||||
case (interval < 1500000):
|
||||
return 1200000; // 20m
|
||||
// 45m
|
||||
case (interval <= 2700000):
|
||||
case (interval < 2700000):
|
||||
return 1800000; // 30m
|
||||
// 1.5h
|
||||
case (interval <= 5400000):
|
||||
case (interval < 5400000):
|
||||
return 3600000; // 1h
|
||||
// 2.5h
|
||||
case (interval <= 9000000):
|
||||
case (interval < 9000000):
|
||||
return 7200000; // 2h
|
||||
// 4.5h
|
||||
case (interval <= 16200000):
|
||||
case (interval < 16200000):
|
||||
return 10800000; // 3h
|
||||
// 9h
|
||||
case (interval <= 32400000):
|
||||
case (interval < 32400000):
|
||||
return 21600000; // 6h
|
||||
// 24h
|
||||
case (interval <= 86400000):
|
||||
// 1d
|
||||
case (interval < 86400000):
|
||||
return 43200000; // 12h
|
||||
// 48h
|
||||
case (interval <= 172800000):
|
||||
return 86400000; // 24h
|
||||
// 1w
|
||||
case (interval <= 604800000):
|
||||
return 86400000; // 24h
|
||||
case (interval < 604800000):
|
||||
return 86400000; // 1d
|
||||
// 3w
|
||||
case (interval <= 1814400000):
|
||||
case (interval < 1814400000):
|
||||
return 604800000; // 1w
|
||||
// 2y
|
||||
// 6w
|
||||
case (interval < 3628800000):
|
||||
return 2592000000; // 30d
|
||||
default:
|
||||
@ -134,7 +131,7 @@ function($, _) {
|
||||
return nummilliseconds + 'ms';
|
||||
}
|
||||
|
||||
return 'less then a millisecond'; //'just now' //or other string you like;
|
||||
return 'less than a millisecond'; //'just now' //or other string you like;
|
||||
};
|
||||
|
||||
kbn.to_percent = function(number,outof) {
|
||||
|
@ -167,6 +167,20 @@ define([
|
||||
var res = kbn.calculateInterval(range, 900, '>15ms');
|
||||
expect(res.interval).to.be('15ms');
|
||||
});
|
||||
|
||||
it('1d 1 resolution', function() {
|
||||
var range = { from: dateMath.parse('now-1d'), to: dateMath.parse('now') };
|
||||
var res = kbn.calculateInterval(range, 1, null);
|
||||
expect(res.interval).to.be('1d');
|
||||
expect(res.intervalMs).to.be(86400000);
|
||||
});
|
||||
|
||||
it('86399s 1 resolution', function() {
|
||||
var range = { from: dateMath.parse('now-86390s'), to: dateMath.parse('now') };
|
||||
var res = kbn.calculateInterval(range, 1, null);
|
||||
expect(res.interval).to.be('12h');
|
||||
expect(res.intervalMs).to.be(43200000);
|
||||
});
|
||||
});
|
||||
|
||||
describe('hex', function() {
|
||||
|
Loading…
Reference in New Issue
Block a user