|
|
@@ -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) {
|
|
|
@@ -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) {
|
|
|
@@ -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;
|
|
|
@@ -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;
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
});
|
|
|
|
|
|
});
|