[ADF-3629] Fix involved user bug on People Widget (#3858)

This commit is contained in:
davidcanonieto
2018-10-04 11:33:07 +01:00
committed by Eugenio Romano
parent 54cca45ec1
commit 67785cba54
3 changed files with 29 additions and 8 deletions

View File

@@ -13,8 +13,11 @@
[formControl]="searchTerm"
placeholder="{{field.placeholder}}"
[matAutocomplete]="auto">
<mat-autocomplete class="adf-people-widget-list" #auto="matAutocomplete" (optionSelected)="onItemSelect($event.option.value)">
<mat-option *ngFor="let user of users$ | async; let i = index" [value]="getDisplayName(user)">
<mat-autocomplete class="adf-people-widget-list"
#auto="matAutocomplete"
(optionSelected)="onItemSelect($event.option.value)"
[displayWith]="getDisplayName">
<mat-option *ngFor="let user of users$ | async; let i = index" [value]="user">
<div class="adf-people-widget-row" id="adf-people-widget-user-{{i}}">
<div [outerHTML]="user | usernameInitials:'adf-people-widget-pic'"></div>
<div *ngIf="user.pictureId" class="adf-people-widget-image-row">

View File

@@ -143,6 +143,22 @@ describe('PeopleWidgetComponent', () => {
expect(widget.groupId).toBe('<id>');
});
it('should display involved user in task form', async() => {
widget.field.value = new UserProcessModel({
id: 'people-id',
firstName: 'John',
lastName: 'Doe',
email: 'john@test.com'
});
widget.ngOnInit();
const involvedUser = fixture.debugElement.nativeElement.querySelector('input[data-automation-id="adf-people-search-input"]');
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(involvedUser.value).toBe('John Doe');
});
});
describe('when template is ready', () => {
let fakeUserResult = [

View File

@@ -53,7 +53,7 @@ export class PeopleWidgetComponent extends WidgetComponent implements OnInit {
searchTerm = new FormControl();
errorMsg = '';
searchTerms$: Observable<string> = this.searchTerm.valueChanges;
searchTerms$: Observable<any> = this.searchTerm.valueChanges;
users$ = this.searchTerms$.pipe(
tap(() => {
@@ -61,7 +61,8 @@ export class PeopleWidgetComponent extends WidgetComponent implements OnInit {
}),
distinctUntilChanged(),
switchMap((searchTerm) => {
return this.formService.getWorkflowUsers(searchTerm, this.groupId)
let value = searchTerm.email ? this.getDisplayName(searchTerm) : searchTerm;
return this.formService.getWorkflowUsers(value, this.groupId)
.pipe(
catchError(err => {
this.errorMsg = err.message;
@@ -70,7 +71,7 @@ export class PeopleWidgetComponent extends WidgetComponent implements OnInit {
);
}),
map((list: UserProcessModel[]) => {
let value = this.searchTerm.value;
let value = this.searchTerm.value.email ? this.getDisplayName(this.searchTerm.value) : this.searchTerm.value;
this.checkUserAndValidateForm(list, value);
return list;
})
@@ -83,7 +84,9 @@ export class PeopleWidgetComponent extends WidgetComponent implements OnInit {
ngOnInit() {
if (this.field) {
this.searchTerm.setValue(this.getDisplayName(this.field.value));
if (this.field.value) {
this.searchTerm.setValue(this.field.value);
}
if (this.field.readOnly) {
this.searchTerm.disable();
}
@@ -128,10 +131,9 @@ export class PeopleWidgetComponent extends WidgetComponent implements OnInit {
return '';
}
onItemSelect(item) {
onItemSelect(item: UserProcessModel) {
if (item) {
this.field.value = item;
this.searchTerm.setValue(item);
}
}
}