|
|
|
|
@ -4,10 +4,10 @@ import coreModule from 'app/core/core_module'; |
|
|
|
|
import _ from 'lodash'; |
|
|
|
|
|
|
|
|
|
export default class UserGroupDetailsCtrl { |
|
|
|
|
userGroup: any; |
|
|
|
|
userGroupMembers = []; |
|
|
|
|
user: any; |
|
|
|
|
usersSearchCache = []; |
|
|
|
|
userGroup: UserGroup; |
|
|
|
|
userGroupMembers: User[] = []; |
|
|
|
|
userName = ''; |
|
|
|
|
usersSearchCache: User[] = []; |
|
|
|
|
searchUsers: any; |
|
|
|
|
|
|
|
|
|
constructor(private $scope, private $http, private backendSrv, private $routeParams) { |
|
|
|
|
@ -15,17 +15,21 @@ export default class UserGroupDetailsCtrl { |
|
|
|
|
this.usersSearchCache = []; |
|
|
|
|
this.searchUsers = (queryStr, callback) => { |
|
|
|
|
if (this.usersSearchCache.length > 0) { |
|
|
|
|
callback(_.map(this.usersSearchCache, (user) => { return user.login + ' - ' + user.email; })); |
|
|
|
|
callback(_.map(this.usersSearchCache, this.userKey)); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.backendSrv.get('/api/users/search?perpage=10&page=1&query=' + queryStr).then(result => { |
|
|
|
|
this.usersSearchCache = result.users; |
|
|
|
|
callback(_.map(result.users, (user) => { return user.login + ' - ' + user.email; })); |
|
|
|
|
callback(_.map(result.users, this.userKey)); |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private userKey(user: User) { |
|
|
|
|
return user.login + ' - ' + user.email; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
get() { |
|
|
|
|
if (this.$routeParams && this.$routeParams.id) { |
|
|
|
|
this.backendSrv.get(`/api/user-groups/${this.$routeParams.id}`) |
|
|
|
|
@ -39,7 +43,7 @@ export default class UserGroupDetailsCtrl { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
removeUserGroupMember(userGroupMember) { |
|
|
|
|
removeUserGroupMember(userGroupMember: UserGroupMember) { |
|
|
|
|
this.$scope.appEvent('confirm-modal', { |
|
|
|
|
title: 'Remove Member', |
|
|
|
|
text: 'Are you sure you want to remove ' + userGroupMember.name + ' from this group?', |
|
|
|
|
@ -51,7 +55,7 @@ export default class UserGroupDetailsCtrl { |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
removeMemberConfirmed(userGroupMember) { |
|
|
|
|
removeMemberConfirmed(userGroupMember: UserGroupMember) { |
|
|
|
|
this.backendSrv.delete(`/api/user-groups/${this.$routeParams.id}/members/${userGroupMember.userId}`) |
|
|
|
|
.then(this.get.bind(this)); |
|
|
|
|
} |
|
|
|
|
@ -65,14 +69,31 @@ export default class UserGroupDetailsCtrl { |
|
|
|
|
addMember() { |
|
|
|
|
if (!this.$scope.addMemberForm.$valid) { return; } |
|
|
|
|
|
|
|
|
|
const login = this.user.name.split(' - ')[0]; |
|
|
|
|
const login = this.userName.split(' - ')[0]; |
|
|
|
|
const memberToAdd = _.find(this.usersSearchCache, ['login', login]); |
|
|
|
|
this.backendSrv.post(`/api/user-groups/${this.$routeParams.id}/members`, {userId: memberToAdd.id}).then(() => { |
|
|
|
|
this.user.name = ''; |
|
|
|
|
this.userName = ''; |
|
|
|
|
this.get(); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export interface UserGroup { |
|
|
|
|
id: number; |
|
|
|
|
name: string; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export interface User { |
|
|
|
|
id: number; |
|
|
|
|
name: string; |
|
|
|
|
login: string; |
|
|
|
|
email: string; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export interface UserGroupMember { |
|
|
|
|
userId: number; |
|
|
|
|
name: string; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
coreModule.controller('UserGroupDetailsCtrl', UserGroupDetailsCtrl); |
|
|
|
|
|
|
|
|
|
|