diff --git a/public/app/features/templating/templateValuesSrv.js b/public/app/features/templating/templateValuesSrv.js index fb751a2ce3a..36de8d49613 100644 --- a/public/app/features/templating/templateValuesSrv.js +++ b/public/app/features/templating/templateValuesSrv.js @@ -8,7 +8,7 @@ function (angular, _, kbn) { var module = angular.module('grafana.services'); - module.service('templateValuesSrv', function($q, $rootScope, datasourceSrv, $location, templateSrv, timeSrv) { + module.service('templateValuesSrv', function($q, $rootScope, datasourceSrv, $location, templateSrv, timeSrv, dynamicDashboardSrv) { var self = this; function getNoneOption() { return { text: 'None', value: '', isNone: true }; } @@ -27,7 +27,17 @@ function (angular, _, kbn) { .filter(function(variable) { return variable.refresh === 2; }).map(function(variable) { - return self.updateOptions(variable); + var previousVariable = angular.copy(variable); + return self.updateOptions(variable).then(function () { + return self.variableUpdated(variable).then(function () { + var updatedVariable = angular.copy(variable); + delete(updatedVariable.$$hashKey); + if (JSON.stringify(previousVariable) !== JSON.stringify(updatedVariable)) { + dynamicDashboardSrv.update(self.dashboard); + $rootScope.$emit('template-variable-value-updated'); + } + }); + }); }); return $q.all(promises); @@ -35,6 +45,7 @@ function (angular, _, kbn) { }, $rootScope); this.init = function(dashboard) { + this.dashboard = dashboard; this.variables = dashboard.templating.list; templateSrv.init(this.variables); @@ -145,7 +156,7 @@ function (angular, _, kbn) { this.variableUpdated = function(variable) { templateSrv.updateTemplateData(); - return this.updateOptionsInChildVariables(variable); + return self.updateOptionsInChildVariables(variable); }; this.updateOptionsInChildVariables = function(updatedVariable) {