From 2bc6521eee158eb3fa2b16179c25f67082540037 Mon Sep 17 00:00:00 2001 From: Jake McDermott Date: Thu, 5 Dec 2019 16:57:09 -0500 Subject: [PATCH] Use related hosts and group counts for delete modal --- .../groups/list/groups-list.controller.js | 74 +++++++++++-------- .../groups/list/groups-list.partial.html | 10 +-- 2 files changed, 49 insertions(+), 35 deletions(-) diff --git a/awx/ui/client/src/inventories-hosts/inventories/related/groups/list/groups-list.controller.js b/awx/ui/client/src/inventories-hosts/inventories/related/groups/list/groups-list.controller.js index 866547b495..2ab3d1656a 100644 --- a/awx/ui/client/src/inventories-hosts/inventories/related/groups/list/groups-list.controller.js +++ b/awx/ui/client/src/inventories-hosts/inventories/related/groups/list/groups-list.controller.js @@ -7,11 +7,11 @@ ['$scope', '$state', '$stateParams', 'listDefinition', 'InventoryUpdate', 'GroupsService', 'CancelSourceUpdate', 'GetHostsStatusMsg', 'Dataset', 'inventoryData', 'canAdd', - 'InventoryHostsStrings', '$transitions', + 'InventoryHostsStrings', '$transitions', 'GetBasePath', 'Rest', function($scope, $state, $stateParams, listDefinition, InventoryUpdate, GroupsService, CancelSourceUpdate, GetHostsStatusMsg, Dataset, inventoryData, canAdd, - InventoryHostsStrings, $transitions){ + InventoryHostsStrings, $transitions, GetBasePath, Rest){ let list = listDefinition; @@ -90,35 +90,51 @@ $state.go('inventories.edit.groups.edit.nested_groups', {group_id: id}); }; $scope.deleteGroup = function(group){ - $scope.toDelete = {}; - $scope.strings.deleteModal = {}; - angular.extend($scope.toDelete, group); - if($scope.toDelete.total_groups === 0 && $scope.toDelete.total_hosts === 0) { - // This group doesn't have any child groups or hosts - the user is just trying to delete - // the group - $scope.deleteOption = "delete"; - } - else { - $scope.strings.deleteModal.group = InventoryHostsStrings.get('deletegroup.GROUP', $scope.toDelete.total_groups); - $scope.strings.deleteModal.host = InventoryHostsStrings.get('deletegroup.HOST', $scope.toDelete.total_hosts); + const promises = []; + + Rest.setUrl(group.related.hosts); + promises.push(Rest.get()); + + Rest.setUrl(group.related.children); + promises.push(Rest.get()); + + Promise.all(promises) + .then(([hostResponse, groupResponse]) => { + $scope.toDelete = {}; + $scope.strings.deleteModal = {}; + $scope.toDelete.hostCount = _.get(hostResponse, ['data', 'count'], 0); + $scope.toDelete.groupCount = _.get(groupResponse, ['data', 'count'], 0); + angular.extend($scope.toDelete, group); + + if($scope.toDelete.groupCount === 0 && $scope.toDelete.hostCount === 0) { + // This group doesn't have any child groups or hosts - the user is just trying to delete + // the group + $scope.deleteOption = "delete"; + } + else { + $scope.strings.deleteModal.group = InventoryHostsStrings.get('deletegroup.GROUP', $scope.toDelete.groupCount); + $scope.strings.deleteModal.host = InventoryHostsStrings.get('deletegroup.HOST', $scope.toDelete.hostCount); + + if($scope.toDelete.groupCount === 0 || $scope.toDelete.groupCount === 0) { + if($scope.toDelete.groupCount === 0) { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('deletegroup.DELETE_HOST', $scope.toDelete.hostCount); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('deletegroup.PROMOTE_HOST', $scope.toDelete.hostCount); + } + else if($scope.toDelete.hostCount === 0) { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('deletegroup.DELETE_GROUP', $scope.toDelete.groupCount); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('deletegroup.PROMOTE_GROUP', $scope.toDelete.groupCount); + } + } + else { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('deletegroup.DELETE_GROUPS_AND_HOSTS', {groups: $scope.toDelete.groupCount, hosts: $scope.toDelete.hostCount}); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('deletegroup.PROMOTE_GROUPS_AND_HOSTS', {groups: $scope.toDelete.groupCount, hosts: $scope.toDelete.hostCount}); + } + } + + $('#group-delete-modal').modal('show'); + }); - if($scope.toDelete.total_groups === 0 || $scope.toDelete.total_hosts === 0) { - if($scope.toDelete.total_groups === 0) { - $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('deletegroup.DELETE_HOST', $scope.toDelete.total_hosts); - $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('deletegroup.PROMOTE_HOST', $scope.toDelete.total_hosts); - } - else if($scope.toDelete.total_hosts === 0) { - $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('deletegroup.DELETE_GROUP', $scope.toDelete.total_groups); - $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('deletegroup.PROMOTE_GROUP', $scope.toDelete.total_groups); - } - } - else { - $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('deletegroup.DELETE_GROUPS_AND_HOSTS', {groups: $scope.toDelete.total_groups, hosts: $scope.toDelete.total_hosts}); - $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('deletegroup.PROMOTE_GROUPS_AND_HOSTS', {groups: $scope.toDelete.total_groups, hosts: $scope.toDelete.total_hosts}); - } - } - $('#group-delete-modal').modal('show'); }; $scope.confirmDelete = function(){ let reloadListStateParams = null; diff --git a/awx/ui/client/src/inventories-hosts/inventories/related/groups/list/groups-list.partial.html b/awx/ui/client/src/inventories-hosts/inventories/related/groups/list/groups-list.partial.html index 23579b2285..f9d3da3925 100644 --- a/awx/ui/client/src/inventories-hosts/inventories/related/groups/list/groups-list.partial.html +++ b/awx/ui/client/src/inventories-hosts/inventories/related/groups/list/groups-list.partial.html @@ -18,12 +18,10 @@