Преглед изворни кода

fixed an issue with the interval walker, which was causing bad zero-filling

Spencer Alger пре 12 година
родитељ
комит
3048538ab1
2 измењених фајлова са 20 додато и 11 уклоњено
  1. 15 5
      src/app/components/kbn.js
  2. 5 6
      src/app/panels/histogram/interval.js

+ 15 - 5
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

+ 5 - 6
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);