[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 <silviucpopa@L3700101120.ness.com>
This commit is contained in:
Silviu Popa
2021-03-30 12:59:54 +03:00
committed by GitHub
parent 452fc3c278
commit 4df448567b
7 changed files with 24 additions and 15 deletions

View File

@@ -15,7 +15,7 @@
class="app-cloud-layout-overflow" class="app-cloud-layout-overflow"
[appName]="editedFilter.appName" [appName]="editedFilter.appName"
[appVersion]="editedFilter.appVersion" [appVersion]="editedFilter.appVersion"
[initiator]="getInitiatorValue()" [initiator]="editedFilter.initiator"
[processDefinitionId]="editedFilter.processDefinitionId" [processDefinitionId]="editedFilter.processDefinitionId"
[processDefinitionName]="editedFilter.processDefinitionName" [processDefinitionName]="editedFilter.processDefinitionName"
[processDefinitionKey]="editedFilter.processDefinitionKey" [processDefinitionKey]="editedFilter.processDefinitionKey"

View File

@@ -16,7 +16,7 @@
*/ */
import { Component, OnInit, OnDestroy } from '@angular/core'; 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 { ActivatedRoute, Router } from '@angular/router';
import { UserPreferencesService, DataCellEvent } from '@alfresco/adf-core'; import { UserPreferencesService, DataCellEvent } from '@alfresco/adf-core';
import { CloudLayoutService, CloudServiceSettings } from './services/cloud-layout.service'; import { CloudLayoutService, CloudServiceSettings } from './services/cloud-layout.service';
@@ -60,7 +60,6 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy {
private router: Router, private router: Router,
private cloudLayoutService: CloudLayoutService, private cloudLayoutService: CloudLayoutService,
private cloudProcessFiltersService: CloudProcessFiltersService, private cloudProcessFiltersService: CloudProcessFiltersService,
private processFilterCloudService: ProcessFilterCloudService,
private userPreference: UserPreferencesService) { 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) { onChangePageSize(event: Pagination) {
this.userPreference.paginationSize = event.maxItems; this.userPreference.paginationSize = event.maxItems;
} }
@@ -181,9 +176,7 @@ export class ProcessesCloudDemoComponent implements OnInit, OnDestroy {
private loadFilter(model: ProcessFilterCloudModel) { private loadFilter(model: ProcessFilterCloudModel) {
if (model && model.appName && model.id) { if (model && model.appName && model.id) {
this.processFilterCloudService.getFilterById(model.appName, model.id).subscribe(filter => { this.editedFilter = model;
this.editedFilter = Object.assign({}, filter, model);
});
} }
} }
} }

View File

@@ -157,7 +157,6 @@ export class PeopleCloudComponent implements OnInit, OnChanges, OnDestroy {
} }
ngOnChanges(changes: SimpleChanges): void { ngOnChanges(changes: SimpleChanges): void {
if (this.valueChanged(changes.preSelectUsers) if (this.valueChanged(changes.preSelectUsers)
|| this.valueChanged(changes.mode) || this.valueChanged(changes.mode)
|| this.valueChanged(changes.validate) || this.valueChanged(changes.validate)

View File

@@ -89,7 +89,7 @@
<div fxFlex="23%" *ngIf="processFilterProperty.type === 'people'"> <div fxFlex="23%" *ngIf="processFilterProperty.type === 'people'">
<adf-cloud-people <adf-cloud-people
[preSelectUsers]="processFilterProperty.value" [preSelectUsers]="initiatorOptions"
[title]="processFilterProperty.label" [title]="processFilterProperty.label"
[validate]="true" [validate]="true"
[appName]="appName" [appName]="appName"

View File

@@ -54,6 +54,7 @@ describe('EditProcessFilterCloudComponent', () => {
name: 'FakeRunningProcess', name: 'FakeRunningProcess',
icon: 'adjust', icon: 'adjust',
id: 'mock-process-filter-id', id: 'mock-process-filter-id',
initiator: 'user1,user2',
status: 'RUNNING', status: 'RUNNING',
appName: 'mock-app-name', appName: 'mock-app-name',
appVersion: 1, 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'} ]);
});
}); });
}); });

View File

@@ -151,6 +151,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
processFilterActions: ProcessFilterAction[] = []; processFilterActions: ProcessFilterAction[] = [];
toggleFilterActions: boolean = false; toggleFilterActions: boolean = false;
appVersionOptions: ProcessFilterOptions[] = []; appVersionOptions: ProcessFilterOptions[] = [];
initiatorOptions: IdentityUserModel[] = [];
private onDestroy$ = new Subject<boolean>(); private onDestroy$ = new Subject<boolean>();
isLoading: boolean = false; isLoading: boolean = false;
@@ -267,6 +268,12 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
this.getAppVersionOptions(); 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); const defaultProperties = this.createProcessFilterProperties(this.processFilter);
let filteredProperties = defaultProperties.filter((filterProperty) => this.isValidProperty(this.filterProperties, filterProperty.key)); 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) { onChangedUser(users: IdentityUserModel[], processProperty: ProcessFilterProperties) {
this.getPropertyController(processProperty).setValue(users); this.getPropertyController(processProperty).setValue(users.map( user => user.username).join(','));
} }
hasError(property: ProcessFilterProperties): boolean { hasError(property: ProcessFilterProperties): boolean {

View File

@@ -17,7 +17,6 @@
import { DateCloudFilterType } from '../../../models/date-cloud-filter.model'; import { DateCloudFilterType } from '../../../models/date-cloud-filter.model';
import { DateRangeFilterService } from '../../../common/date-range-filter/date-range-filter.service'; import { DateRangeFilterService } from '../../../common/date-range-filter/date-range-filter.service';
import { ComponentSelectionMode } from '../../../types'; import { ComponentSelectionMode } from '../../../types';
import { IdentityUserModel } from '@alfresco/adf-core';
export class ProcessFilterCloudModel { export class ProcessFilterCloudModel {
@@ -32,7 +31,7 @@ export class ProcessFilterCloudModel {
appVersion?: number | number[]; appVersion?: number | number[];
processName: string; processName: string;
processInstanceId: string; processInstanceId: string;
initiator: IdentityUserModel[]; initiator: string;
status: string; status: string;
sort: string; sort: string;
order: string; order: string;