diff --git a/public/app/plugins/panel/graph/graph.js b/public/app/plugins/panel/graph/graph.js index eae8c774a67..e5b2218d86a 100755 --- a/public/app/plugins/panel/graph/graph.js +++ b/public/app/plugins/panel/graph/graph.js @@ -227,7 +227,17 @@ function (angular, $, moment, _, kbn, GraphTooltip) { }; if (panel.xaxis.mode === 'histogram') { - histogramData = formatToHistogram(data, _.last); + // Format to histogram + + var getValueFuncs = { + 'min': _.min, + 'max': _.max, + 'avg': seriesAvg, + 'current': _.last, + 'total': seriesSum + }; + + histogramData = formatToHistogram(data, getValueFuncs[panel.xaxis.histogramValue]); if (histogramData.length && histogramData[0].ticks.length) { // options.series.bars.barWidth = histogramData[0].ticks.length / 1.5; @@ -306,6 +316,20 @@ function (angular, $, moment, _, kbn, GraphTooltip) { return histogram; } + function seriesSum(values) { + return _.reduce(values, function(sum, num) { + return sum + num; + }); + } + + function seriesAvg(values) { + if (values.length) { + return seriesSum(values) / values.length; + } else { + return null; + } + } + function translateFillOption(fill) { return fill === 0 ? 0.001 : fill/10; } diff --git a/public/app/plugins/panel/graph/module.ts b/public/app/plugins/panel/graph/module.ts index 1f71ad63829..9a10c45a9f8 100644 --- a/public/app/plugins/panel/graph/module.ts +++ b/public/app/plugins/panel/graph/module.ts @@ -21,6 +21,7 @@ class GraphCtrl extends MetricsPanelCtrl { logScales: any; unitFormats: any; xAxisModes: any; + xAxisHistogramValues: any; annotationsPromise: any; datapointsCount: number; datapointsOutside: boolean; @@ -52,7 +53,8 @@ class GraphCtrl extends MetricsPanelCtrl { ], xaxis: { show: true, - mode: 'timeseries' + mode: 'timeseries', + histogramValue: 'avg' }, grid : { threshold1: null, @@ -116,6 +118,7 @@ class GraphCtrl extends MetricsPanelCtrl { _.defaults(this.panel.tooltip, this.panelDefaults.tooltip); _.defaults(this.panel.grid, this.panelDefaults.grid); _.defaults(this.panel.legend, this.panelDefaults.legend); + _.defaults(this.panel.xaxis, this.panelDefaults.xaxis); this.colors = $scope.$root.colors; @@ -145,6 +148,8 @@ class GraphCtrl extends MetricsPanelCtrl { 'Time Series': 'timeseries', 'Histogram': 'histogram' }; + + this.xAxisHistogramValues = ['min', 'max', 'avg', 'current', 'total']; } onInitPanelActions(actions) { diff --git a/public/app/plugins/panel/graph/tab_axes.html b/public/app/plugins/panel/graph/tab_axes.html index 0469aff547f..b4d7aedf0a7 100644 --- a/public/app/plugins/panel/graph/tab_axes.html +++ b/public/app/plugins/panel/graph/tab_axes.html @@ -51,6 +51,16 @@ +