|
|
@@ -28,7 +28,7 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
|
|
|
var ctrl = scope.ctrl;
|
|
|
var dashboard = ctrl.dashboard;
|
|
|
var panel = ctrl.panel;
|
|
|
- var data, annotations;
|
|
|
+ var data, annotations, histogramData;
|
|
|
var sortedSeries;
|
|
|
var legendSideLastValue = null;
|
|
|
var rootScope = scope.$root;
|
|
|
@@ -226,22 +226,37 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- for (var i = 0; i < data.length; i++) {
|
|
|
- var series = data[i];
|
|
|
- series.data = series.getFlotPairs(series.nullPointMode || panel.nullPointMode);
|
|
|
+ if (panel.xaxis.mode === 'histogram') {
|
|
|
+ histogramData = formatToHistogram(data, _.last);
|
|
|
+
|
|
|
+ if (histogramData.length && histogramData[0].ticks.length) {
|
|
|
+ // options.series.bars.barWidth = histogramData[0].ticks.length / 1.5;
|
|
|
+ options.series.bars.barWidth = 0.7;
|
|
|
+ // options.series.bars.align = 'center';
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (var i = 0; i < data.length; i++) {
|
|
|
+ var series = data[i];
|
|
|
+ series.data = series.getFlotPairs(series.nullPointMode || panel.nullPointMode);
|
|
|
+
|
|
|
+ // if hidden remove points and disable stack
|
|
|
+ if (ctrl.hiddenSeries[series.alias]) {
|
|
|
+ series.data = [];
|
|
|
+ series.stack = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // if hidden remove points and disable stack
|
|
|
- if (ctrl.hiddenSeries[series.alias]) {
|
|
|
- series.data = [];
|
|
|
- series.stack = false;
|
|
|
+ if (data.length && data[0].stats.timeStep) {
|
|
|
+ options.series.bars.barWidth = data[0].stats.timeStep / 1.5;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (data.length && data[0].stats.timeStep) {
|
|
|
- options.series.bars.barWidth = data[0].stats.timeStep / 1.5;
|
|
|
+ if (panel.xaxis.mode === 'histogram') {
|
|
|
+ addXAxis(options);
|
|
|
+ } else {
|
|
|
+ addTimeAxis(options);
|
|
|
}
|
|
|
|
|
|
- addTimeAxis(options);
|
|
|
addGridThresholds(options, panel);
|
|
|
addAnnotations(options);
|
|
|
configureAxisOptions(data, options);
|
|
|
@@ -275,6 +290,24 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ function formatToHistogram(data, getValueCallback) {
|
|
|
+ var histogram = [data[0]];
|
|
|
+
|
|
|
+ histogram[0].data = _.map(data, function(series, index) {
|
|
|
+ var values = _.remove(_.map(series.datapoints, function(point) {
|
|
|
+ return point[0];
|
|
|
+ }), null);
|
|
|
+ var calculatedPoint = getValueCallback(values);
|
|
|
+ return [index, calculatedPoint];
|
|
|
+ });
|
|
|
+
|
|
|
+ histogram[0].ticks = _.map(data, function(series, index) {
|
|
|
+ return [index, series.alias];
|
|
|
+ });
|
|
|
+
|
|
|
+ return histogram;
|
|
|
+ }
|
|
|
+
|
|
|
function translateFillOption(fill) {
|
|
|
return fill === 0 ? 0.001 : fill/10;
|
|
|
}
|
|
|
@@ -305,6 +338,20 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+ function addXAxis(options) {
|
|
|
+ var ticks = histogramData[0].ticks;
|
|
|
+
|
|
|
+ options.xaxis = {
|
|
|
+ timezone: dashboard.getTimezone(),
|
|
|
+ show: panel.xaxis.show,
|
|
|
+ mode: null,
|
|
|
+ min: 0,
|
|
|
+ max: ticks.length,
|
|
|
+ label: "Datetime",
|
|
|
+ ticks: ticks
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
function addGridThresholds(options, panel) {
|
|
|
if (_.isNumber(panel.grid.threshold1)) {
|
|
|
var limit1 = panel.grid.thresholdLine ? panel.grid.threshold1 : (panel.grid.threshold2 || null);
|