filter the preselectuser in multiselection mode (#4173)

This commit is contained in:
Maurizio Vitale 2019-01-17 10:25:10 +00:00 committed by Eugenio Romano
parent b7284051ab
commit 6bf2558877

View File

@ -75,10 +75,9 @@ export class PeopleCloudComponent implements OnInit {
@ViewChild('userInput') @ViewChild('userInput')
private userInput: ElementRef<HTMLInputElement>; private userInput: ElementRef<HTMLInputElement>;
private _selectedUsers: IdentityUserModel[] = [];
private _searchUsers: IdentityUserModel[] = []; private _searchUsers: IdentityUserModel[] = [];
private selectedUsers: BehaviorSubject<IdentityUserModel[]>; private selectedUsersSubject: BehaviorSubject<IdentityUserModel[]>;
private searchUsers: BehaviorSubject<IdentityUserModel[]>; private searchUsersSubject: BehaviorSubject<IdentityUserModel[]>;
selectedUsers$: Observable<IdentityUserModel[]>; selectedUsers$: Observable<IdentityUserModel[]>;
searchUsers$: Observable<IdentityUserModel[]>; searchUsers$: Observable<IdentityUserModel[]>;
@ -91,13 +90,14 @@ export class PeopleCloudComponent implements OnInit {
isFocused: boolean; isFocused: boolean;
constructor(private identityUserService: IdentityUserService) { constructor(private identityUserService: IdentityUserService) {
this.selectedUsers = new BehaviorSubject<IdentityUserModel[]>(this._selectedUsers); this.searchUsersSubject = new BehaviorSubject<IdentityUserModel[]>(this._searchUsers);
this.searchUsers = new BehaviorSubject<IdentityUserModel[]>(this._searchUsers); this.searchUsers$ = this.searchUsersSubject.asObservable();
this.selectedUsers$ = this.selectedUsers.asObservable();
this.searchUsers$ = this.searchUsers.asObservable();
} }
ngOnInit() { ngOnInit() {
this.selectedUsersSubject = new BehaviorSubject<IdentityUserModel[]>(this.preSelectUsers);
this.selectedUsers$ = this.selectedUsersSubject.asObservable();
if (this.hasPreSelectUsers()) { if (this.hasPreSelectUsers()) {
this.loadPreSelectUsers(); this.loadPreSelectUsers();
} }
@ -147,7 +147,7 @@ export class PeopleCloudComponent implements OnInit {
}) })
).subscribe((user) => { ).subscribe((user) => {
this._searchUsers.push(user); this._searchUsers.push(user);
this.searchUsers.next(this._searchUsers); this.searchUsersSubject.next(this._searchUsers);
}); });
} }
@ -164,9 +164,9 @@ export class PeopleCloudComponent implements OnInit {
} }
private isUserAlreadySelected(user: IdentityUserModel): boolean { private isUserAlreadySelected(user: IdentityUserModel): boolean {
if (this._selectedUsers && this._selectedUsers.length > 0) { if (this.preSelectUsers && this.preSelectUsers.length > 0) {
const result = this._selectedUsers.find((selectedUser) => { const result = this.preSelectUsers.find((selectedUser) => {
return selectedUser.id === user.id; return selectedUser.id === user.id || selectedUser.email === user.email;
}); });
return !!result; return !!result;
@ -175,12 +175,7 @@ export class PeopleCloudComponent implements OnInit {
} }
private loadPreSelectUsers() { private loadPreSelectUsers() {
if (this.isMultipleMode()) { if (!this.isMultipleMode()) {
if (this.preSelectUsers && this.preSelectUsers.length > 0) {
this.selectedUsers.next(this.preSelectUsers);
}
} else {
this.selectedUsers.next(this.preSelectUsers);
this.searchUserCtrl.setValue(this.preSelectUsers[0]); this.searchUserCtrl.setValue(this.preSelectUsers[0]);
} }
} }
@ -197,8 +192,8 @@ export class PeopleCloudComponent implements OnInit {
if (this.isMultipleMode()) { if (this.isMultipleMode()) {
if (!this.isUserAlreadySelected(user)) { if (!this.isUserAlreadySelected(user)) {
this._selectedUsers.push(user); this.preSelectUsers.push(user);
this.selectedUsers.next(this._selectedUsers); this.selectedUsersSubject.next(this.preSelectUsers);
this.selectUser.emit(user); this.selectUser.emit(user);
} }
@ -214,9 +209,9 @@ export class PeopleCloudComponent implements OnInit {
onRemove(user: IdentityUserModel) { onRemove(user: IdentityUserModel) {
this.removeUser.emit(user); this.removeUser.emit(user);
const indexToRemove = this._selectedUsers.findIndex((selectedUser) => { return selectedUser.id === user.id; }); const indexToRemove = this.preSelectUsers.findIndex((selectedUser) => { return selectedUser.id === user.id; });
this._selectedUsers.splice(indexToRemove, 1); this.preSelectUsers.splice(indexToRemove, 1);
this.selectedUsers.next(this._selectedUsers); this.selectedUsersSubject.next(this.preSelectUsers);
} }
getDisplayName(user): string { getDisplayName(user): string {
@ -233,7 +228,7 @@ export class PeopleCloudComponent implements OnInit {
private resetSearchUsers() { private resetSearchUsers() {
this._searchUsers = []; this._searchUsers = [];
this.searchUsers.next(this._searchUsers); this.searchUsersSubject.next(this._searchUsers);
} }
private setError() { private setError() {