|
|
@@ -23,6 +23,7 @@ function (angular, _, moment, dateMath, CloudWatchAnnotationQuery) {
|
|
|
|
|
|
var queries = [];
|
|
|
options = angular.copy(options);
|
|
|
+ options.targets = this.expandTemplateVariable(options.targets, templateSrv);
|
|
|
_.each(options.targets, function(target) {
|
|
|
if (target.hide || !target.namespace || !target.metricName || _.isEmpty(target.statistics)) {
|
|
|
return;
|
|
|
@@ -337,6 +338,37 @@ function (angular, _, moment, dateMath, CloudWatchAnnotationQuery) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ this.getExpandedVariables = function(target, dimensionKey, variable) {
|
|
|
+ return _.chain(variable.options)
|
|
|
+ .filter(function(v) {
|
|
|
+ return v.selected;
|
|
|
+ })
|
|
|
+ .map(function(v) {
|
|
|
+ var t = angular.copy(target);
|
|
|
+ t.dimensions[dimensionKey] = v.value;
|
|
|
+ return t;
|
|
|
+ }).value();
|
|
|
+ };
|
|
|
+
|
|
|
+ this.expandTemplateVariable = function(targets, templateSrv) {
|
|
|
+ var self = this;
|
|
|
+ return _.chain(targets)
|
|
|
+ .map(function(target) {
|
|
|
+ var dimensionKey = _.findKey(target.dimensions, function(v) {
|
|
|
+ return templateSrv.variableExists(v);
|
|
|
+ });
|
|
|
+
|
|
|
+ if (dimensionKey) {
|
|
|
+ var variable = _.find(templateSrv.variables, function(variable) {
|
|
|
+ return templateSrv.containsVariable(target.dimensions[dimensionKey], variable.name);
|
|
|
+ });
|
|
|
+ return self.getExpandedVariables(target, dimensionKey, variable);
|
|
|
+ } else {
|
|
|
+ return [target];
|
|
|
+ }
|
|
|
+ }).flatten().value();
|
|
|
+ };
|
|
|
+
|
|
|
this.convertToCloudWatchTime = function(date, roundUp) {
|
|
|
if (_.isString(date)) {
|
|
|
date = dateMath.parse(date, roundUp);
|