Skip to content

Commit

Permalink
Fixed issue with using template variables in panel titles, and text p…
Browse files Browse the repository at this point in the history
…anel, when selecting All option in variable
  • Loading branch information
torkelo committed Sep 11, 2014
1 parent b1abe72 commit 4883b2a
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 15 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"company": "Coding Instinct AB"
},
"name": "grafana",
"version": "1.8.0",
"version": "1.8.0-rc1",
"repository": {
"type": "git",
"url": "http://github.com/torkelo/grafana.git"
Expand Down
2 changes: 1 addition & 1 deletion src/app/filters/all.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ define(['angular', 'jquery', 'lodash', 'moment'], function (angular, $, _, momen

module.filter('interpolateTemplateVars', function(templateSrv) {
return function(text) {
return templateSrv.replace(text);
return templateSrv.replaceWithText(text);
};
});

Expand Down
41 changes: 28 additions & 13 deletions src/app/services/templateSrv.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,25 @@ function (angular, _) {
var self = this;

this._regex = /\$(\w+)|\[\[([\s\S]+?)\]\]/g;
this._templateData = {};
this._values = {};
this._texts = {};
this._grafanaVariables = {};

this.init = function(variables) {
this.variables = variables;
this.updateTemplateData(true);
this.updateTemplateData();
};

this.updateTemplateData = function() {
var data = {};
this._values = {};
this._texts = {};

_.each(this.variables, function(variable) {
if (!variable.current || !variable.current.value) {
return;
}

data[variable.name] = variable.current.value;
});
if (!variable.current || !variable.current.value) { return; }

this._templateData = data;
this._values[variable.name] = variable.current.value;
this._texts[variable.name] = variable.current.text;
}, this);
};

this.setGrafanaVariable = function (name, value) {
Expand All @@ -40,7 +39,7 @@ function (angular, _) {
this.variableExists = function(expression) {
this._regex.lastIndex = 0;
var match = this._regex.exec(expression);
return match && (self._templateData[match[1] || match[2]] !== void 0);
return match && (self._values[match[1] || match[2]] !== void 0);
};

this.containsVariable = function(str, variableName) {
Expand All @@ -52,7 +51,7 @@ function (angular, _) {

this._regex.lastIndex = 0;
return str.replace(this._regex, function(match, g1, g2) {
if (self._templateData[g1 || g2]) {
if (self._values[g1 || g2]) {
return '<span class="template-variable">' + match + '</span>';
}
return match;
Expand All @@ -66,13 +65,29 @@ function (angular, _) {
this._regex.lastIndex = 0;

return target.replace(this._regex, function(match, g1, g2) {
value = self._templateData[g1 || g2];
value = self._values[g1 || g2];
if (!value) { return match; }

return self._grafanaVariables[value] || value;
});
};

this.replaceWithText = function(target) {
if (!target) { return; }

var value;
var text;
this._regex.lastIndex = 0;

return target.replace(this._regex, function(match, g1, g2) {
value = self._values[g1 || g2];
text = self._texts[g1 || g2];
if (!value) { return match; }

return self._grafanaVariables[value] || text;
});
};

});

});
17 changes: 17 additions & 0 deletions src/test/specs/templateSrv-specs.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,23 @@ define([
});
});

describe('replaceWithText', function() {
beforeEach(function() {
_templateSrv.init([
{ name: 'server', current: { value: '{asd,asd2}', text: 'All' } },
{ name: 'period', current: { value: '$__auto_interval', text: 'auto' } }
]);
_templateSrv.setGrafanaVariable('$__auto_interval', '13m');
_templateSrv.updateTemplateData();
});

it('should replace with text except for grafanaVariables', function() {
var target = _templateSrv.replaceWithText('Server: $server, period: $period');
expect(target).to.be('Server: All, period: 13m');
});
});


});

});

0 comments on commit 4883b2a

Please sign in to comment.