mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Merge pull request #438 from spenceralger/zero-filled-ts
Zero filled ts
This commit is contained in:
commit
493fdbc1b6
@ -391,7 +391,7 @@ angular.module('kibana.histogram', [])
|
|||||||
// when rendering stacked bars, we need to ensure each point that has data is zero-filled
|
// when rendering stacked bars, we need to ensure each point that has data is zero-filled
|
||||||
// so that the stacking happens in the proper order
|
// so that the stacking happens in the proper order
|
||||||
var required_times = [];
|
var required_times = [];
|
||||||
if (scope.panel.bars && stack) {
|
if (scope.data.length > 1) {
|
||||||
required_times = _.uniq(Array.prototype.concat.apply([], _.map(scope.data, function (query) {
|
required_times = _.uniq(Array.prototype.concat.apply([], _.map(scope.data, function (query) {
|
||||||
return query.time_series.getOrderedTimes();
|
return query.time_series.getOrderedTimes();
|
||||||
})).sort(), true);
|
})).sort(), true);
|
||||||
@ -457,6 +457,10 @@ angular.module('kibana.histogram', [])
|
|||||||
return parseInt(val, 10);
|
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
|
* 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
|
* properly (like the line graph). So with this we will caluclate all of
|
||||||
@ -474,7 +478,7 @@ angular.module('kibana.histogram', [])
|
|||||||
* the series.
|
* the series.
|
||||||
*/
|
*/
|
||||||
this.ZeroFilled = function (opts) {
|
this.ZeroFilled = function (opts) {
|
||||||
this.opts = _.defaults(opts, {
|
opts = _.defaults(opts, {
|
||||||
interval: '10m',
|
interval: '10m',
|
||||||
start_date: null,
|
start_date: null,
|
||||||
end_date: null,
|
end_date: null,
|
||||||
@ -486,13 +490,9 @@ angular.module('kibana.histogram', [])
|
|||||||
|
|
||||||
// will keep all values here, keyed by their time
|
// will keep all values here, keyed by their time
|
||||||
this._data = {};
|
this._data = {};
|
||||||
|
this.start_time = opts.start_date && getDatesTime(opts.start_date);
|
||||||
if (opts.start_date) {
|
this.end_time = opts.end_date && getDatesTime(opts.end_date);
|
||||||
this.addValue(opts.start_date, null);
|
this.opts = opts;
|
||||||
}
|
|
||||||
if (opts.end_date) {
|
|
||||||
this.addValue(opts.end_date, null);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -502,7 +502,7 @@ angular.module('kibana.histogram', [])
|
|||||||
*/
|
*/
|
||||||
this.ZeroFilled.prototype.addValue = function (time, value) {
|
this.ZeroFilled.prototype.addValue = function (time, value) {
|
||||||
if (time instanceof Date) {
|
if (time instanceof Date) {
|
||||||
time = Math.floor(time.getTime() / 1000)*1000;
|
time = getDatesTime(time);
|
||||||
} else {
|
} else {
|
||||||
time = base10Int(time);
|
time = base10Int(time);
|
||||||
}
|
}
|
||||||
@ -536,7 +536,8 @@ angular.module('kibana.histogram', [])
|
|||||||
this.ZeroFilled.prototype.getFlotPairs = function (required_times) {
|
this.ZeroFilled.prototype.getFlotPairs = function (required_times) {
|
||||||
var times = this.getOrderedTimes(required_times),
|
var times = this.getOrderedTimes(required_times),
|
||||||
strategy,
|
strategy,
|
||||||
pairs;
|
pairs,
|
||||||
|
pairs_empty;
|
||||||
|
|
||||||
if(this.opts.fill_style === 'all') {
|
if(this.opts.fill_style === 'all') {
|
||||||
strategy = this._getAllFlotPairs;
|
strategy = this._getAllFlotPairs;
|
||||||
@ -544,12 +545,23 @@ angular.module('kibana.histogram', [])
|
|||||||
strategy = this._getMinFlotPairs;
|
strategy = this._getMinFlotPairs;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _.reduce(
|
pairs = _.reduce(
|
||||||
times, // what
|
times, // what
|
||||||
strategy, // how
|
strategy, // how
|
||||||
[], // where
|
[], // where
|
||||||
this // context
|
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.length === 0 || pairs[0][0] > this.start_time)) {
|
||||||
|
pairs.unshift([this.start_time, null]);
|
||||||
|
}
|
||||||
|
if (this.end_time && (pairs.length === 0 || pairs[pairs.length - 1][0] < this.end_time)) {
|
||||||
|
pairs.push([this.end_time, null]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return pairs;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user