diff --git a/public/app/directives/variableValueSelect.js b/public/app/directives/variableValueSelect.js index f77510afc0d..41f8d5b1322 100644 --- a/public/app/directives/variableValueSelect.js +++ b/public/app/directives/variableValueSelect.js @@ -31,7 +31,7 @@ function (angular, app, _) { vm.search = {query: '', options: vm.options}; vm.selectedValuesCount = currentValues.length; - vm.selectedTags = vm.selectedTag || []; + vm.selectedTags = vm.selectedTags || []; if (!vm.tags) { vm.tags = _.map(vm.variable.tags, function(value) { @@ -76,7 +76,6 @@ function (angular, app, _) { } }); - vm.selectedTags = _.filter(vm.tags, {selected: true}); vm.selectionsChanged(false); }); }; @@ -168,10 +167,9 @@ function (angular, app, _) { return true; }); - vm.variable.current = {}; vm.variable.current.value = _.pluck(selected, 'value'); vm.variable.current.text = _.pluck(valuesNotInTag, 'text').join(', '); - vm.selectedValuesCount = vm.variable.current.value.length; + vm.selectedValuesCount = selected.length; // only single value if (vm.selectedValuesCount === 1) { diff --git a/public/app/features/templating/templateValuesSrv.js b/public/app/features/templating/templateValuesSrv.js index 7330be1b5cd..2fd17f4aa65 100644 --- a/public/app/features/templating/templateValuesSrv.js +++ b/public/app/features/templating/templateValuesSrv.js @@ -78,7 +78,7 @@ function (angular, _, kbn) { }; this.setVariableValue = function(variable, option) { - variable.current = option; + variable.current = angular.copy(option); templateSrv.updateTemplateData(); return this.updateOptionsInChildVariables(variable); }; diff --git a/public/test/specs/selectDropdownCtrl-specs.js b/public/test/specs/selectDropdownCtrl-specs.js index c919b3b8bee..968320b8e4f 100644 --- a/public/test/specs/selectDropdownCtrl-specs.js +++ b/public/test/specs/selectDropdownCtrl-specs.js @@ -74,6 +74,18 @@ function () { expect(ctrl.options[2].selected).to.be(true); }); + describe('and then dropdown is opened and closed without changes', function() { + beforeEach(function() { + ctrl.show(); + ctrl.commitChanges(); + rootScope.$digest(); + }); + + it("should still have selected tag", function() { + expect(ctrl.selectedTags.length).to.be(1); + }); + }); + describe('and then unselected', function() { beforeEach(function() { ctrl.selectTag(ctrl.tags[0]);