Skip to content

Commit

Permalink
fixed an issue with the interval walker, which was causing bad zero-f…
Browse files Browse the repository at this point in the history
…illing
  • Loading branch information
Spencer Alger committed Sep 25, 2013
1 parent 3cd1177 commit 3048538
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 11 deletions.
20 changes: 15 additions & 5 deletions src/app/components/kbn.js
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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
Expand Down
11 changes: 5 additions & 6 deletions src/app/panels/histogram/interval.js
Original file line number Diff line number Diff line change
Expand Up @@ -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') {
Expand All @@ -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);
Expand Down

0 comments on commit 3048538

Please sign in to comment.