Sfoglia il codice sorgente

moved the adition of the start and end time of the series after the reduce function checks each data point from elastic search. This whould resolve #422

Spencer Alger 12 anni fa
parent
commit
2846297dd9
1 ha cambiato i file con 21 aggiunte e 10 eliminazioni
  1. 21 10
      panels/histogram/module.js

+ 21 - 10
panels/histogram/module.js

@@ -457,6 +457,10 @@ angular.module('kibana.histogram', [])
     return parseInt(val, 10);
   }
 
+  function getDatesTime(date) {
+    return Math.floor(date.getTime() / 1000)*1000
+  }
+
   /**
    * Certain graphs require 0 entries to be specified for them to render
    * properly (like the line graph). So with this we will caluclate all of
@@ -474,7 +478,7 @@ angular.module('kibana.histogram', [])
    *                                the series.
    */
   this.ZeroFilled = function (opts) {
-    this.opts = _.defaults(opts, {
+    opts = _.defaults(opts, {
       interval: '10m',
       start_date: null,
       end_date: null,
@@ -486,13 +490,9 @@ angular.module('kibana.histogram', [])
 
     // will keep all values here, keyed by their time
     this._data = {};
-
-    if (opts.start_date) {
-      this.addValue(opts.start_date, null);
-    }
-    if (opts.end_date) {
-      this.addValue(opts.end_date, null);
-    }
+    this.start_time = opts.start_date && getDatesTime(opts.start_date);
+    this.end_time = opts.end_date && getDatesTime(opts.end_date);
+    this.opts = opts;
   };
 
   /**
@@ -502,7 +502,7 @@ angular.module('kibana.histogram', [])
    */
   this.ZeroFilled.prototype.addValue = function (time, value) {
     if (time instanceof Date) {
-      time = Math.floor(time.getTime() / 1000)*1000;
+      time = getDatesTime(time);
     } else {
       time = base10Int(time);
     }
@@ -544,12 +544,23 @@ angular.module('kibana.histogram', [])
       strategy = this._getMinFlotPairs;
     }
 
-    return _.reduce(
+    pairs = _.reduce(
       times,    // what
       strategy, // how
       [],       // where
       this      // context
     );
+
+    // if the start and end of the pairs are inside either the start or end time,
+    // add those times to the series with null values so the graph will stretch to contain them.
+    if (this.start_time && pairs[0][0] > this.start_time) {
+      pairs.unshift([this.start_time, null]);
+    }
+    if (this.end_time && pairs[pairs.length -1][0] < this.end_time) {
+      pairs.push([this.end_time, null]);
+    }
+
+    return pairs;
   };
 
   /**