From 3048538ab17e3e40a0d3243d86c99cb51a705ef7 Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Wed, 25 Sep 2013 14:19:19 -0700 Subject: [PATCH] fixed an issue with the interval walker, which was causing bad zero-filling --- src/app/components/kbn.js | 20 +++++++++++++++----- src/app/panels/histogram/interval.js | 11 +++++------ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/app/components/kbn.js b/src/app/components/kbn.js index 63ebac27116..379b6fecb77 100755 --- a/src/app/components/kbn.js +++ b/src/app/components/kbn.js @@ -209,7 +209,7 @@ function($, _) { kbn.interval_regex = /(\d+(?:\.\d+)?)([Mwdhmsy])/; // histogram & trends - var intervals_in_seconds = { + kbn.intervals_in_seconds = { y: 31536000, M: 2592000, w: 604800, @@ -219,17 +219,27 @@ function($, _) { s: 1 }; - kbn.interval_to_ms = function(string) { + kbn.describe_interval = function (string) { var matches = string.match(kbn.interval_regex); - if (!matches || !_.has(intervals_in_seconds, matches[2])) { + if (!matches || !_.has(kbn.intervals_in_seconds, matches[2])) { throw new Error('Invalid interval string, expexcting a number followed by one of "Mwdhmsy"'); } else { - return intervals_in_seconds[matches[2]] * matches[1] * 1000; + return { + sec: kbn.intervals_in_seconds[matches[2]], + type: matches[2], + count: parseInt(matches[1], 10) + }; } }; + kbn.interval_to_ms = function(string) { + var info = kbn.describe_interval(string); + return info.sec * 1000 * info.count; + }; + kbn.interval_to_seconds = function (string) { - return kbn.interval_to_ms(string)/1000; + var info = kbn.describe_interval(string); + return info.sec * info.count; }; // This should go away, moment.js can do this diff --git a/src/app/panels/histogram/interval.js b/src/app/panels/histogram/interval.js index 7ddcc52825b..673371fcf4c 100644 --- a/src/app/panels/histogram/interval.js +++ b/src/app/panels/histogram/interval.js @@ -10,11 +10,10 @@ function (kbn) { */ function Interval(interval_string) { this.string = interval_string; - this.ms = kbn.interval_to_ms(interval_string); - var matches = interval_string.match(kbn.interval_regex); - this.count = parseInt(matches[1], 10); - this.type = matches[2]; + var info = kbn.describe_interval(interval_string); + this.type = info.type; + this.ms = info.sec * 1000 * info.count; // does the length of the interval change based on the current time? if (this.type === 'y' || this.type === 'M') { @@ -31,10 +30,10 @@ function (kbn) { return this.string; }, after: function(current_ms) { - return this.get(current_ms, this.count); + return this.get(current_ms, 1); }, before: function (current_ms) { - return this.get(current_ms, -this.count); + return this.get(current_ms, -1); }, get_complex: function (current, delta) { this.date.setTime(current);