can handle updates
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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]);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user