From 4df448567b4394306a4686b982ea03848f80d800 Mon Sep 17 00:00:00 2001 From: Silviu Popa Date: Tue, 30 Mar 2021 12:59:54 +0300 Subject: [PATCH] [ACA-4220] - preselect initator values by username (#6860) * [ACA-4220] - preselect initator values by username * add unit test * fix demoshell process filters * revert app.config * fix build Co-authored-by: Silviu Constantin Popa --- .../cloud/processes-cloud-demo.component.html | 2 +- .../cloud/processes-cloud-demo.component.ts | 11 ++--------- .../lib/people/components/people-cloud.component.ts | 1 - .../edit-process-filter-cloud.component.html | 2 +- .../edit-process-filter-cloud.component.spec.ts | 11 +++++++++++ .../components/edit-process-filter-cloud.component.ts | 9 ++++++++- .../models/process-filter-cloud.model.ts | 3 +-- 7 files changed, 24 insertions(+), 15 deletions(-) diff --git a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.html b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.html index 63e4a7c24a..7db338db17 100644 --- a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.html +++ b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.html @@ -15,7 +15,7 @@ class="app-cloud-layout-overflow" [appName]="editedFilter.appName" [appVersion]="editedFilter.appVersion" - [initiator]="getInitiatorValue()" + [initiator]="editedFilter.initiator" [processDefinitionId]="editedFilter.processDefinitionId" [processDefinitionName]="editedFilter.processDefinitionName" [processDefinitionKey]="editedFilter.processDefinitionKey" diff --git a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts index ec03653bfd..c730897de4 100644 --- a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts +++ b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts @@ -16,7 +16,7 @@ */ import { Component, OnInit, OnDestroy } from '@angular/core'; -import { EditProcessFilterCloudComponent, ProcessFilterAction, ProcessFilterCloudModel, ProcessFilterCloudService } from '@alfresco/adf-process-services-cloud'; +import { EditProcessFilterCloudComponent, ProcessFilterAction, ProcessFilterCloudModel } from '@alfresco/adf-process-services-cloud'; import { ActivatedRoute, Router } from '@angular/router'; import { UserPreferencesService, DataCellEvent } from '@alfresco/adf-core'; import { CloudLayoutService, CloudServiceSettings } from './services/cloud-layout.service'; @@ -60,7 +60,6 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy { private router: Router, private cloudLayoutService: CloudLayoutService, private cloudProcessFiltersService: CloudProcessFiltersService, - private processFilterCloudService: ProcessFilterCloudService, private userPreference: UserPreferencesService) { } @@ -102,10 +101,6 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy { } } - getInitiatorValue(): string { - return this.editedFilter.initiator?.map(initiator => initiator.username).join(','); - } - onChangePageSize(event: Pagination) { this.userPreference.paginationSize = event.maxItems; } @@ -181,9 +176,7 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy { private loadFilter(model: ProcessFilterCloudModel) { if (model && model.appName && model.id) { - this.processFilterCloudService.getFilterById(model.appName, model.id).subscribe(filter => { - this.editedFilter = Object.assign({}, filter, model); - }); + this.editedFilter = model; } } } diff --git a/lib/process-services-cloud/src/lib/people/components/people-cloud.component.ts b/lib/process-services-cloud/src/lib/people/components/people-cloud.component.ts index 03fa20a0f8..f3feec5197 100644 --- a/lib/process-services-cloud/src/lib/people/components/people-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/people/components/people-cloud.component.ts @@ -157,7 +157,6 @@ export class PeopleCloudComponent implements OnInit, OnChanges, OnDestroy { } ngOnChanges(changes: SimpleChanges): void { - if (this.valueChanged(changes.preSelectUsers) || this.valueChanged(changes.mode) || this.valueChanged(changes.validate) diff --git a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html index 1078503e5c..b4a235ee88 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html +++ b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.html @@ -89,7 +89,7 @@
{ name: 'FakeRunningProcess', icon: 'adjust', id: 'mock-process-filter-id', + initiator: 'user1,user2', status: 'RUNNING', appName: 'mock-app-name', appVersion: 1, @@ -893,5 +894,15 @@ describe('EditProcessFilterCloudComponent', () => { }); }); + + it('should build initiator as object array', () => { + component.appName = 'fake'; + component.filterProperties = ['appName', 'initiator']; + const taskFilterIdChange = new SimpleChange(undefined, 'mock-task-filter-id', true); + component.ngOnChanges({ 'id': taskFilterIdChange }); + fixture.detectChanges(); + + expect(component.initiatorOptions).toEqual([ { username: 'user1' }, { username: 'user2'} ]); + }); }); }); diff --git a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts index b44b73e002..6ae810578e 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/components/edit-process-filter-cloud.component.ts @@ -151,6 +151,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes processFilterActions: ProcessFilterAction[] = []; toggleFilterActions: boolean = false; appVersionOptions: ProcessFilterOptions[] = []; + initiatorOptions: IdentityUserModel[] = []; private onDestroy$ = new Subject(); isLoading: boolean = false; @@ -267,6 +268,12 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes this.getAppVersionOptions(); } + if (this.filterProperties.includes('initiator')) { + this.initiatorOptions = !!this.processFilter.initiator + ? this.processFilter.initiator.split(',').map( username => Object.assign({}, { username: username })) + : []; + } + const defaultProperties = this.createProcessFilterProperties(this.processFilter); let filteredProperties = defaultProperties.filter((filterProperty) => this.isValidProperty(this.filterProperties, filterProperty.key)); @@ -368,7 +375,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes } onChangedUser(users: IdentityUserModel[], processProperty: ProcessFilterProperties) { - this.getPropertyController(processProperty).setValue(users); + this.getPropertyController(processProperty).setValue(users.map( user => user.username).join(',')); } hasError(property: ProcessFilterProperties): boolean { diff --git a/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts b/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts index 2a03cb8bb2..55108859b8 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/models/process-filter-cloud.model.ts @@ -17,7 +17,6 @@ import { DateCloudFilterType } from '../../../models/date-cloud-filter.model'; import { DateRangeFilterService } from '../../../common/date-range-filter/date-range-filter.service'; import { ComponentSelectionMode } from '../../../types'; -import { IdentityUserModel } from '@alfresco/adf-core'; export class ProcessFilterCloudModel { @@ -32,7 +31,7 @@ export class ProcessFilterCloudModel { appVersion?: number | number[]; processName: string; processInstanceId: string; - initiator: IdentityUserModel[]; + initiator: string; status: string; sort: string; order: string;