Commit 37d212c7 by Rashid Khan

Merge remote-tracking branch 'spencer/interval-issues' into intervals

parents 186dba8d 3048538a
...@@ -209,7 +209,7 @@ function($, _) { ...@@ -209,7 +209,7 @@ function($, _) {
kbn.interval_regex = /(\d+(?:\.\d+)?)([Mwdhmsy])/; kbn.interval_regex = /(\d+(?:\.\d+)?)([Mwdhmsy])/;
// histogram & trends // histogram & trends
var intervals_in_seconds = { kbn.intervals_in_seconds = {
y: 31536000, y: 31536000,
M: 2592000, M: 2592000,
w: 604800, w: 604800,
...@@ -219,17 +219,27 @@ function($, _) { ...@@ -219,17 +219,27 @@ function($, _) {
s: 1 s: 1
}; };
kbn.interval_to_ms = function(string) { kbn.describe_interval = function (string) {
var matches = string.match(kbn.interval_regex); 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"'); throw new Error('Invalid interval string, expexcting a number followed by one of "Mwdhmsy"');
} else { } 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) { 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 // This should go away, moment.js can do this
......
...@@ -10,11 +10,10 @@ function (kbn) { ...@@ -10,11 +10,10 @@ function (kbn) {
*/ */
function Interval(interval_string) { function Interval(interval_string) {
this.string = interval_string; this.string = interval_string;
this.ms = kbn.interval_to_ms(interval_string);
var matches = interval_string.match(kbn.interval_regex); var info = kbn.describe_interval(interval_string);
this.count = parseInt(matches[1], 10); this.type = info.type;
this.type = matches[2]; this.ms = info.sec * 1000 * info.count;
// does the length of the interval change based on the current time? // does the length of the interval change based on the current time?
if (this.type === 'y' || this.type === 'M') { if (this.type === 'y' || this.type === 'M') {
...@@ -31,10 +30,10 @@ function (kbn) { ...@@ -31,10 +30,10 @@ function (kbn) {
return this.string; return this.string;
}, },
after: function(current_ms) { after: function(current_ms) {
return this.get(current_ms, this.count); return this.get(current_ms, 1);
}, },
before: function (current_ms) { before: function (current_ms) {
return this.get(current_ms, -this.count); return this.get(current_ms, -1);
}, },
get_complex: function (current, delta) { get_complex: function (current, delta) {
this.date.setTime(current); this.date.setTime(current);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment