diff --git a/awx/ui/client/src/access/add-rbac-resource/rbac-resource.controller.js b/awx/ui/client/src/access/add-rbac-resource/rbac-resource.controller.js index e40589a3f6..6e41696faa 100644 --- a/awx/ui/client/src/access/add-rbac-resource/rbac-resource.controller.js +++ b/awx/ui/client/src/access/add-rbac-resource/rbac-resource.controller.js @@ -62,13 +62,13 @@ export default ['$rootScope', '$scope', 'GetBasePath', 'Rest', '$q', 'Wait', 'Pr user.username; } - if (item.isSelected) { + if (value.isSelected) { if (item.type === 'user') { item.name = buildName(item); } scope.allSelected.push(item); } else { - scope.allSelected = _.remove(scope.allSelected, { id: item.id }); + _.remove(scope.allSelected, { id: item.id }); } }); diff --git a/awx/ui/client/src/access/add-rbac-resource/rbac-resource.partial.html b/awx/ui/client/src/access/add-rbac-resource/rbac-resource.partial.html index c9ca9c5e51..3047469ca7 100644 --- a/awx/ui/client/src/access/add-rbac-resource/rbac-resource.partial.html +++ b/awx/ui/client/src/access/add-rbac-resource/rbac-resource.partial.html @@ -44,10 +44,10 @@ -
+
-
+
diff --git a/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.controller.js b/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.controller.js index edbd5eaf6f..a97bd0218c 100644 --- a/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.controller.js +++ b/awx/ui/client/src/access/add-rbac-user-team/rbac-user-team.controller.js @@ -127,7 +127,7 @@ function(rootScope, scope, $state, i18n, CreateSelect2, GetBasePath, Rest, $q, W let resourceType = scope.currentTab(), item = value.value; - if (item.isSelected) { + if (value.isSelected) { scope.selected[resourceType][item.id] = item; scope.selected[resourceType][item.id].roles = []; aggregateKey(item, resourceType); diff --git a/awx/ui/client/src/access/rbac-multiselect/permissionsUsers.list.js b/awx/ui/client/src/access/rbac-multiselect/permissionsUsers.list.js index 9769df3506..39b083f06c 100644 --- a/awx/ui/client/src/access/rbac-multiselect/permissionsUsers.list.js +++ b/awx/ui/client/src/access/rbac-multiselect/permissionsUsers.list.js @@ -9,12 +9,6 @@ return { name: 'users', iterator: 'user', - defaultSearchParams: function(term){ - return {or__username__icontains: term, - or__first_name__icontains: term, - or__last_name__icontains: term - }; - }, title: false, listTitleBadge: false, multiSelect: true, diff --git a/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-list.directive.js b/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-list.directive.js index b775dedaca..f339e0e579 100644 --- a/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-list.directive.js +++ b/awx/ui/client/src/access/rbac-multiselect/rbac-multiselect-list.directive.js @@ -122,7 +122,7 @@ export default ['addPermissionsTeamsList', 'addPermissionsUsersList', 'TemplateL }); function isSelected(item){ - if(_.find(scope.allSelected, {id: item.id})){ + if(_.find(scope.allSelected, {id: item.id, type: item.type})){ item.isSelected = true; } return item; diff --git a/awx/ui/client/src/lists/Users.js b/awx/ui/client/src/lists/Users.js index bfff119616..fb84286bfb 100644 --- a/awx/ui/client/src/lists/Users.js +++ b/awx/ui/client/src/lists/Users.js @@ -15,12 +15,6 @@ export default search: { order_by: 'username' }, - defaultSearchParams: function(term){ - return {or__username__icontains: term, - or__first_name__icontains: term, - or__last_name__icontains: term - }; - }, iterator: 'user', selectTitle: i18n._('Add Users'), editTitle: i18n._('Users'), diff --git a/awx/ui/client/src/organizations/linkout/addUsers/addUsers.controller.js b/awx/ui/client/src/organizations/linkout/addUsers/addUsers.controller.js index e576ac5fd2..0a59ddbaef 100644 --- a/awx/ui/client/src/organizations/linkout/addUsers/addUsers.controller.js +++ b/awx/ui/client/src/organizations/linkout/addUsers/addUsers.controller.js @@ -11,10 +11,10 @@ * Controller for handling permissions adding */ -export default ['$scope', '$rootScope', 'ProcessErrors', 'GetBasePath', -'SelectionInit', 'templateUrl', '$state', 'Rest', '$q', 'Wait', '$window', -function($scope, $rootScope, ProcessErrors, GetBasePath, - SelectionInit, templateUrl, $state, Rest, $q, Wait, $window) { +export default ['$scope', '$rootScope', 'ProcessErrors', 'GetBasePath', 'generateList', +'SelectionInit', 'templateUrl', '$state', 'Rest', '$q', 'Wait', '$window', 'QuerySet', 'UserList', +function($scope, $rootScope, ProcessErrors, GetBasePath, generateList, + SelectionInit, templateUrl, $state, Rest, $q, Wait, $window, qs, UserList) { $scope.$on("linkLists", function() { if ($state.current.name.split(".")[1] === "users") { @@ -26,16 +26,59 @@ function($scope, $rootScope, ProcessErrors, GetBasePath, init(); function init(){ - // search init - $scope.list = $scope.$parent.add_user_list; - $scope.add_user_dataset = $scope.$parent.add_user_dataset; - $scope.add_users = $scope.$parent.add_user_dataset.results; + $scope.add_user_default_params = { + order_by: 'username', + page_size: 5 + }; + + $scope.add_user_queryset = { + order_by: 'username', + page_size: 5 + }; + + let list = _.cloneDeep(UserList); + list.basePath = 'users'; + list.iterator = 'add_user'; + list.name = 'add_users'; + list.multiSelect = true; + list.fields.username.ngClick = 'linkoutUser(add_user.id)'; + delete list.actions; + delete list.fieldActions; + + // Fire off the initial search + qs.search(GetBasePath('users'), $scope.add_user_default_params) + .then(function(res) { + $scope.add_user_dataset = res.data; + $scope.add_users = $scope.add_user_dataset.results; + + let html = generateList.build({ + list: list, + mode: 'edit', + title: false + }); + + $scope.list = list; + + $scope.compileList(html); + + $scope.$watchCollection('add_users', function () { + if($scope.selectedItems) { + // Loop across the users and see if any of them should be "checked" + $scope.add_users.forEach(function(row, i) { + if (_.includes($scope.selectedItems, row.id)) { + $scope.add_users[i].isSelected = true; + } + }); + } + }); + + }); $scope.selectedItems = []; $scope.$on('selectedOrDeselected', function(e, value) { let item = value.value; - if (item.isSelected) { + if (value.isSelected) { $scope.selectedItems.push(item.id); } else { diff --git a/awx/ui/client/src/organizations/linkout/addUsers/addUsers.directive.js b/awx/ui/client/src/organizations/linkout/addUsers/addUsers.directive.js index f146149b13..65c721be17 100644 --- a/awx/ui/client/src/organizations/linkout/addUsers/addUsers.directive.js +++ b/awx/ui/client/src/organizations/linkout/addUsers/addUsers.directive.js @@ -7,7 +7,7 @@ /* jshint unused: vars */ import addUsers from './addUsers.controller'; export default - ['Wait', 'templateUrl', '$state', '$view', function(Wait, templateUrl, $state, $view) { + ['Wait', 'templateUrl', '$state', '$view', '$compile', function(Wait, templateUrl, $state, $view, $compile) { return { restrict: 'E', scope: { @@ -48,6 +48,10 @@ export default scope.closeModal(); }); + scope.compileList = function(html) { + $('#add-users-list').append($compile(html)(scope)); + }; + Wait('stop'); window.scrollTo(0,0); diff --git a/awx/ui/client/src/organizations/linkout/addUsers/addUsers.partial.html b/awx/ui/client/src/organizations/linkout/addUsers/addUsers.partial.html index a8a6cbbb81..b7e24e3940 100644 --- a/awx/ui/client/src/organizations/linkout/addUsers/addUsers.partial.html +++ b/awx/ui/client/src/organizations/linkout/addUsers/addUsers.partial.html @@ -15,8 +15,7 @@
-
-
+