mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[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:
@@ -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",
|
||||
|
@@ -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>
|
||||
|
@@ -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();
|
||||
});
|
||||
|
||||
|
@@ -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',
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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],
|
||||
|
@@ -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) {
|
||||
|
@@ -529,7 +529,8 @@ describe('EditTaskFilterCloudComponent', () => {
|
||||
key: 'completedBy',
|
||||
label: '',
|
||||
type: 'people',
|
||||
value: null
|
||||
value: null,
|
||||
selectionMode: 'single'
|
||||
});
|
||||
|
||||
fixture.detectChanges();
|
||||
|
Reference in New Issue
Block a user