Added rounding for graphites from and to time range filters

for very short absolute ranges (Fixes #320)
This commit is contained in:
Torkel Ödegaard 2014-04-18 16:06:21 +02:00
parent b1bd04566e
commit 02af2dbe73
2 changed files with 22 additions and 3 deletions

View File

@ -1,3 +1,7 @@
# vNext
- Added rounding for graphites from and to time range filters
for very short absolute ranges (Issue #320)
# 1.5.3 (2014-04-17)
- Add support for async scripted dashboards (Issue #274)
- Text panel now accepts html (for links to other dashboards, etc) (Issue #236)

View File

@ -24,8 +24,8 @@ function (angular, _, $, config, kbn, moment) {
GraphiteDatasource.prototype.query = function(options) {
try {
var graphOptions = {
from: this.translateTime(options.range.from),
until: this.translateTime(options.range.to),
from: this.translateTime(options.range.from, 'round-down'),
until: this.translateTime(options.range.to, 'round-up'),
targets: options.targets,
format: options.format,
maxDataPoints: options.maxDataPoints,
@ -68,7 +68,7 @@ function (angular, _, $, config, kbn, moment) {
}
};
GraphiteDatasource.prototype.translateTime = function(date) {
GraphiteDatasource.prototype.translateTime = function(date, rounding) {
if (_.isString(date)) {
if (date === 'now') {
return 'now';
@ -85,6 +85,21 @@ function (angular, _, $, config, kbn, moment) {
date = moment.utc(date);
if (rounding === 'round-up') {
if (date.get('s')) {
date.add('m', 1);
}
}
else if (rounding === 'round-down') {
// graphite' s from filter is exclusive
// here we step back one minute in order
// to guarantee that we get all the data that
// exists for the specified range
if (date.get('s')) {
date.subtract('m', 1);
}
}
if (dashboard.current.timezone === 'browser') {
date = date.local();
}