AMBARI-21385. Selected hosts are not dropped event if some of the selected hosts was deleted (alexantonenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ac5eaae5 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ac5eaae5 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ac5eaae5 Branch: refs/heads/feature-branch-AMBARI-21307 Commit: ac5eaae59673740a43b56b54978948e73cd71a54 Parents: f17d317 Author: Alex Antonenko <hiv...@gmail.com> Authored: Fri Jun 30 17:52:42 2017 +0300 Committer: Alex Antonenko <hiv...@gmail.com> Committed: Fri Jul 7 10:38:45 2017 +0300 ---------------------------------------------------------------------- .../main/host/bulk_operations_controller.js | 11 +++++++++-- ambari-web/app/controllers/main/host/details.js | 2 +- ambari-web/app/mappers/hosts_mapper.js | 2 +- ambari-web/app/utils/db.js | 14 ++++++++++---- ambari-web/app/views/main/host.js | 8 +++----- ambari-web/test/views/main/host_test.js | 4 ++-- 6 files changed, 26 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/ac5eaae5/ambari-web/app/controllers/main/host/bulk_operations_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/host/bulk_operations_controller.js b/ambari-web/app/controllers/main/host/bulk_operations_controller.js index b053fc3..b921cd5 100644 --- a/ambari-web/app/controllers/main/host/bulk_operations_controller.js +++ b/ambari-web/app/controllers/main/host/bulk_operations_controller.js @@ -450,13 +450,20 @@ App.BulkOperationsController = Em.Controller.extend({ } }), - onPrimary: function () { + completeDelete() { + if (arg1 !== 'error') { + App.db.unselectHosts(arg2.hosts); + } location.reload(); + }, + + onPrimary: function () { + this.completeDelete(); this._super(); }, onClose: function () { - location.reload(); + this.completeDelete(); this._super(); } }); http://git-wip-us.apache.org/repos/asf/ambari/blob/ac5eaae5/ambari-web/app/controllers/main/host/details.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/main/host/details.js b/ambari-web/app/controllers/main/host/details.js index 6f34dfe..382b09d 100644 --- a/ambari-web/app/controllers/main/host/details.js +++ b/ambari-web/app/controllers/main/host/details.js @@ -2678,7 +2678,7 @@ App.MainHostDetailsController = Em.Controller.extend(App.SupportClientConfigsDow var popup = this; var completeCallback = function () { var remainingHosts = App.db.getSelectedHosts('mainHostController').removeObject(self.get('content.hostName')); - App.db.setSelectedHosts('mainHostController', remainingHosts); + App.db.setSelectedHosts(remainingHosts); popup.hide(); }; self.doDeleteHost(completeCallback); http://git-wip-us.apache.org/repos/asf/ambari/blob/ac5eaae5/ambari-web/app/mappers/hosts_mapper.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mappers/hosts_mapper.js b/ambari-web/app/mappers/hosts_mapper.js index 203cd67..e536269 100644 --- a/ambari-web/app/mappers/hosts_mapper.js +++ b/ambari-web/app/mappers/hosts_mapper.js @@ -103,7 +103,7 @@ App.hostsMapper = App.QuickDataMapper.create({ var cacheServices = App.cache['services']; var currentServiceComponentsMap = App.get('componentConfigMapper').buildServiceComponentMap(cacheServices); var newHostComponentsMap = {}; - var selectedHosts = App.db.getSelectedHosts('mainHostController'); + var selectedHosts = App.db.getSelectedHosts(); var clusterName = App.get('clusterName'); var advancedHostComponents = []; var hostComponentLogs = []; http://git-wip-us.apache.org/repos/asf/ambari/blob/ac5eaae5/ambari-web/app/utils/db.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/db.js b/ambari-web/app/utils/db.js index e41b9c0..eddd7ef 100644 --- a/ambari-web/app/utils/db.js +++ b/ambari-web/app/utils/db.js @@ -221,10 +221,16 @@ App.db.setSortingStatuses = function (name, sortingConditions) { App.db.set('app.tables.sortingConditions', name, sortingConditions); }; -App.db.setSelectedHosts = function (name, selectedHosts) { - App.db.set('app.tables.selectedItems', name, selectedHosts); +App.db.setSelectedHosts = function (selectedHosts) { + App.db.set('app.tables.selectedItems', 'mainHostController', selectedHosts); }; +App.db.unselectHosts = function (hostsToUnselect = []) { + let selectedHosts = App.db.getSelectedHosts(); + selectedHosts = selectedHosts.filter(host => hostsToUnselect.indexOf(host) === -1); + App.db.setSelectedHosts(selectedHosts); +} + App.db.setHosts = function (hostInfo) { App.db.set('Installer', 'hostInfo', hostInfo); }; @@ -405,8 +411,8 @@ App.db.getSortingStatuses = function (name) { return name ? App.db.get('app.tables.sortingConditions', name): null; }; -App.db.getSelectedHosts = function (name) { - return App.db.get('app.tables.selectedItems', name) || []; +App.db.getSelectedHosts = function () { + return App.db.get('app.tables.selectedItems', 'mainHostController') || []; }; /** http://git-wip-us.apache.org/repos/asf/ambari/blob/ac5eaae5/ambari-web/app/views/main/host.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/main/host.js b/ambari-web/app/views/main/host.js index 6a8dcf2..78eb82b 100644 --- a/ambari-web/app/views/main/host.js +++ b/ambari-web/app/views/main/host.js @@ -246,8 +246,7 @@ App.MainHostView = App.TableView.extend(App.TableServerViewMixin, { } this.combineSelectedFilter(); //10 is an index of selected column - var controllerName = this.get('controller.name'); - App.db.setSelectedHosts(controllerName, this.get('selectedHosts')); + App.db.setSelectedHosts(this.get('selectedHosts')); this.addObserver('selectAllHosts', this, this.toggleAllHosts); }, @@ -255,8 +254,7 @@ App.MainHostView = App.TableView.extend(App.TableServerViewMixin, { * combine selected hosts on page with selected hosts which are filtered out but added to cluster */ combineSelectedFilter: function () { - var controllerName = this.get('controller.name'); - var previouslySelectedHosts = App.db.getSelectedHosts(controllerName); + var previouslySelectedHosts = App.db.getSelectedHosts(); var selectedHosts = []; var hostsOnPage = this.get('pageContent').mapProperty('hostName'); selectedHosts = this.get('pageContent').filterProperty('selected').mapProperty('hostName'); @@ -306,7 +304,7 @@ App.MainHostView = App.TableView.extend(App.TableServerViewMixin, { clearSelection: function() { this.get('pageContent').setEach('selected', false); this.set('selectAllHosts', false); - App.db.setSelectedHosts(this.get('controller.name'), []); + App.db.setSelectedHosts([]); this.get('selectedHosts').clear(); this.filterSelected(); }, http://git-wip-us.apache.org/repos/asf/ambari/blob/ac5eaae5/ambari-web/test/views/main/host_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/views/main/host_test.js b/ambari-web/test/views/main/host_test.js index e0eb9bc..15bdab2 100644 --- a/ambari-web/test/views/main/host_test.js +++ b/ambari-web/test/views/main/host_test.js @@ -523,7 +523,7 @@ describe('App.MainHostView', function () { it("App.db.setSelectedHosts should be called", function() { view.set('selectedHosts', []); view.updateCheckedFlags(); - expect(App.db.setSelectedHosts.calledWith('ctrl1', [])).to.be.true; + expect(App.db.setSelectedHosts.calledWith([])).to.be.true; }); it("addObserver should be called", function() { @@ -620,7 +620,7 @@ describe('App.MainHostView', function () { }); it("App.db.setSelectedHosts should be called", function() { - expect(App.db.setSelectedHosts.calledWith('ctrl1', [])).to.be.true; + expect(App.db.setSelectedHosts.calledWith([])).to.be.true; }); it("filterSelected should be called", function() {