From 939e957fda02d6794307fabd6811c13fb74b2d59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 20 Aug 2014 08:35:17 +0200 Subject: [PATCH] Made regex match work for per series overrides, #425, #700 --- src/app/directives/grafanaGraph.js | 12 +++++++++++- src/app/panels/graph/seriesOverridesCtrl.js | 14 +++++++------- src/app/panels/graph/styleEditor.html | 2 +- src/test/specs/grafanaGraph-specs.js | 14 ++++++++++++++ src/test/specs/seriesOverridesCtrl-specs.js | 8 ++++++++ 5 files changed, 41 insertions(+), 9 deletions(-) diff --git a/src/app/directives/grafanaGraph.js b/src/app/directives/grafanaGraph.js index f624c90494d..1affce16e5c 100755 --- a/src/app/directives/grafanaGraph.js +++ b/src/app/directives/grafanaGraph.js @@ -183,6 +183,16 @@ function (angular, $, kbn, moment, _) { } } + function matchSeriesOverride(aliasOrRegex, seriesAlias) { + if (aliasOrRegex[0] === '/') { + var match = aliasOrRegex.match(new RegExp('^/(.*?)/(g?i?m?y?)$')); + var regex = new RegExp(match[1], match[2]); + return seriesAlias.match(regex) != null; + } + + return aliasOrRegex === seriesAlias; + } + function applySeriesOverrideOptions(series) { series.lines = {}; series.points = {}; @@ -191,7 +201,7 @@ function (angular, $, kbn, moment, _) { for (var i = 0; i < scope.panel.seriesOverrides.length; i++) { var override = scope.panel.seriesOverrides[i]; - if (override.alias !== series.info.alias) { + if (!matchSeriesOverride(override.alias, series.info.alias)) { continue; } if (override.lines !== void 0) { series.lines.show = override.lines; } diff --git a/src/app/panels/graph/seriesOverridesCtrl.js b/src/app/panels/graph/seriesOverridesCtrl.js index d2f083b2699..0d7f3b4838d 100644 --- a/src/app/panels/graph/seriesOverridesCtrl.js +++ b/src/app/panels/graph/seriesOverridesCtrl.js @@ -47,13 +47,13 @@ define([ $scope.updateCurrentOverrides = function() { $scope.currentOverrides = []; _.each($scope.overrideMenu, function(option) { - if (!_.isUndefined($scope.override[option.propertyName])) { - $scope.currentOverrides.push({ - name: option.text, - propertyName: option.propertyName, - value: String($scope.override[option.propertyName]) - }); - } + var value = $scope.override[option.propertyName]; + if (_.isUndefined(value)) { return; } + $scope.currentOverrides.push({ + name: option.text, + propertyName: option.propertyName, + value: String(value) + }); }); }; diff --git a/src/app/panels/graph/styleEditor.html b/src/app/panels/graph/styleEditor.html index ca7ec99180d..5a50f4995d0 100644 --- a/src/app/panels/graph/styleEditor.html +++ b/src/app/panels/graph/styleEditor.html @@ -65,7 +65,7 @@
-
Series specific overrides
+
Series specific overrides Regex match example: /server[0-3]/i
diff --git a/src/test/specs/grafanaGraph-specs.js b/src/test/specs/grafanaGraph-specs.js index 162ad278ce3..6d83467daa7 100644 --- a/src/test/specs/grafanaGraph-specs.js +++ b/src/test/specs/grafanaGraph-specs.js @@ -143,7 +143,21 @@ define([ }); }); + graphScenario('override match on regex', function(ctx) { + ctx.setup(function(scope, data) { + scope.panel.lines = true; + scope.panel.seriesOverrides = [ + { alias: '/.*01/', lines: false } + ]; + data[1].info.alias = 'test_01'; + }); + + it('should match second series and set pointradius, and set steppedLine', function() { + expect(ctx.plotData[0].lines.show).to.be(undefined); + expect(ctx.plotData[1].lines.show).to.be(false); + }); + }); }); }); diff --git a/src/test/specs/seriesOverridesCtrl-specs.js b/src/test/specs/seriesOverridesCtrl-specs.js index e029c8a30cd..e211b6dab35 100644 --- a/src/test/specs/seriesOverridesCtrl-specs.js +++ b/src/test/specs/seriesOverridesCtrl-specs.js @@ -37,6 +37,14 @@ define([ }); }); + describe('When removing overide', function() { + it('click should include option and value index', function() { + ctx.scope.setOverride(1,0); + ctx.scope.removeOverride({ propertyName: 'lines' }); + expect(ctx.scope.currentOverrides.length).to.be(0); + }); + }); + }); });