2014-08-19 16:46:08 +08:00
|
|
|
define([
|
|
|
|
|
'angular',
|
2015-05-14 03:34:50 +08:00
|
|
|
'jquery',
|
2014-08-19 16:46:08 +08:00
|
|
|
'lodash',
|
2016-01-28 01:51:01 +08:00
|
|
|
], function(angular, jquery, _) {
|
2014-08-19 16:46:08 +08:00
|
|
|
'use strict';
|
|
|
|
|
|
2016-01-28 01:51:01 +08:00
|
|
|
var module = angular.module('grafana.controllers');
|
2014-08-19 16:46:08 +08:00
|
|
|
|
2015-05-14 18:34:30 +08:00
|
|
|
module.controller('SeriesOverridesCtrl', function($scope, $element, popoverSrv) {
|
2014-08-19 16:46:08 +08:00
|
|
|
$scope.overrideMenu = [];
|
|
|
|
|
$scope.currentOverrides = [];
|
|
|
|
|
$scope.override = $scope.override || {};
|
|
|
|
|
|
|
|
|
|
$scope.addOverrideOption = function(name, propertyName, values) {
|
|
|
|
|
var option = {};
|
|
|
|
|
option.text = name;
|
|
|
|
|
option.propertyName = propertyName;
|
|
|
|
|
option.index = $scope.overrideMenu.length;
|
|
|
|
|
option.values = values;
|
|
|
|
|
|
2015-01-12 19:55:19 +08:00
|
|
|
option.submenu = _.map(values, function(value) {
|
|
|
|
|
return { text: String(value), value: value };
|
2014-08-19 16:46:08 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
$scope.overrideMenu.push(option);
|
|
|
|
|
};
|
|
|
|
|
|
2015-01-12 19:55:19 +08:00
|
|
|
$scope.setOverride = function(item, subItem) {
|
2015-05-14 18:34:30 +08:00
|
|
|
// handle color overrides
|
|
|
|
|
if (item.propertyName === 'color') {
|
|
|
|
|
$scope.openColorSelector();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2015-01-12 19:55:19 +08:00
|
|
|
$scope.override[item.propertyName] = subItem.value;
|
2014-10-15 23:07:51 +08:00
|
|
|
|
|
|
|
|
// automatically disable lines for this series and the fill bellow to series
|
|
|
|
|
// can be removed by the user if they still want lines
|
2015-01-12 19:55:19 +08:00
|
|
|
if (item.propertyName === 'fillBelowTo') {
|
2014-10-15 23:07:51 +08:00
|
|
|
$scope.override['lines'] = false;
|
2015-01-12 19:55:19 +08:00
|
|
|
$scope.addSeriesOverride({ alias: subItem.value, lines: false });
|
2014-10-15 23:07:51 +08:00
|
|
|
}
|
|
|
|
|
|
2015-05-14 03:34:50 +08:00
|
|
|
$scope.updateCurrentOverrides();
|
2016-04-10 02:37:30 +08:00
|
|
|
$scope.ctrl.render();
|
2015-05-14 03:34:50 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$scope.colorSelected = function(color) {
|
|
|
|
|
$scope.override['color'] = color;
|
2014-08-19 16:46:08 +08:00
|
|
|
$scope.updateCurrentOverrides();
|
2016-01-27 06:54:57 +08:00
|
|
|
$scope.ctrl.render();
|
2014-08-19 16:46:08 +08:00
|
|
|
};
|
|
|
|
|
|
2015-05-14 03:34:50 +08:00
|
|
|
$scope.openColorSelector = function() {
|
|
|
|
|
popoverSrv.show({
|
2016-02-23 01:46:58 +08:00
|
|
|
element: $element.find(".dropdown")[0],
|
|
|
|
|
position: 'top center',
|
|
|
|
|
openOn: 'click',
|
|
|
|
|
template: '<gf-color-picker></gf-color-picker>',
|
|
|
|
|
model: {
|
|
|
|
|
colorSelected: $scope.colorSelected,
|
2016-04-09 06:12:08 +08:00
|
|
|
},
|
|
|
|
|
onClose: function() {
|
2016-04-10 02:37:30 +08:00
|
|
|
$scope.ctrl.render();
|
2016-02-23 01:46:58 +08:00
|
|
|
}
|
2015-05-14 03:34:50 +08:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2014-08-19 16:46:08 +08:00
|
|
|
$scope.removeOverride = function(option) {
|
|
|
|
|
delete $scope.override[option.propertyName];
|
|
|
|
|
$scope.updateCurrentOverrides();
|
2016-02-23 01:46:58 +08:00
|
|
|
$scope.ctrl.refresh();
|
2014-08-19 16:46:08 +08:00
|
|
|
};
|
|
|
|
|
|
2014-08-20 17:48:00 +08:00
|
|
|
$scope.getSeriesNames = function() {
|
2016-01-27 06:54:57 +08:00
|
|
|
return _.map($scope.ctrl.seriesList, function(series) {
|
2014-11-12 04:09:50 +08:00
|
|
|
return series.alias;
|
2014-08-20 17:48:00 +08:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2014-08-19 16:46:08 +08:00
|
|
|
$scope.updateCurrentOverrides = function() {
|
|
|
|
|
$scope.currentOverrides = [];
|
|
|
|
|
_.each($scope.overrideMenu, function(option) {
|
2014-08-20 14:35:17 +08:00
|
|
|
var value = $scope.override[option.propertyName];
|
|
|
|
|
if (_.isUndefined(value)) { return; }
|
|
|
|
|
$scope.currentOverrides.push({
|
|
|
|
|
name: option.text,
|
|
|
|
|
propertyName: option.propertyName,
|
|
|
|
|
value: String(value)
|
|
|
|
|
});
|
2014-08-19 16:46:08 +08:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
$scope.addOverrideOption('Bars', 'bars', [true, false]);
|
|
|
|
|
$scope.addOverrideOption('Lines', 'lines', [true, false]);
|
2014-08-19 22:57:33 +08:00
|
|
|
$scope.addOverrideOption('Line fill', 'fill', [0,1,2,3,4,5,6,7,8,9,10]);
|
|
|
|
|
$scope.addOverrideOption('Line width', 'linewidth', [0,1,2,3,4,5,6,7,8,9,10]);
|
2015-11-19 13:46:22 +08:00
|
|
|
$scope.addOverrideOption('Null point mode', 'nullPointMode', ['connected', 'null', 'null as zero']);
|
2014-10-15 22:55:46 +08:00
|
|
|
$scope.addOverrideOption('Fill below to', 'fillBelowTo', $scope.getSeriesNames());
|
2014-08-19 23:24:37 +08:00
|
|
|
$scope.addOverrideOption('Staircase line', 'steppedLine', [true, false]);
|
|
|
|
|
$scope.addOverrideOption('Points', 'points', [true, false]);
|
|
|
|
|
$scope.addOverrideOption('Points Radius', 'pointradius', [1,2,3,4,5]);
|
2015-06-13 02:06:47 +08:00
|
|
|
$scope.addOverrideOption('Stack', 'stack', [true, false, 'A', 'B', 'C', 'D']);
|
2015-05-14 03:34:50 +08:00
|
|
|
$scope.addOverrideOption('Color', 'color', ['change']);
|
2014-08-20 15:31:22 +08:00
|
|
|
$scope.addOverrideOption('Y-axis', 'yaxis', [1, 2]);
|
2014-08-20 16:50:26 +08:00
|
|
|
$scope.addOverrideOption('Z-index', 'zindex', [-1,-2,-3,0,1,2,3]);
|
2015-06-13 02:06:47 +08:00
|
|
|
$scope.addOverrideOption('Transform', 'transform', ['negative-Y']);
|
2015-07-10 18:16:41 +08:00
|
|
|
$scope.addOverrideOption('Legend', 'legend', [true, false]);
|
2014-08-19 16:46:08 +08:00
|
|
|
$scope.updateCurrentOverrides();
|
|
|
|
|
});
|
|
|
|
|
});
|