|
|
@@ -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;
|
|
|
};
|
|
|
|
|
|
/**
|