WIP: user-picker directive

This commit is contained in:
Daniel Lee
2017-06-08 22:19:11 +02:00
parent 2097ed0bb8
commit bc6aa74439
4 changed files with 82 additions and 24 deletions

View File

@@ -21,8 +21,8 @@
<form name="addMemberForm" class="gf-form-group">
<div class="gf-form">
<span class="gf-form-label width-10">Name</span>
<input type="text" bs-typeahead="ctrl.searchUsers" required ng-model="ctrl.userName" class="gf-form-input max-width-14" >
</div>
<user-picker required user-login="ctrl.userName" user-id="ctrl.userId"></user-picker>
</div>
<div class="gf-form-button-row">
<button type="submit" class="btn btn-success" ng-click="ctrl.addMember()">Add</button>

View File

@@ -7,29 +7,12 @@ export default class UserGroupDetailsCtrl {
userGroup: UserGroup;
userGroupMembers: User[] = [];
userName = '';
usersSearchCache: User[] = [];
searchUsers: any;
userId: number;
navModel: any;
constructor(private $scope, private $http, private backendSrv, private $routeParams, navModelSrv) {
this.navModel = navModelSrv.getOrgNav(3);
this.get();
this.usersSearchCache = [];
this.searchUsers = (queryStr, callback) => {
if (this.usersSearchCache.length > 0) {
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, this.userKey));
});
};
}
private userKey(user: User) {
return user.login + ' - ' + user.email;
}
get() {
@@ -71,9 +54,7 @@ export default class UserGroupDetailsCtrl {
addMember() {
if (!this.$scope.addMemberForm.$valid) { return; }
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.backendSrv.post(`/api/user-groups/${this.$routeParams.id}/members`, {userId: this.userId}).then(() => {
this.userName = '';
this.get();
});