diff --git a/public/app/features/dashboard/dynamicDashboardSrv.js b/public/app/features/dashboard/dynamicDashboardSrv.js index dcb4e31340c..1b3f2b13455 100644 --- a/public/app/features/dashboard/dynamicDashboardSrv.js +++ b/public/app/features/dashboard/dynamicDashboardSrv.js @@ -105,6 +105,8 @@ function (angular, _) { _.each(selected, function(option, index) { copy = self.getRowClone(row, index); + copy.scopedVars = {}; + copy.scopedVars[variable.name] = option; for (i = 0; i < copy.panels.length; i++) { panel = copy.panels[i]; diff --git a/public/app/features/dashboard/rowCtrl.js b/public/app/features/dashboard/rowCtrl.js index 1f839bd206a..c63017365bb 100644 --- a/public/app/features/dashboard/rowCtrl.js +++ b/public/app/features/dashboard/rowCtrl.js @@ -22,7 +22,6 @@ function (angular, app, _, config) { $scope.init = function() { $scope.editor = {index: 0}; - $scope.reset_panel(); }; $scope.togglePanelMenu = function(posX) { @@ -64,8 +63,18 @@ function (angular, app, _, config) { }; $scope.add_panel_default = function(type) { - $scope.reset_panel(type); - $scope.add_panel($scope.panel); + var defaultSpan = 12; + var _as = 12 - $scope.dashboard.rowSpan($scope.row); + + var panel = { + title: config.new_panel_title, + error: false, + span: _as < defaultSpan && _as > 0 ? _as : defaultSpan, + editable: true, + type: type + }; + + $scope.add_panel(panel); $timeout(function() { $scope.$broadcast('render'); @@ -105,31 +114,6 @@ function (angular, app, _, config) { }); }; - $scope.reset_panel = function(type) { - var defaultSpan = 12; - var _as = 12 - $scope.dashboard.rowSpan($scope.row); - - $scope.panel = { - title: config.new_panel_title, - error: false, - span: _as < defaultSpan && _as > 0 ? _as : defaultSpan, - editable: true, - type: type - }; - - function fixRowHeight(height) { - if (!height) { - return '200px'; - } - if (!_.isString(height)) { - return height + 'px'; - } - return height; - } - - $scope.row.height = fixRowHeight($scope.row.height); - }; - $scope.init(); }); diff --git a/public/app/filters/all.js b/public/app/filters/all.js index fd22061da66..c904c7c9449 100755 --- a/public/app/filters/all.js +++ b/public/app/filters/all.js @@ -57,7 +57,11 @@ define(['angular', 'jquery', 'lodash', 'moment'], function (angular, $, _, momen module.filter('interpolateTemplateVars', function(templateSrv) { function interpolateTemplateVars(text, scope) { - return templateSrv.replaceWithText(text, scope.panel.scopedVars); + if (scope.panel) { + return templateSrv.replaceWithText(text, scope.panel.scopedVars); + } else { + return templateSrv.replaceWithText(text, scope.row.scopedVars); + } } interpolateTemplateVars.$stateful = true; diff --git a/public/app/partials/dashboard.html b/public/app/partials/dashboard.html index c9dca5c5f72..3ea34d0db0a 100644 --- a/public/app/partials/dashboard.html +++ b/public/app/partials/dashboard.html @@ -75,7 +75,7 @@
-
+
diff --git a/public/test/specs/dynamicDashboardSrv-specs.js b/public/test/specs/dynamicDashboardSrv-specs.js index 905b8896cd4..7d0be5583cb 100644 --- a/public/test/specs/dynamicDashboardSrv-specs.js +++ b/public/test/specs/dynamicDashboardSrv-specs.js @@ -135,6 +135,11 @@ define([ expect(ctx.rows[1].repeat).to.be(null); }); + it('should add scopedVars to rows', function() { + expect(ctx.rows[0].scopedVars.servers.value).to.be('se1'); + expect(ctx.rows[1].scopedVars.servers.value).to.be('se2'); + }); + it('should generate a repeartRowId based on repeat row index', function() { expect(ctx.rows[1].repeatRowId).to.be(1); });