seriesOverridesCtrl.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. define([
  2. 'angular',
  3. 'app',
  4. 'lodash',
  5. ], function(angular, app, _) {
  6. 'use strict';
  7. var module = angular.module('grafana.panels.graph', []);
  8. app.useModule(module);
  9. module.controller('SeriesOverridesCtrl', function($scope) {
  10. $scope.overrideMenu = [];
  11. $scope.currentOverrides = [];
  12. $scope.override = $scope.override || {};
  13. $scope.addOverrideOption = function(name, propertyName, values) {
  14. var option = {};
  15. option.text = name;
  16. option.propertyName = propertyName;
  17. option.index = $scope.overrideMenu.length;
  18. option.values = values;
  19. option.submenu = _.map(values, function(value) {
  20. return { text: String(value), value: value };
  21. });
  22. $scope.overrideMenu.push(option);
  23. };
  24. $scope.setOverride = function(item, subItem) {
  25. $scope.override[item.propertyName] = subItem.value;
  26. // automatically disable lines for this series and the fill bellow to series
  27. // can be removed by the user if they still want lines
  28. if (item.propertyName === 'fillBelowTo') {
  29. $scope.override['lines'] = false;
  30. $scope.addSeriesOverride({ alias: subItem.value, lines: false });
  31. }
  32. $scope.updateCurrentOverrides();
  33. $scope.render();
  34. };
  35. $scope.removeOverride = function(option) {
  36. delete $scope.override[option.propertyName];
  37. $scope.updateCurrentOverrides();
  38. $scope.render();
  39. };
  40. $scope.getSeriesNames = function() {
  41. return _.map($scope.seriesList, function(series) {
  42. return series.alias;
  43. });
  44. };
  45. $scope.updateCurrentOverrides = function() {
  46. $scope.currentOverrides = [];
  47. _.each($scope.overrideMenu, function(option) {
  48. var value = $scope.override[option.propertyName];
  49. if (_.isUndefined(value)) { return; }
  50. $scope.currentOverrides.push({
  51. name: option.text,
  52. propertyName: option.propertyName,
  53. value: String(value)
  54. });
  55. });
  56. };
  57. $scope.addOverrideOption('Bars', 'bars', [true, false]);
  58. $scope.addOverrideOption('Lines', 'lines', [true, false]);
  59. $scope.addOverrideOption('Line fill', 'fill', [0,1,2,3,4,5,6,7,8,9,10]);
  60. $scope.addOverrideOption('Line width', 'linewidth', [0,1,2,3,4,5,6,7,8,9,10]);
  61. $scope.addOverrideOption('Fill below to', 'fillBelowTo', $scope.getSeriesNames());
  62. $scope.addOverrideOption('Staircase line', 'steppedLine', [true, false]);
  63. $scope.addOverrideOption('Points', 'points', [true, false]);
  64. $scope.addOverrideOption('Points Radius', 'pointradius', [1,2,3,4,5]);
  65. $scope.addOverrideOption('Stack', 'stack', [true, false, 2, 3, 4, 5]);
  66. $scope.addOverrideOption('Y-axis', 'yaxis', [1, 2]);
  67. $scope.addOverrideOption('Z-index', 'zindex', [-1,-2,-3,0,1,2,3]);
  68. $scope.updateCurrentOverrides();
  69. });
  70. });