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:
@@ -13,7 +13,7 @@
|
|||||||
fxFlex
|
fxFlex
|
||||||
class="app-cloud-layout-overflow"
|
class="app-cloud-layout-overflow"
|
||||||
[appName]="editedFilter.appName"
|
[appName]="editedFilter.appName"
|
||||||
[initiator]="editedFilter.initiator"
|
[initiator]="getInitiatorValue()"
|
||||||
[processDefinitionId]="editedFilter.processDefinitionId"
|
[processDefinitionId]="editedFilter.processDefinitionId"
|
||||||
[processDefinitionName]="editedFilter.processDefinitionName"
|
[processDefinitionName]="editedFilter.processDefinitionName"
|
||||||
[processDefinitionKey]="editedFilter.processDefinitionKey"
|
[processDefinitionKey]="editedFilter.processDefinitionKey"
|
||||||
|
@@ -116,6 +116,10 @@ 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;
|
||||||
}
|
}
|
||||||
|
@@ -61,7 +61,7 @@ export class ProcessListCloudConfiguration {
|
|||||||
{
|
{
|
||||||
'key': 'entry.initiator',
|
'key': 'entry.initiator',
|
||||||
'type': 'text',
|
'type': 'text',
|
||||||
'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.INITIATOR',
|
'title': 'ADF_CLOUD_PROCESS_LIST.PROPERTIES.STARTED_BY',
|
||||||
'sortable': true
|
'sortable': true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@@ -145,15 +145,15 @@ describe('Process list cloud', () => {
|
|||||||
await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Status')).toBe(true);
|
await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Status')).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('[C305054] Should display processes ordered by initiator when Initiator is selected from sort dropdown', async () => {
|
it('[C305054] Should display processes ordered by started by when Started By is selected from sort dropdown', async () => {
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ status: 'ALL', sort: 'Initiator', order: 'ASC' });
|
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ status: 'ALL', sort: 'Started by', order: 'ASC' });
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
|
|
||||||
await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Initiator')).toBe(true);
|
await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Started by')).toBe(true);
|
||||||
|
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ order: 'DESC'});
|
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ order: 'DESC'});
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Initiator')).toBe(true);
|
await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Started by')).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('[C305054] Should display processes ordered by processdefinitionid date when ProcessDefinitionId is selected from sort dropdown', async () => {
|
it('[C305054] Should display processes ordered by processdefinitionid date when ProcessDefinitionId is selected from sort dropdown', async () => {
|
||||||
|
@@ -150,7 +150,7 @@ describe('Process filters cloud', () => {
|
|||||||
it('[C306887] Should be able to filter by appName', async () => {
|
it('[C306887] Should be able to filter by appName', async () => {
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().openFilter();
|
await processCloudDemoPage.editProcessFilterCloudComponent().openFilter();
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setAppNameDropDown(candidateBaseApp);
|
await processCloudDemoPage.editProcessFilterCloudComponent().setAppNameDropDown(candidateBaseApp);
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username);
|
await processCloudDemoPage.editProcessFilterCloudComponent().setInitiator(`${testUser.firstName} ${testUser.lastName}`);
|
||||||
|
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(runningProcessInstance.entry.name);
|
await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(runningProcessInstance.entry.name);
|
||||||
@@ -160,14 +160,14 @@ describe('Process filters cloud', () => {
|
|||||||
it('[C306889] Should be able to see "No process found" when using an app with no processes in the appName field', async () => {
|
it('[C306889] Should be able to see "No process found" when using an app with no processes in the appName field', async () => {
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().openFilter();
|
await processCloudDemoPage.editProcessFilterCloudComponent().openFilter();
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setAppNameDropDown('subprocessapp');
|
await processCloudDemoPage.editProcessFilterCloudComponent().setAppNameDropDown('subprocessapp');
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username);
|
await processCloudDemoPage.editProcessFilterCloudComponent().setInitiator(`${testUser.firstName} ${testUser.lastName}`);
|
||||||
|
|
||||||
await expect(await processListPage.getDisplayedProcessListTitle()).toEqual('No Processes Found');
|
await expect(await processListPage.getDisplayedProcessListTitle()).toEqual('No Processes Found');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('[C306890] Should be able to filter by initiator', async () => {
|
it('[C306890] Should be able to filter by initiator', async () => {
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().openFilter();
|
await processCloudDemoPage.editProcessFilterCloudComponent().openFilter();
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username);
|
await processCloudDemoPage.editProcessFilterCloudComponent().setInitiator(`${testUser.firstName} ${testUser.lastName}`);
|
||||||
|
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(runningProcessInstance.entry.name);
|
await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(runningProcessInstance.entry.name);
|
||||||
|
@@ -126,7 +126,7 @@ describe('Process Header cloud component', () => {
|
|||||||
await processCloudDemoPage.processFilterCloudComponent.clickCompletedProcessesFilter();
|
await processCloudDemoPage.processFilterCloudComponent.clickCompletedProcessesFilter();
|
||||||
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe(PROCESSES.COMPLETED);
|
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe(PROCESSES.COMPLETED);
|
||||||
|
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ initiator: testUser.username });
|
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ initiator: `${testUser.firstName} ${testUser.lastName}` });
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(childCompleteProcess.entry.name);
|
await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(childCompleteProcess.entry.name);
|
||||||
|
|
||||||
|
@@ -96,7 +96,8 @@ describe('Process list cloud', () => {
|
|||||||
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
||||||
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().openFilter();
|
await processCloudDemoPage.editProcessFilterCloudComponent().openFilter();
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username);
|
await processCloudDemoPage.editProcessFilterCloudComponent().setInitiator(`${testUser.firstName} ${testUser.lastName}`);
|
||||||
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
await processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]);
|
await processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]);
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().checkNoRowIsSelected();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().checkNoRowIsSelected();
|
||||||
});
|
});
|
||||||
@@ -108,7 +109,7 @@ describe('Process list cloud', () => {
|
|||||||
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
||||||
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
||||||
|
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': testUser.username });
|
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': `${testUser.firstName} ${testUser.lastName}`});
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
await processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]);
|
await processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]);
|
||||||
await processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[0]);
|
await processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[0]);
|
||||||
@@ -124,7 +125,7 @@ describe('Process list cloud', () => {
|
|||||||
await tasksCloudDemoPage.clickAppButton();
|
await tasksCloudDemoPage.clickAppButton();
|
||||||
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
||||||
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': testUser.username });
|
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': `${testUser.firstName} ${testUser.lastName}`});
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
await processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]);
|
await processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]);
|
||||||
await processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[0]);
|
await processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[0]);
|
||||||
@@ -141,7 +142,7 @@ describe('Process list cloud', () => {
|
|||||||
await tasksCloudDemoPage.clickAppButton();
|
await tasksCloudDemoPage.clickAppButton();
|
||||||
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
||||||
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': testUser.username });
|
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': `${testUser.firstName} ${testUser.lastName}`});
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
await processCloudDemoPage.processListCloudComponent().checkCheckboxById(processInstances[0]);
|
await processCloudDemoPage.processListCloudComponent().checkCheckboxById(processInstances[0]);
|
||||||
await processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[0]);
|
await processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[0]);
|
||||||
@@ -158,7 +159,7 @@ describe('Process list cloud', () => {
|
|||||||
await tasksCloudDemoPage.enableMultiSelection();
|
await tasksCloudDemoPage.enableMultiSelection();
|
||||||
await tasksCloudDemoPage.clickAppButton();
|
await tasksCloudDemoPage.clickAppButton();
|
||||||
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': testUser.username });
|
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': `${testUser.firstName} ${testUser.lastName}`});
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
||||||
await browser.sleep(1000);
|
await browser.sleep(1000);
|
||||||
@@ -182,7 +183,7 @@ describe('Process list cloud', () => {
|
|||||||
await tasksCloudDemoPage.clickAppButton();
|
await tasksCloudDemoPage.clickAppButton();
|
||||||
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible();
|
||||||
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual(PROCESSES.RUNNING);
|
||||||
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': testUser.username });
|
await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': `${testUser.firstName} ${testUser.lastName}`});
|
||||||
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded();
|
||||||
await processCloudDemoPage.processListCloudComponent().checkCheckboxById(processInstances[0]);
|
await processCloudDemoPage.processListCloudComponent().checkCheckboxById(processInstances[0]);
|
||||||
await processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[0]);
|
await processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[0]);
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { AlfrescoApiService } from './alfresco-api.service';
|
import { AlfrescoApiService } from './alfresco-api.service';
|
||||||
import { Observable, from } from 'rxjs';
|
import { Observable, from } from 'rxjs';
|
||||||
|
import { Oauth2Auth } from '@alfresco/js-api';
|
||||||
|
|
||||||
export const JSON_TYPE = ['application/json'];
|
export const JSON_TYPE = ['application/json'];
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@ export interface OAuth2RequestParams {
|
|||||||
export class OAuth2Service {
|
export class OAuth2Service {
|
||||||
constructor(private alfrescoApiService: AlfrescoApiService) {}
|
constructor(private alfrescoApiService: AlfrescoApiService) {}
|
||||||
|
|
||||||
get apiClient() {
|
get apiClient(): Oauth2Auth {
|
||||||
return this.alfrescoApiService.getInstance().oauth2Auth;
|
return this.alfrescoApiService.getInstance().oauth2Auth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
"COMPLETED_BY": "Completed By",
|
"COMPLETED_BY": "Completed By",
|
||||||
"ID": "Id",
|
"ID": "Id",
|
||||||
"INITIATOR": "Initiator",
|
"INITIATOR": "Initiator",
|
||||||
|
"STARTED_BY": "Started by",
|
||||||
"APP_NAME": "Application Name",
|
"APP_NAME": "Application Name",
|
||||||
"BUSINESS_KEY": "Business Key",
|
"BUSINESS_KEY": "Business Key",
|
||||||
"DESCRIPTION": "Description",
|
"DESCRIPTION": "Description",
|
||||||
@@ -208,6 +209,7 @@
|
|||||||
"PROCESS_NAME": "Process Name",
|
"PROCESS_NAME": "Process Name",
|
||||||
"APP_VERSION": "AppReleaseVersion",
|
"APP_VERSION": "AppReleaseVersion",
|
||||||
"STARTED_DATE": "Started Date",
|
"STARTED_DATE": "Started Date",
|
||||||
|
"STARTED_BY": "Started by",
|
||||||
"COMPLETED_DATE": "Completed Date",
|
"COMPLETED_DATE": "Completed Date",
|
||||||
"DATE_RANGE": {
|
"DATE_RANGE": {
|
||||||
"NO_DATE": "No Date",
|
"NO_DATE": "No Date",
|
||||||
|
@@ -72,6 +72,16 @@
|
|||||||
[options]="processFilterProperty.dateFilterOptions"
|
[options]="processFilterProperty.dateFilterOptions"
|
||||||
(dateTypeChange)="onDateTypeChange($event, processFilterProperty)"
|
(dateTypeChange)="onDateTypeChange($event, processFilterProperty)"
|
||||||
(dateChanged)="onDateRangeFilterChanged($event, processFilterProperty)"></adf-cloud-date-range-filter>
|
(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>
|
</ng-container>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@@ -19,7 +19,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
|||||||
import { SimpleChange } from '@angular/core';
|
import { SimpleChange } from '@angular/core';
|
||||||
import { By } from '@angular/platform-browser';
|
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 { ProcessServiceCloudTestingModule } from '../../../testing/process-service-cloud.testing.module';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
@@ -48,6 +48,7 @@ describe('EditProcessFilterCloudComponent', () => {
|
|||||||
let processService: ProcessCloudService;
|
let processService: ProcessCloudService;
|
||||||
let getRunningApplicationsSpy: jasmine.Spy;
|
let getRunningApplicationsSpy: jasmine.Spy;
|
||||||
let getProcessFilterByIdSpy: jasmine.Spy;
|
let getProcessFilterByIdSpy: jasmine.Spy;
|
||||||
|
let alfrescoApiService: AlfrescoApiService;
|
||||||
|
|
||||||
const fakeFilter = new ProcessFilterCloudModel({
|
const fakeFilter = new ProcessFilterCloudModel({
|
||||||
name: 'FakeRunningProcess',
|
name: 'FakeRunningProcess',
|
||||||
@@ -61,6 +62,12 @@ describe('EditProcessFilterCloudComponent', () => {
|
|||||||
sort: 'id'
|
sort: 'id'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const mock = {
|
||||||
|
oauth2Auth: {
|
||||||
|
callCustomApi: () => Promise.resolve(fakeApplicationInstance)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
setupTestBed({
|
setupTestBed({
|
||||||
imports: [
|
imports: [
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
@@ -79,6 +86,7 @@ describe('EditProcessFilterCloudComponent', () => {
|
|||||||
service = TestBed.inject(ProcessFilterCloudService);
|
service = TestBed.inject(ProcessFilterCloudService);
|
||||||
appsService = TestBed.inject(AppsProcessCloudService);
|
appsService = TestBed.inject(AppsProcessCloudService);
|
||||||
processService = TestBed.inject(ProcessCloudService);
|
processService = TestBed.inject(ProcessCloudService);
|
||||||
|
alfrescoApiService = TestBed.inject(AlfrescoApiService);
|
||||||
dialog = TestBed.inject(MatDialog);
|
dialog = TestBed.inject(MatDialog);
|
||||||
spyOn(dialog, 'open').and.returnValue({
|
spyOn(dialog, 'open').and.returnValue({
|
||||||
afterClosed() {
|
afterClosed() {
|
||||||
@@ -91,6 +99,7 @@ describe('EditProcessFilterCloudComponent', () => {
|
|||||||
});
|
});
|
||||||
getProcessFilterByIdSpy = spyOn(service, 'getFilterById').and.returnValue(of(fakeFilter));
|
getProcessFilterByIdSpy = spyOn(service, 'getFilterById').and.returnValue(of(fakeFilter));
|
||||||
getRunningApplicationsSpy = spyOn(appsService, 'getDeployedApplicationsByStatus').and.returnValue(of(fakeApplicationInstance));
|
getRunningApplicationsSpy = spyOn(appsService, 'getDeployedApplicationsByStatus').and.returnValue(of(fakeApplicationInstance));
|
||||||
|
spyOn(alfrescoApiService, 'getInstance').and.returnValue(mock);
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -23,10 +23,9 @@ import { debounceTime, filter, takeUntil, finalize, switchMap } from 'rxjs/opera
|
|||||||
import { Subject, Observable } from 'rxjs';
|
import { Subject, Observable } from 'rxjs';
|
||||||
import moment from 'moment-es6';
|
import moment from 'moment-es6';
|
||||||
import { Moment } from 'moment';
|
import { Moment } from 'moment';
|
||||||
|
|
||||||
import { AppsProcessCloudService } from '../../../app/services/apps-process-cloud.service';
|
import { AppsProcessCloudService } from '../../../app/services/apps-process-cloud.service';
|
||||||
import { ProcessFilterCloudModel, ProcessFilterProperties, ProcessFilterAction, ProcessFilterOptions, ProcessSortFilterProperties } from '../models/process-filter-cloud.model';
|
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 { ProcessFilterCloudService } from '../services/process-filter-cloud.service';
|
||||||
import { ProcessFilterDialogCloudComponent } from './process-filter-dialog-cloud.component';
|
import { ProcessFilterDialogCloudComponent } from './process-filter-dialog-cloud.component';
|
||||||
import { ApplicationInstanceModel } from '../../../app/models/application-instance.model';
|
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 {
|
hasError(property: ProcessFilterProperties): boolean {
|
||||||
return this.getPropertyController(property).errors && this.getPropertyController(property).errors.invalid;
|
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';
|
return property.type === 'number';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isUserSelectType(property: ProcessFilterProperties): boolean {
|
||||||
|
return property.type === 'people';
|
||||||
|
}
|
||||||
|
|
||||||
isDisabledAction(action: ProcessFilterAction): boolean {
|
isDisabledAction(action: ProcessFilterAction): boolean {
|
||||||
return this.isDisabledForDefaultFilters(action) ? true : this.hasFormChanged(action);
|
return this.isDisabledForDefaultFilters(action) ? true : this.hasFormChanged(action);
|
||||||
}
|
}
|
||||||
@@ -589,7 +596,7 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
|
|||||||
value: 'status'
|
value: 'status'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.INITIATOR',
|
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STARTED_BY',
|
||||||
key: 'initiator',
|
key: 'initiator',
|
||||||
value: 'initiator'
|
value: 'initiator'
|
||||||
},
|
},
|
||||||
@@ -670,12 +677,6 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
|
|||||||
value: currentProcessFilter.processDefinitionName || '',
|
value: currentProcessFilter.processDefinitionName || '',
|
||||||
options: this.processDefinitionNames
|
options: this.processDefinitionNames
|
||||||
}),
|
}),
|
||||||
new ProcessFilterProperties({
|
|
||||||
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.INITIATOR',
|
|
||||||
type: 'text',
|
|
||||||
key: 'initiator',
|
|
||||||
value: currentProcessFilter.initiator || ''
|
|
||||||
}),
|
|
||||||
new ProcessFilterProperties({
|
new ProcessFilterProperties({
|
||||||
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STATUS',
|
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.STATUS',
|
||||||
type: 'select',
|
type: 'select',
|
||||||
@@ -714,6 +715,13 @@ export class EditProcessFilterCloudComponent implements OnInit, OnChanges, OnDes
|
|||||||
type: 'date',
|
type: 'date',
|
||||||
key: 'completedDate',
|
key: 'completedDate',
|
||||||
value: currentProcessFilter.completedDate || false
|
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({
|
new ProcessFilterProperties({
|
||||||
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.COMPLETED_DATE',
|
label: 'ADF_CLOUD_EDIT_PROCESS_FILTER.LABEL.COMPLETED_DATE',
|
||||||
|
@@ -16,6 +16,8 @@
|
|||||||
*/
|
*/
|
||||||
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 { IdentityUserModel } from '@alfresco/adf-core';
|
||||||
|
|
||||||
export class ProcessFilterCloudModel {
|
export class ProcessFilterCloudModel {
|
||||||
|
|
||||||
@@ -30,7 +32,7 @@ export class ProcessFilterCloudModel {
|
|||||||
appVersion?: number;
|
appVersion?: number;
|
||||||
processName: string;
|
processName: string;
|
||||||
processInstanceId: string;
|
processInstanceId: string;
|
||||||
initiator: string;
|
initiator: IdentityUserModel[];
|
||||||
status: string;
|
status: string;
|
||||||
sort: string;
|
sort: string;
|
||||||
order: string;
|
order: string;
|
||||||
@@ -168,6 +170,7 @@ export class ProcessFilterProperties {
|
|||||||
attributes?: { [key: string]: string; };
|
attributes?: { [key: string]: string; };
|
||||||
options?: ProcessFilterOptions[];
|
options?: ProcessFilterOptions[];
|
||||||
dateFilterOptions?: DateCloudFilterType[];
|
dateFilterOptions?: DateCloudFilterType[];
|
||||||
|
selectionMode?: ComponentSelectionMode;
|
||||||
|
|
||||||
constructor(obj?: any) {
|
constructor(obj?: any) {
|
||||||
if (obj) {
|
if (obj) {
|
||||||
@@ -178,6 +181,7 @@ export class ProcessFilterProperties {
|
|||||||
this.attributes = obj.attributes || null;
|
this.attributes = obj.attributes || null;
|
||||||
this.options = obj.options || null;
|
this.options = obj.options || null;
|
||||||
this.dateFilterOptions = obj.dateFilterOptions || 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 { AppListCloudModule } from './../../app/app-list-cloud.module';
|
||||||
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
||||||
import { ProcessCommonModule } from '../../common/process-common.module';
|
import { ProcessCommonModule } from '../../common/process-common.module';
|
||||||
|
import { PeopleCloudModule } from '../../people/people-cloud.module';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
@@ -39,7 +40,8 @@ import { ProcessCommonModule } from '../../common/process-common.module';
|
|||||||
MaterialModule,
|
MaterialModule,
|
||||||
AppListCloudModule,
|
AppListCloudModule,
|
||||||
CoreModule,
|
CoreModule,
|
||||||
ProcessCommonModule
|
ProcessCommonModule,
|
||||||
|
PeopleCloudModule
|
||||||
],
|
],
|
||||||
declarations: [ProcessFiltersCloudComponent, EditProcessFilterCloudComponent, ProcessFilterDialogCloudComponent],
|
declarations: [ProcessFiltersCloudComponent, EditProcessFilterCloudComponent, ProcessFilterDialogCloudComponent],
|
||||||
exports: [ProcessFiltersCloudComponent, EditProcessFilterCloudComponent, ProcessFilterDialogCloudComponent],
|
exports: [ProcessFiltersCloudComponent, EditProcessFilterCloudComponent, ProcessFilterDialogCloudComponent],
|
||||||
|
@@ -301,7 +301,13 @@ export abstract class BaseEditTaskFilterCloudComponent implements OnInit, OnChan
|
|||||||
}
|
}
|
||||||
|
|
||||||
onChangedUser(users: IdentityUserModel[], userProperty: TaskFilterProperties) {
|
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) {
|
onAssignedChange(assignedValue: IdentityUserModel) {
|
||||||
|
@@ -529,7 +529,8 @@ describe('EditTaskFilterCloudComponent', () => {
|
|||||||
key: 'completedBy',
|
key: 'completedBy',
|
||||||
label: '',
|
label: '',
|
||||||
type: 'people',
|
type: 'people',
|
||||||
value: null
|
value: null,
|
||||||
|
selectionMode: 'single'
|
||||||
});
|
});
|
||||||
|
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
@@ -19,6 +19,7 @@ import { EditProcessFilterDialogPage } from './dialog/edit-process-filter-dialog
|
|||||||
import { BrowserVisibility } from '../../core/utils/browser-visibility';
|
import { BrowserVisibility } from '../../core/utils/browser-visibility';
|
||||||
import { BrowserActions } from '../../core/utils/browser-actions';
|
import { BrowserActions } from '../../core/utils/browser-actions';
|
||||||
import { DropdownPage } from '../../core/pages/material/dropdown.page';
|
import { DropdownPage } from '../../core/pages/material/dropdown.page';
|
||||||
|
import { PeopleCloudComponentPage } from './people-cloud-component.page';
|
||||||
|
|
||||||
export class EditProcessFilterCloudComponentPage {
|
export class EditProcessFilterCloudComponentPage {
|
||||||
|
|
||||||
@@ -39,6 +40,7 @@ export class EditProcessFilterCloudComponentPage {
|
|||||||
sortDropdown = new DropdownPage(this.locatorSortDropdown);
|
sortDropdown = new DropdownPage(this.locatorSortDropdown);
|
||||||
orderDropdown = new DropdownPage(this.locatorOrderDropdown);
|
orderDropdown = new DropdownPage(this.locatorOrderDropdown);
|
||||||
processDefinitionNameDropdown = new DropdownPage(this.locatorProcessDefinitionNameDropdown);
|
processDefinitionNameDropdown = new DropdownPage(this.locatorProcessDefinitionNameDropdown);
|
||||||
|
peopleCloudComponent = new PeopleCloudComponentPage();
|
||||||
|
|
||||||
editProcessFilterDialogPage = new EditProcessFilterDialogPage();
|
editProcessFilterDialogPage = new EditProcessFilterDialogPage();
|
||||||
|
|
||||||
@@ -133,6 +135,10 @@ export class EditProcessFilterCloudComponentPage {
|
|||||||
await this.setProperty('processName', option);
|
await this.setProperty('processName', option);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async setInitiator(value: string): Promise<void> {
|
||||||
|
await this.peopleCloudComponent.searchAssigneeAndSelect(value);
|
||||||
|
}
|
||||||
|
|
||||||
async getProcessInstanceId(): Promise<string> {
|
async getProcessInstanceId(): Promise<string> {
|
||||||
return this.getProperty('processInstanceId');
|
return this.getProperty('processInstanceId');
|
||||||
}
|
}
|
||||||
@@ -205,7 +211,7 @@ export class EditProcessFilterCloudComponentPage {
|
|||||||
if (status) { await this.setStatusFilterDropDown(status); }
|
if (status) { await this.setStatusFilterDropDown(status); }
|
||||||
if (sort) { await this.setSortFilterDropDown(sort); }
|
if (sort) { await this.setSortFilterDropDown(sort); }
|
||||||
if (order) { await this.setOrderFilterDropDown(order); }
|
if (order) { await this.setOrderFilterDropDown(order); }
|
||||||
if (initiator) { await this.setProperty('initiator', initiator); }
|
if (initiator) { await this.setInitiator(initiator); }
|
||||||
if (processName) { await this.setProcessName(processName); }
|
if (processName) { await this.setProcessName(processName); }
|
||||||
await this.openFilter();
|
await this.openFilter();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user