can handle updates

This commit is contained in:
Torkel Ödegaard
2015-03-17 16:04:08 -04:00
parent 9f729900f2
commit 741a1736a4
3 changed files with 30 additions and 14 deletions
@@ -13,6 +13,25 @@ function (angular, _) {
this.handlePanelRepeats(dashboard);
};
this.update = function(dashboard) {
this.removeLinkedPanels(dashboard);
this.handlePanelRepeats(dashboard);
};
this.removeLinkedPanels = function(dashboard) {
var i, j, row, panel;
for (i = 0; i < dashboard.rows.length; i++) {
row = dashboard.rows[i];
for (j = 0; j < row.panels.length; j++) {
panel = row.panels[j];
if (panel.linked) {
row.panels = _.without(row.panels, panel);
j = j - 1;
}
}
}
};
this.handlePanelRepeats = function(dashboard) {
var i, j, row, panel;
for (i = 0; i < dashboard.rows.length; i++) {
@@ -37,6 +56,7 @@ function (angular, _) {
if (index > 0) {
var copy = dashboard.duplicatePanel(panel, row);
copy.repeat = null;
copy.linked = true;
copy.scopedVars = {};
copy.scopedVars[variable.name] = option;
} else {
+5 -2
View File
@@ -7,7 +7,7 @@ function (angular, _) {
var module = angular.module('grafana.controllers');
module.controller('SubmenuCtrl', function($scope, $q, $rootScope, templateValuesSrv) {
module.controller('SubmenuCtrl', function($scope, $q, $rootScope, templateValuesSrv, dynamicDashboardSrv) {
var _d = {
enable: true
};
@@ -27,7 +27,10 @@ function (angular, _) {
};
$scope.setVariableValue = function(param, option) {
templateValuesSrv.setVariableValue(param, option);
templateValuesSrv.setVariableValue(param, option).then(function() {
dynamicDashboardSrv.update($scope.dashboard);
$rootScope.$broadcast('refresh');
});
};
$scope.init();
@@ -32,7 +32,7 @@ function (angular, _, kbn) {
var option = _.findWhere(variable.options, { text: urlValue });
option = option || { text: urlValue, value: urlValue };
var promise = this.setVariableValue(variable, option, true);
var promise = this.setVariableValue(variable, option);
this.updateAutoInterval(variable);
promises.push(promise);
@@ -60,17 +60,10 @@ function (angular, _, kbn) {
templateSrv.setGrafanaVariable('$__auto_interval', interval);
};
this.setVariableValue = function(variable, option, recursive) {
this.setVariableValue = function(variable, option) {
variable.current = option;
templateSrv.updateTemplateData();
return this.updateOptionsInChildVariables(variable)
.then(function() {
if (!recursive) {
$rootScope.$broadcast('refresh');
}
});
return this.updateOptionsInChildVariables(variable);
};
this.updateOptionsInChildVariables = function(updatedVariable) {
@@ -117,11 +110,11 @@ function (angular, _, kbn) {
if (variable.current) {
var currentOption = _.findWhere(variable.options, { text: variable.current.text });
if (currentOption) {
return self.setVariableValue(variable, currentOption, true);
return self.setVariableValue(variable, currentOption);
}
}
return self.setVariableValue(variable, variable.options[0], true);
return self.setVariableValue(variable, variable.options[0]);
});
});
};