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 d0a16f11ea..017fc65081 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,9 +7,11 @@ ['$scope', '$rootScope', '$state', '$stateParams', 'GroupList', 'InventoryUpdate', 'GroupsService', 'CancelSourceUpdate', 'rbacUiControlService', 'GetBasePath', 'GetHostsStatusMsg', 'Dataset', 'Find', 'QuerySet', 'inventoryData', 'canAdd', + 'InventoryHostsStrings', function($scope, $rootScope, $state, $stateParams, GroupList, InventoryUpdate, GroupsService, CancelSourceUpdate, rbacUiControlService, GetBasePath, - GetHostsStatusMsg, Dataset, Find, qs, inventoryData, canAdd){ + GetHostsStatusMsg, Dataset, Find, qs, inventoryData, canAdd, + InventoryHostsStrings){ let list = GroupList; @@ -20,6 +22,10 @@ $scope.canAdhoc = inventoryData.summary_fields.user_capabilities.adhoc; $scope.canAdd = canAdd; + $scope.strings = { + deleteModal: {} + }; + // Search init $scope.list = list; $scope[`${list.iterator}_dataset`] = Dataset.data; @@ -89,26 +95,58 @@ }; $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 = $scope.toDelete.total_groups === 1 ? InventoryHostsStrings.get('filter.GROUP') : InventoryHostsStrings.get('filter.GROUPS'); + $scope.strings.deleteModal.host = $scope.toDelete.total_hosts === 1 ? InventoryHostsStrings.get('filter.HOST') : InventoryHostsStrings.get('filter.HOSTS'); + + if($scope.toDelete.total_groups > 1 && $scope.toDelete.total_hosts > 1) { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('filter.DELETEGROUPSHOSTS'); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('filter.PROMOTEGROUPSHOSTS'); + } + else if($scope.toDelete.total_groups > 1 && $scope.toDelete.total_hosts === 1) { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('filter.DELETEGROUPSHOST'); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('filter.PROMOTEGROUPSHOST'); + } + else if($scope.toDelete.total_groups === 1 && $scope.toDelete.total_hosts > 1) { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('filter.DELETEGROUPHOSTS'); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('filter.PROMOTEGROUPHOSTS'); + } + else if($scope.toDelete.total_groups === 1 && $scope.toDelete.total_hosts === 1) { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('filter.DELETEGROUPHOST'); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('filter.PROMOTEGROUPHOST'); + } + else if($scope.toDelete.total_groups === 0) { + if($scope.toDelete.total_hosts > 1) { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('filter.DELETEHOSTS'); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('filter.PROMOTEHOSTS'); + } + else { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('filter.DELETEHOST'); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('filter.PROMOTEHOST'); + } + } + else if($scope.toDelete.total_hosts === 0) { + if($scope.toDelete.total_groups > 1) { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('filter.DELETEGROUPS'); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('filter.PROMOTEGROUPS'); + } + else { + $scope.strings.deleteModal.deleteGroupsHosts = InventoryHostsStrings.get('filter.DELETEGROUP'); + $scope.strings.deleteModal.promoteGroupsHosts = InventoryHostsStrings.get('filter.PROMOTEGROUP'); + } + } + } + $('#group-delete-modal').modal('show'); }; $scope.confirmDelete = function(){ - - // Bind an even listener for the modal closing. Trying to $state.go() before the modal closes - // will mean that these two things are running async and the modal may not finish closing before - // the state finishes transitioning. - $('#group-delete-modal').off('hidden.bs.modal').on('hidden.bs.modal', function () { - // Remove the event handler so that we don't end up with multiple bindings - $('#group-delete-modal').off('hidden.bs.modal'); - // Reload the inventory manage page and show that the group has been removed - $state.go('.', null, {reload: true}); - }); - let reloadListStateParams = null; if($scope.groups.length === 1 && $state.params.group_search && !_.isEmpty($state.params.group_search.page) && $state.params.group_search.page !== '1') { 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 6b2a01a971..68056e0ed7 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 @@ -21,42 +21,20 @@
Deleting group {{ toDelete.name }}.
-