[ACA-3706] implement startedBy process filter property (#6077)

* [ACA-3706] implement startedBy filter property

* fix lint

* [ACA-3706] implement startedBy filter

* replace initiator with people cloud component

* small changes

* fix user selection mode

* revert unnecesary change

* fix e2e

* fix process filter e2e tests

* fix more e2e

Co-authored-by: Silviu Popa <p3701014@L3700101120.ness.com>
This commit is contained in:
Silviu Popa
2020-10-23 12:33:03 +03:00
committed by GitHub
parent a3771a70bd
commit 1f163d58ec
17 changed files with 86 additions and 32 deletions

View File

@@ -14,6 +14,7 @@
"COMPLETED_BY": "Completed By",
"ID": "Id",
"INITIATOR": "Initiator",
"STARTED_BY": "Started by",
"APP_NAME": "Application Name",
"BUSINESS_KEY": "Business Key",
"DESCRIPTION": "Description",
@@ -208,6 +209,7 @@
"PROCESS_NAME": "Process Name",
"APP_VERSION": "AppReleaseVersion",
"STARTED_DATE": "Started Date",
"STARTED_BY": "Started by",
"COMPLETED_DATE": "Completed Date",
"DATE_RANGE": {
"NO_DATE": "No Date",

View File

@@ -72,6 +72,16 @@
[options]="processFilterProperty.dateFilterOptions"
(dateTypeChange)="onDateTypeChange($event, processFilterProperty)"
(dateChanged)="onDateRangeFilterChanged($event, processFilterProperty)"></adf-cloud-date-range-filter>
<div fxFlex="23%" *ngIf="isUserSelectType(processFilterProperty)">
<adf-cloud-people
[preSelectUsers]="processFilterProperty.value"
[title]="processFilterProperty.label"
[validate]="true"
[appName]="appName"
[mode]="processFilterProperty.selectionMode"
(changedUsers)="onChangedUser($event, processFilterProperty)"></adf-cloud-people>
</div>
</ng-container>
</div>
</form>

View File

@@ -19,7 +19,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { SimpleChange } from '@angular/core';
import { By } from '@angular/platform-browser';
import { setupTestBed } from '@alfresco/adf-core';
import { setupTestBed, AlfrescoApiService } from '@alfresco/adf-core';
import { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
import { MatDialog } from '@angular/material/dialog';
import { of } from 'rxjs';
@@ -48,6 +48,7 @@ describe('EditProcessFilterCloudComponent', () => {
let processService: ProcessCloudService;
let getRunningApplicationsSpy: jasmine.Spy;
let getProcessFilterByIdSpy: jasmine.Spy;
let alfrescoApiService: AlfrescoApiService;
const fakeFilter = new ProcessFilterCloudModel({
name: 'FakeRunningProcess',
@@ -61,6 +62,12 @@ describe('EditProcessFilterCloudComponent', () => {
sort: 'id'
});
const mock = {
oauth2Auth: {
callCustomApi: () => Promise.resolve(fakeApplicationInstance)
}
};
setupTestBed({
imports: [
TranslateModule.forRoot(),
@@ -79,6 +86,7 @@ describe('EditProcessFilterCloudComponent', () => {
service = TestBed.inject(ProcessFilterCloudService);
appsService = TestBed.inject(AppsProcessCloudService);
processService = TestBed.inject(ProcessCloudService);
alfrescoApiService = TestBed.inject(AlfrescoApiService);
dialog = TestBed.inject(MatDialog);
spyOn(dialog, 'open').and.returnValue({
afterClosed() {
@@ -91,6 +99,7 @@ describe('EditProcessFilterCloudComponent', () => {
});
getProcessFilterByIdSpy = spyOn(service, 'getFilterById').and.returnValue(of(fakeFilter));
getRunningApplicationsSpy = spyOn(appsService, 'getDeployedApplicationsByStatus').and.returnValue(of(fakeApplicationInstance));
spyOn(alfrescoApiService, 'getInstance').and.returnValue(mock);
fixture.detectChanges();
});

View File

@@ -23,10 +23,9 @@ import { debounceTime, filter, takeUntil, finalize, switchMap } from 'rxjs/opera
import { Subject, Observable } from 'rxjs';
import moment from 'moment-es6';
import { Moment } from 'moment';
import { AppsProcessCloudService } from '../../../app/services/apps-process-cloud.service';
import { ProcessFilterCloudModel, ProcessFilterProperties, ProcessFilterAction, ProcessFilterOptions, ProcessSortFilterProperties } from '../models/process-filter-cloud.model';
import { TranslationService, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';
import { IdentityUserModel, TranslationService, UserPreferencesService, UserPreferenceValues } from '@alfresco/adf-core';
import { ProcessFilterCloudService } from '../services/process-filter-cloud.service';
import { ProcessFilterDialogCloudComponent } from './process-filter-dialog-cloud.component';
import { ApplicationInstanceModel } from '../../../app/models/application-instance.model';
@@ -333,6 +332,10 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
);
}
onChangedUser(users: IdentityUserModel[], processProperty: ProcessFilterProperties) {
this.getPropertyController(processProperty).setValue(users);
}
hasError(property: ProcessFilterProperties): boolean {
return this.getPropertyController(property).errors && this.getPropertyController(property).errors.invalid;
}
@@ -492,6 +495,10 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
return property.type === 'number';
}
isUserSelectType(property: ProcessFilterProperties): boolean {
return property.type === 'people';
}
isDisabledAction(action: ProcessFilterAction): boolean {
return this.isDisabledForDefaultFilters(action) ? true : this.hasFormChanged(action);
}
@@ -589,7 +596,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
value: 'status'
},
{
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.INITIATOR',
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STARTED_BY',
key: 'initiator',
value: 'initiator'
},
@@ -670,12 +677,6 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
value: currentProcessFilter.processDefinitionName || '',
options: this.processDefinitionNames
}),
new ProcessFilterProperties({
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.INITIATOR',
type: 'text',
key: 'initiator',
value: currentProcessFilter.initiator || ''
}),
new ProcessFilterProperties({
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STATUS',
type: 'select',
@@ -714,6 +715,13 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
type: 'date',
key: 'completedDate',
value: currentProcessFilter.completedDate || false
}),
new ProcessFilterProperties({
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STARTED_BY',
type: 'people',
key: 'initiator',
value: currentProcessFilter.initiator,
selectionMode: 'multiple'
}),
new ProcessFilterProperties({
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.COMPLETED_DATE',

View File

@@ -16,6 +16,8 @@
*/
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 {
@@ -30,7 +32,7 @@ export class ProcessFilterCloudModel {
appVersion?: number;
processName: string;
processInstanceId: string;
initiator: string;
initiator: IdentityUserModel[];
status: string;
sort: string;
order: string;
@@ -168,6 +170,7 @@ export class ProcessFilterProperties {
attributes?: { [key: string]: string; };
options?: ProcessFilterOptions[];
dateFilterOptions?: DateCloudFilterType[];
selectionMode?: ComponentSelectionMode;
constructor(obj?: any) {
if (obj) {
@@ -178,6 +181,7 @@ export class ProcessFilterProperties {
this.attributes = obj.attributes || null;
this.options = obj.options || null;
this.dateFilterOptions = obj.dateFilterOptions || null;
this.selectionMode = obj.selectionMode || null;
}
}
}

View File

@@ -28,6 +28,7 @@ import { ProcessFilterDialogCloudComponent } from './components/process-filter-d
import { AppListCloudModule } from './../../app/app-list-cloud.module';
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
import { ProcessCommonModule } from '../../common/process-common.module';
import { PeopleCloudModule } from '../../people/people-cloud.module';
@NgModule({
imports: [
@@ -39,7 +40,8 @@ import { ProcessCommonModule } from '../../common/process-common.module';
MaterialModule,
AppListCloudModule,
CoreModule,
ProcessCommonModule
ProcessCommonModule,
PeopleCloudModule
],
declarations: [ProcessFiltersCloudComponent, EditProcessFilterCloudComponent, ProcessFilterDialogCloudComponent],
exports: [ProcessFiltersCloudComponent, EditProcessFilterCloudComponent, ProcessFilterDialogCloudComponent],

View File

@@ -301,7 +301,13 @@ export abstract class BaseEditTaskFilterCloudComponent implements OnInit, OnChan
}
onChangedUser(users: IdentityUserModel[], userProperty: TaskFilterProperties) {
this.getPropertyController(userProperty).setValue(users[0]);
let selectedUsers;
if (userProperty.selectionMode === 'single') {
selectedUsers = users[0];
} else {
selectedUsers = users;
}
this.getPropertyController(userProperty).setValue(selectedUsers);
}
onAssignedChange(assignedValue: IdentityUserModel) {

View File

@@ -529,7 +529,8 @@ describe('EditTaskFilterCloudComponent', () => {
key: 'completedBy',
label: '',
type: 'people',
value: null
value: null,
selectionMode: 'single'
});
fixture.detectChanges();