Add user multi-select to group edit dialog

This commit is contained in:
Girish Ramakrishnan
2018-07-24 22:20:00 -07:00
parent dec1931f07
commit 2d44e356d3
3 changed files with 40 additions and 7 deletions

View File

@@ -8,6 +8,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.ready = false;
$scope.users = [];
$scope.usersById = [];
$scope.groups = [];
$scope.groupsById = { };
$scope.config = Client.getConfig();
@@ -286,6 +287,8 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
error: {},
groupInfo: {},
name: '',
selectedUsers: [],
roles: {
canManageUsers: false,
canManageApps: false,
@@ -296,6 +299,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
$scope.groupEdit.error = {};
$scope.groupEdit.groupInfo = groupInfo;
$scope.groupEdit.name = groupInfo.name;
$scope.groupEdit.selectedUsers = groupInfo.userIds.map(function (uid) { return $scope.usersById[uid]; });
for (var i = 0; i < groupInfo.roles.length; i++) {
switch (groupInfo.roles[i]) {
@@ -322,7 +326,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
if ($scope.groupEdit.roles.canManageDomains) roles.push('manage_domains');
Client.updateGroup($scope.groupEdit.groupInfo.id, $scope.groupEdit.name, roles, function (error) {
$scope.groupEdit.busy = false;
$scope.groupEdit.busy = !!error;
if (error && error.statusCode === 409) {
$scope.groupEdit.error.name = 'Name already taken';
@@ -337,9 +341,17 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
}
if (error) return console.error('Unable to edit group.', error.statusCode, error.message);
refresh();
var userIds = $scope.groupEdit.selectedUsers.map(function (u) { return u.id; });
$('#groupEditModal').modal('hide');
Client.setGroupMembers($scope.groupEdit.groupInfo.id, userIds, function (error) {
$scope.groupEdit.busy = false;
if (error) return console.error('Unable to edit group.', error.statusCode, error.message);
refresh();
$('#groupEditModal').modal('hide');
});
});
}
};
@@ -464,7 +476,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
getGroups(function (error, result) {
if (error) return console.error('Unable to get group listing.', error);
$scope.groups = result;
angular.copy(result, $scope.groups);
$scope.groupsById = { };
for (var i = 0; i < result.length; i++) {
$scope.groupsById[result[i].id] = result[i];
@@ -473,7 +485,11 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio
getUsers(function (error, result) {
if (error) return console.error('Unable to get user listing.', error);
$scope.users = result;
angular.copy(result, $scope.users);
$scope.usersById = { };
for (var i = 0; i < result.length; i++) {
$scope.usersById[result[i].id] = result[i];
}
$scope.ready = true;
});