|
@@ -1,16 +1,3 @@
|
|
|
-/** @scratch /panels/5
|
|
|
|
|
- * include::panels/histogram.asciidoc[]
|
|
|
|
|
- */
|
|
|
|
|
-
|
|
|
|
|
-/** @scratch /panels/histogram/0
|
|
|
|
|
- * == Histogram
|
|
|
|
|
- * Status: *Stable*
|
|
|
|
|
- *
|
|
|
|
|
- * The histogram panel allow for the display of time charts. It includes several modes and tranformations
|
|
|
|
|
- * to display event counts, mean, min, max and total of numeric fields, and derivatives of counter
|
|
|
|
|
- * fields.
|
|
|
|
|
- *
|
|
|
|
|
- */
|
|
|
|
|
define([
|
|
define([
|
|
|
'angular',
|
|
'angular',
|
|
|
'app',
|
|
'app',
|
|
@@ -18,7 +5,8 @@ define([
|
|
|
'lodash',
|
|
'lodash',
|
|
|
'kbn',
|
|
'kbn',
|
|
|
'moment',
|
|
'moment',
|
|
|
- './timeSeries',
|
|
|
|
|
|
|
+ 'components/timeSeries',
|
|
|
|
|
+ './seriesOverridesCtrl',
|
|
|
'services/panelSrv',
|
|
'services/panelSrv',
|
|
|
'services/annotationsSrv',
|
|
'services/annotationsSrv',
|
|
|
'services/datasourceSrv',
|
|
'services/datasourceSrv',
|
|
@@ -29,11 +17,10 @@ define([
|
|
|
'jquery.flot.stack',
|
|
'jquery.flot.stack',
|
|
|
'jquery.flot.stackpercent'
|
|
'jquery.flot.stackpercent'
|
|
|
],
|
|
],
|
|
|
-function (angular, app, $, _, kbn, moment, timeSeries) {
|
|
|
|
|
-
|
|
|
|
|
|
|
+function (angular, app, $, _, kbn, moment, TimeSeries) {
|
|
|
'use strict';
|
|
'use strict';
|
|
|
|
|
|
|
|
- var module = angular.module('grafana.panels.graph', []);
|
|
|
|
|
|
|
+ var module = angular.module('grafana.panels.graph');
|
|
|
app.useModule(module);
|
|
app.useModule(module);
|
|
|
|
|
|
|
|
module.controller('GraphCtrl', function($scope, $rootScope, $timeout, panelSrv, annotationsSrv) {
|
|
module.controller('GraphCtrl', function($scope, $rootScope, $timeout, panelSrv, annotationsSrv) {
|
|
@@ -179,7 +166,8 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
|
|
|
targets: [{}],
|
|
targets: [{}],
|
|
|
|
|
|
|
|
aliasColors: {},
|
|
aliasColors: {},
|
|
|
- aliasYAxis: {},
|
|
|
|
|
|
|
+
|
|
|
|
|
+ seriesOverrides: [],
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
_.defaults($scope.panel,_d);
|
|
_.defaults($scope.panel,_d);
|
|
@@ -188,13 +176,7 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
|
|
|
_.defaults($scope.panel.grid, _d.grid);
|
|
_.defaults($scope.panel.grid, _d.grid);
|
|
|
_.defaults($scope.panel.legend, _d.legend);
|
|
_.defaults($scope.panel.legend, _d.legend);
|
|
|
|
|
|
|
|
- $scope.init = function() {
|
|
|
|
|
- panelSrv.init($scope);
|
|
|
|
|
- $scope.hiddenSeries = {};
|
|
|
|
|
- if (!$scope.skipDataOnInit) {
|
|
|
|
|
- $scope.get_data();
|
|
|
|
|
- }
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ $scope.hiddenSeries = {};
|
|
|
|
|
|
|
|
$scope.updateTimeRange = function () {
|
|
$scope.updateTimeRange = function () {
|
|
|
$scope.range = $scope.filter.timeRange();
|
|
$scope.range = $scope.filter.timeRange();
|
|
@@ -210,10 +192,6 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
$scope.get_data = function() {
|
|
$scope.get_data = function() {
|
|
|
- delete $scope.panel.error;
|
|
|
|
|
-
|
|
|
|
|
- $scope.panelMeta.loading = true;
|
|
|
|
|
-
|
|
|
|
|
$scope.updateTimeRange();
|
|
$scope.updateTimeRange();
|
|
|
|
|
|
|
|
var metricsQuery = {
|
|
var metricsQuery = {
|
|
@@ -253,7 +231,7 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
|
|
|
|
|
|
|
|
var data = _.map(results.data, $scope.seriesHandler);
|
|
var data = _.map(results.data, $scope.seriesHandler);
|
|
|
|
|
|
|
|
- $scope.datapointsWarning = $scope.datapointsCount || !$scope.datapointsOutside;
|
|
|
|
|
|
|
+ $scope.datapointsWarning = $scope.datapointsCount === 0 || $scope.datapointsOutside;
|
|
|
|
|
|
|
|
$scope.annotationsPromise
|
|
$scope.annotationsPromise
|
|
|
.then(function(annotations) {
|
|
.then(function(annotations) {
|
|
@@ -268,18 +246,15 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
|
|
|
var datapoints = seriesData.datapoints;
|
|
var datapoints = seriesData.datapoints;
|
|
|
var alias = seriesData.target;
|
|
var alias = seriesData.target;
|
|
|
var color = $scope.panel.aliasColors[alias] || $rootScope.colors[index];
|
|
var color = $scope.panel.aliasColors[alias] || $rootScope.colors[index];
|
|
|
- var yaxis = $scope.panel.aliasYAxis[alias] || 1;
|
|
|
|
|
|
|
|
|
|
var seriesInfo = {
|
|
var seriesInfo = {
|
|
|
alias: alias,
|
|
alias: alias,
|
|
|
color: color,
|
|
color: color,
|
|
|
- enable: true,
|
|
|
|
|
- yaxis: yaxis
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
$scope.legend.push(seriesInfo);
|
|
$scope.legend.push(seriesInfo);
|
|
|
|
|
|
|
|
- var series = new timeSeries.ZeroFilled({
|
|
|
|
|
|
|
+ var series = new TimeSeries({
|
|
|
datapoints: datapoints,
|
|
datapoints: datapoints,
|
|
|
info: seriesInfo,
|
|
info: seriesInfo,
|
|
|
});
|
|
});
|
|
@@ -297,10 +272,6 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
|
|
|
return series;
|
|
return series;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- $scope.otherPanelInFullscreenMode = function() {
|
|
|
|
|
- return $rootScope.fullscreen && !$scope.fullscreen;
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
$scope.render = function(data) {
|
|
$scope.render = function(data) {
|
|
|
$scope.$emit('render', data);
|
|
$scope.$emit('render', data);
|
|
|
};
|
|
};
|
|
@@ -361,8 +332,12 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
$scope.toggleYAxis = function(info) {
|
|
$scope.toggleYAxis = function(info) {
|
|
|
- info.yaxis = info.yaxis === 2 ? 1 : 2;
|
|
|
|
|
- $scope.panel.aliasYAxis[info.alias] = info.yaxis;
|
|
|
|
|
|
|
+ var override = _.findWhere($scope.panel.seriesOverrides, { alias: info.alias });
|
|
|
|
|
+ if (!override) {
|
|
|
|
|
+ override = { alias: info.alias };
|
|
|
|
|
+ $scope.panel.seriesOverrides.push(override);
|
|
|
|
|
+ }
|
|
|
|
|
+ override.yaxis = info.yaxis === 2 ? 1 : 2;
|
|
|
$scope.render();
|
|
$scope.render();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -371,7 +346,16 @@ function (angular, app, $, _, kbn, moment, timeSeries) {
|
|
|
$scope.render();
|
|
$scope.render();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- $scope.init();
|
|
|
|
|
|
|
+ $scope.addSeriesOverride = function() {
|
|
|
|
|
+ $scope.panel.seriesOverrides.push({});
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ $scope.removeSeriesOverride = function(override) {
|
|
|
|
|
+ $scope.panel.seriesOverrides = _.without($scope.panel.seriesOverrides, override);
|
|
|
|
|
+ $scope.render();
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ panelSrv.init($scope);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
});
|
|
});
|