[ADF-3299] and [ADF-3300] upgrade to Angular and Material 6 (#3579)

* upgrade to HttpClient

* upgrade to Renderer2

* upgrade Document reference

* remove useless test with deprecated ReflectiveInjector

* upgrade to latest typescript

* upgrade libs

* upgrade package scripts

* remove rxjs blacklists and duplicate rules

* add rxjs compat to help with migration

* fix breaking changes

* fix breaking changes in material

* fix breaking changes (material 6)

* upgrade rxjs, ngx-translate and flex layout

* update unit tests

* restore providers

* upgrade deprecated Observable.error

* rebase
fix first configuration problems

* fix style issues commented

* fix core build

* fix lib template errors

* move lib test execution in angular.json

* ignore

* karma conf files

* fix import statement test

* single run option

* update packages reporter

* restore report

* increase timeout

* improve karma conf test configuration

* fix test issues about lint

* fix test analytics

* fix process service test

* content service fix test

* fix logout directive test

* fix core test

* fix build

* update node-sass to latest

* update angular cli dependencies

* improve build script

create directorites and move files only if previous command succeded

* upgrade individual libs to 6.0

* remove old webpack files

* revert sass change

* fix type issues
fix style issues

* fix tslint demo shell issue

* fix peerdependencies

* fix test e2e BC

* package upate

* fix style import issue

* extract-text-webpack-plugin beta

* fix test dist build command

* remove alpha js-api

* fix tslint issue
add banner tslint rule

* upload service fix

* change BC script

* fix test dist script

* increase demo shell timeout test

* verbose copy

* path absolute

* fix script bc

* fix copy part

* fix path warning
fix monaco editor

* remove duplicate header

* remove unused import

* fix align and check ago tests

* add missing import

* fix notification button selector

* [ANGULAR6] fixed core tests

* fix CS test

* fix cs test step 2

* increase travis_wait for dist

* fix attachment PS

* fix checklist test

* use pdf min
This commit is contained in:
Denys Vuika
2018-08-07 11:58:16 +01:00
committed by Eugenio Romano
parent c510ec864d
commit 6b24bfb1d4
371 changed files with 16287 additions and 24504 deletions

View File

@@ -17,7 +17,7 @@
import { Component } from '@angular/core';
import { ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing';
import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs';
import { ProcessService } from './../services/process.service';
import { ProcessAuditDirective } from './process-audit.directive';
import { setupTestBed, CoreModule } from '@alfresco/adf-core';
@@ -100,7 +100,7 @@ describe('ProcessAuditDirective', () => {
component.fileName = 'FakeAuditName';
component.format = 'pdf';
let blob = createFakePdfBlob();
spyOn(service, 'fetchProcessAuditPdfById').and.returnValue(Observable.of(blob));
spyOn(service, 'fetchProcessAuditPdfById').and.returnValue(of(blob));
spyOn(component, 'onAuditClick').and.callThrough();
fixture.detectChanges();
@@ -136,7 +136,7 @@ describe('ProcessAuditDirective', () => {
}
], decisionInfo: { calculatedValues: [], appliedRules: [] }
};
spyOn(service, 'fetchProcessAuditJsonById').and.returnValue(Observable.of(auditJson));
spyOn(service, 'fetchProcessAuditJsonById').and.returnValue(of(auditJson));
spyOn(component, 'onAuditClick').and.callThrough();
fixture.detectChanges();
@@ -156,7 +156,7 @@ describe('ProcessAuditDirective', () => {
component.fileName = 'FakeAuditName';
component.format = 'fakeFormat';
let blob = createFakePdfBlob();
spyOn(service, 'fetchProcessAuditPdfById').and.returnValue(Observable.of(blob));
spyOn(service, 'fetchProcessAuditPdfById').and.returnValue(of(blob));
spyOn(component, 'onAuditClick').and.callThrough();
fixture.detectChanges();

View File

@@ -2,7 +2,7 @@
<mat-list class="adf-menu-list">
<mat-list-item (click)="selectFilter(filter)" *ngFor="let filter of filters"
class="adf-filters__entry" [class.active]="currentFilter === filter">
<mat-icon *ngIf="hasIcon" matListIcon class="adf-filters__entry-icon">assignment</mat-icon>
<mat-icon *ngIf="showIcon" matListIcon class="adf-filters__entry-icon">assignment</mat-icon>
<span matLine [attr.data-automation-id]="filter.name + '_filter'">{{filter.name}}</span>
</mat-list-item>
</mat-list>

View File

@@ -17,7 +17,7 @@
import { CUSTOM_ELEMENTS_SCHEMA, SimpleChange } from '@angular/core';
import { AppsProcessService } from '@alfresco/adf-core';
import { Observable } from 'rxjs/Observable';
import { from } from 'rxjs';
import { FilterProcessRepresentationModel } from '../models/filter-process.model';
import { ProcessFilterService } from '../services/process-filter.service';
import { ProcessFiltersComponent } from './process-filters.component';
@@ -81,7 +81,7 @@ describe('ProcessFiltersComponent', () => {
});
it('should return the filter task list', (done) => {
spyOn(processFilterService, 'getProcessFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
const appId = '1';
let change = new SimpleChange(null, appId, true);
filterList.ngOnChanges({ 'appId': change });
@@ -100,7 +100,7 @@ describe('ProcessFiltersComponent', () => {
});
it('should select the Running process filter', (done) => {
spyOn(processFilterService, 'getProcessFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
const appId = '1';
let change = new SimpleChange(null, appId, true);
filterList.ngOnChanges({ 'appId': change });
@@ -117,8 +117,8 @@ describe('ProcessFiltersComponent', () => {
});
it('should return the filter task list, filtered By Name', (done) => {
spyOn(appsProcessService, 'getDeployedApplicationsByName').and.returnValue(Observable.fromPromise(Promise.resolve({ id: 1 })));
spyOn(processFilterService, 'getProcessFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
spyOn(appsProcessService, 'getDeployedApplicationsByName').and.returnValue(from(Promise.resolve({ id: 1 })));
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
let change = new SimpleChange(null, 'test', true);
filterList.ngOnChanges({ 'appName': change });
@@ -134,7 +134,7 @@ describe('ProcessFiltersComponent', () => {
});
it('should emit an error with a bad response', (done) => {
spyOn(processFilterService, 'getProcessFilters').and.returnValue(Observable.fromPromise(mockErrorFilterPromise));
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(mockErrorFilterPromise));
const appId = '1';
let change = new SimpleChange(null, appId, true);
@@ -149,7 +149,7 @@ describe('ProcessFiltersComponent', () => {
});
it('should emit an error with a bad response', (done) => {
spyOn(appsProcessService, 'getDeployedApplicationsByName').and.returnValue(Observable.fromPromise(mockErrorFilterPromise));
spyOn(appsProcessService, 'getDeployedApplicationsByName').and.returnValue(from(mockErrorFilterPromise));
const appId = 'fake-app';
let change = new SimpleChange(null, appId, true);
@@ -221,7 +221,7 @@ describe('ProcessFiltersComponent', () => {
});
it('should select the filter passed as input by id', (done) => {
spyOn(processFilterService, 'getProcessFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
filterList.filterParam = new FilterProcessRepresentationModel({ id: 20 });
@@ -241,7 +241,7 @@ describe('ProcessFiltersComponent', () => {
});
it('should select the filter passed as input by name', (done) => {
spyOn(processFilterService, 'getProcessFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
filterList.filterParam = new FilterProcessRepresentationModel({ name: 'FakeMyTasks' });
@@ -261,7 +261,7 @@ describe('ProcessFiltersComponent', () => {
});
it('should select first filter if filterParam is empty', (done) => {
spyOn(processFilterService, 'getProcessFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
spyOn(processFilterService, 'getProcessFilters').and.returnValue(from(fakeGlobalFilterPromise));
filterList.filterParam = new FilterProcessRepresentationModel({});

View File

@@ -18,7 +18,7 @@
import { DebugElement, NO_ERRORS_SCHEMA, SimpleChange } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs';
import { FormModule, setupTestBed } from '@alfresco/adf-core';
import { TaskListModule } from '../../task-list/task-list.module';
@@ -54,7 +54,7 @@ describe('ProcessInstanceDetailsComponent', () => {
component = fixture.componentInstance;
service = fixture.debugElement.injector.get(ProcessService);
getProcessSpy = spyOn(service, 'getProcess').and.returnValue(Observable.of(exampleProcess));
getProcessSpy = spyOn(service, 'getProcess').and.returnValue(of(exampleProcess));
});
it('should not load task details when no processInstanceId is specified', () => {
@@ -79,7 +79,7 @@ describe('ProcessInstanceDetailsComponent', () => {
}));
it('should display default details when the process instance has no name', async(() => {
getProcessSpy = getProcessSpy.and.returnValue(Observable.of(exampleProcessNoName));
getProcessSpy = getProcessSpy.and.returnValue(of(exampleProcessNoName));
fixture.detectChanges();
component.ngOnChanges({ 'processInstanceId': new SimpleChange(null, '123', true) });
fixture.whenStable().then(() => {

View File

@@ -35,7 +35,7 @@
<!--IF START TASK COMPLETED -->
<div class="menu-container">
<mat-list>
<mat-list-item class="process-tasks__task-item" (click)="clickStartTask($event)">
<mat-list-item class="process-tasks__task-item" (click)="clickStartTask()">
<mat-icon mat-list-icon>assignment</mat-icon>
<h3 matLine>{{ 'ADF_PROCESS_LIST.DETAILS.LABELS.START_FORM'|translate }}</h3>
<span matLine>
@@ -75,7 +75,7 @@
<div mat-dialog-content class="adf-start-process-dialog-content">
<adf-start-form [processId]="processId"
[showRefreshButton]="false" [readOnlyForm]="true"
(formContentClicked)='onFormContentClick($event)'>
(formContentClicked)='onFormContentClick()'>
</adf-start-form>
</div>
<div mat-dialog-actions class="adf-start-process-dialog-actions">

View File

@@ -18,7 +18,7 @@
import { SimpleChange } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { Observable } from 'rxjs/Observable';
import { of } from 'rxjs';
import { TaskDetailsModel } from '../../task-list';
@@ -50,7 +50,7 @@ describe('ProcessInstanceTasksComponent', () => {
component = fixture.componentInstance;
service = TestBed.get(ProcessService);
spyOn(service, 'getProcessTasks').and.returnValue(Observable.of([new TaskDetailsModel(taskDetailsMock)]));
spyOn(service, 'getProcessTasks').and.returnValue(of([new TaskDetailsModel(taskDetailsMock)]));
});
afterEach(() => {

View File

@@ -19,11 +19,11 @@ import { LogService } from '@alfresco/adf-core';
import { DatePipe } from '@angular/common';
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';
import { MatDialog } from '@angular/material';
import { Observable } from 'rxjs/Observable';
import { Observer } from 'rxjs/Observer';
import { Observable, Observer } from 'rxjs';
import { TaskDetailsEvent, TaskDetailsModel } from '../../task-list';
import { ProcessInstance } from '../models/process-instance.model';
import { ProcessService } from './../services/process.service';
import { share } from 'rxjs/operators';
@Component({
selector: 'adf-process-instance-tasks',
@@ -71,8 +71,10 @@ export class ProcessInstanceTasksComponent implements OnInit, OnChanges {
constructor(private activitiProcess: ProcessService,
private logService: LogService,
private dialog: MatDialog) {
this.task$ = new Observable<TaskDetailsModel>(observer => this.taskObserver = observer).share();
this.completedTask$ = new Observable<TaskDetailsModel>(observer => this.completedTaskObserver = observer).share();
this.task$ = new Observable<TaskDetailsModel>(observer => this.taskObserver = observer)
.pipe(share());
this.completedTask$ = new Observable<TaskDetailsModel>(observer => this.completedTaskObserver = observer)
.pipe(share());
}
ngOnInit() {

View File

@@ -17,7 +17,7 @@
import { Component, SimpleChange, ViewChild, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
import { Observable } from 'rxjs/Observable';
import { of, throwError } from 'rxjs';
import { By } from '@angular/platform-browser';
import { ProcessInstanceListComponent } from './process-list.component';
@@ -50,7 +50,7 @@ describe('ProcessInstanceListComponent', () => {
appConfig = TestBed.get(AppConfigService);
service = TestBed.get(ProcessService);
getProcessInstancesSpy = spyOn(service, 'getProcessInstances').and.returnValue(Observable.of(fakeProcessInstance));
getProcessInstancesSpy = spyOn(service, 'getProcessInstances').and.returnValue(of(fakeProcessInstance));
appConfig.config['adf-process-list'] = {
'presets': {
'fakeProcessCutomSchema': [
@@ -143,7 +143,7 @@ describe('ProcessInstanceListComponent', () => {
}));
it('should return a default name if no name is specified on the process', async(() => {
getProcessInstancesSpy = getProcessInstancesSpy.and.returnValue(Observable.of(fakeProcessInstancesWithNoName));
getProcessInstancesSpy = getProcessInstancesSpy.and.returnValue(of(fakeProcessInstancesWithNoName));
component.appId = 1;
component.state = 'open';
component.processDefinitionKey = 'fakeprocess';
@@ -187,7 +187,7 @@ describe('ProcessInstanceListComponent', () => {
it('should throw an exception when the response is wrong', fakeAsync(() => {
let emitSpy: jasmine.Spy = spyOn(component.error, 'emit');
let mockError = 'Fake server error';
getProcessInstancesSpy.and.returnValue(Observable.throw(mockError));
getProcessInstancesSpy.and.returnValue(throwError(mockError));
component.appId = 1;
component.state = 'open';
fixture.detectChanges();

View File

@@ -42,7 +42,7 @@ import {
import { ProcessFilterParamRepresentationModel } from '../models/filter-process.model';
import { processPresetsDefaultModel } from '../models/process-preset.model';
import { ProcessService } from '../services/process.service';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { BehaviorSubject } from 'rxjs';
import { ProcessListModel } from '../models/process-list.model';
@Component({

View File

@@ -18,7 +18,7 @@
import { SimpleChange } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ActivitiContentService, AppConfigService, FormService, setupTestBed } from '@alfresco/adf-core';
import { Observable } from 'rxjs/Observable';
import { of, throwError } from 'rxjs';
import { ProcessInstanceVariable } from '../models/process-instance-variable.model';
import { ProcessService } from '../services/process.service';
@@ -59,10 +59,10 @@ describe('StartFormComponent', () => {
processService = TestBed.get(ProcessService);
formService = TestBed.get(FormService);
getDefinitionsSpy = spyOn(processService, 'getProcessDefinitions').and.returnValue(Observable.of(testMultipleProcessDefs));
startProcessSpy = spyOn(processService, 'startProcess').and.returnValue(Observable.of(newProcess));
getStartFormDefinitionSpy = spyOn(formService, 'getStartFormDefinition').and.returnValue(Observable.of(taskFormMock));
spyOn(activitiContentService, 'applyAlfrescoNode').and.returnValue(Observable.of({ id: 1234 }));
getDefinitionsSpy = spyOn(processService, 'getProcessDefinitions').and.returnValue(of(testMultipleProcessDefs));
startProcessSpy = spyOn(processService, 'startProcess').and.returnValue(of(newProcess));
getStartFormDefinitionSpy = spyOn(formService, 'getStartFormDefinition').and.returnValue(of(taskFormMock));
spyOn(activitiContentService, 'applyAlfrescoNode').and.returnValue(of({ id: 1234 }));
});
afterEach(() => {
@@ -122,7 +122,7 @@ describe('StartFormComponent', () => {
describe('with start form', () => {
beforeEach(() => {
getDefinitionsSpy.and.returnValue(Observable.of(testProcessDefWithForm));
getDefinitionsSpy.and.returnValue(of(testProcessDefWithForm));
let change = new SimpleChange(null, 123, true);
component.ngOnChanges({ 'appId': change });
});
@@ -243,7 +243,7 @@ describe('StartFormComponent', () => {
});
it('should indicate an error to the user if process defs cannot be loaded', async(() => {
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(Observable.throw({}));
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(throwError({}));
component.appId = 123;
component.ngOnChanges({});
fixture.detectChanges();
@@ -256,7 +256,7 @@ describe('StartFormComponent', () => {
}));
it('should show no process available message when no process definition is loaded', async(() => {
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(Observable.of([]));
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(of([]));
component.appId = 123;
component.ngOnChanges({});
fixture.detectChanges();
@@ -269,7 +269,7 @@ describe('StartFormComponent', () => {
}));
it('should select processDefinition based on processDefinition input', async(() => {
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(Observable.of(testMultipleProcessDefs));
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(of(testMultipleProcessDefs));
component.appId = 123;
component.processDefinitionName = 'My Process 2';
component.ngOnChanges({});
@@ -280,7 +280,7 @@ describe('StartFormComponent', () => {
}));
it('should select automatically the processDefinition if the app contain oly one', async(() => {
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(Observable.of(testProcessDefinitions));
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(of(testProcessDefinitions));
component.appId = 123;
component.ngOnChanges({});
fixture.detectChanges();
@@ -292,7 +292,7 @@ describe('StartFormComponent', () => {
describe('dropdown', () => {
it('should hide the process dropdown if showSelectProcessDropdown is false', async(() => {
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(Observable.of([testProcessDefRepr]));
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(of([testProcessDefRepr]));
component.appId = 123;
component.showSelectProcessDropdown = false;
component.ngOnChanges({});
@@ -304,7 +304,7 @@ describe('StartFormComponent', () => {
}));
it('should show the process dropdown if showSelectProcessDropdown is false', async(() => {
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(Observable.of(testMultipleProcessDefs));
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(of(testMultipleProcessDefs));
component.appId = 123;
component.processDefinitionName = 'My Process 2';
component.showSelectProcessDropdown = true;
@@ -317,7 +317,7 @@ describe('StartFormComponent', () => {
}));
it('should show the process dropdown by default', async(() => {
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(Observable.of(testMultipleProcessDefs));
getDefinitionsSpy = getDefinitionsSpy.and.returnValue(of(testMultipleProcessDefs));
component.appId = 123;
component.processDefinitionName = 'My Process 2';
component.ngOnChanges({});
@@ -421,7 +421,7 @@ describe('StartFormComponent', () => {
it('should throw error event when process cannot be started', async(() => {
let errorSpy = spyOn(component.error, 'error');
let error = { message: 'My error' };
startProcessSpy = startProcessSpy.and.returnValue(Observable.throw(error));
startProcessSpy = startProcessSpy.and.returnValue(throwError(error));
component.selectedProcessDef = testProcessDefRepr;
component.startProcess();
fixture.whenStable().then(() => {
@@ -430,7 +430,7 @@ describe('StartFormComponent', () => {
}));
it('should indicate an error to the user if process cannot be started', async(() => {
startProcessSpy = startProcessSpy.and.returnValue(Observable.throw({}));
startProcessSpy = startProcessSpy.and.returnValue(throwError({}));
component.selectedProcessDef = testProcessDefRepr;
component.startProcess();
fixture.whenStable().then(() => {

View File

@@ -17,9 +17,9 @@
import { AlfrescoApiService } from '@alfresco/adf-core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Observable, from, forkJoin, throwError } from 'rxjs';
import { FilterProcessRepresentationModel } from '../models/filter-process.model';
import 'rxjs/add/observable/throw';
import { map, catchError } from 'rxjs/operators';
@Injectable()
export class ProcessFilterService {
@@ -33,16 +33,18 @@ export class ProcessFilterService {
* @returns Array of filter details
*/
getProcessFilters(appId: number): Observable<FilterProcessRepresentationModel[]> {
return Observable.fromPromise(this.callApiProcessFilters(appId))
.map((response: any) => {
let filters: FilterProcessRepresentationModel[] = [];
response.data.forEach((filter: FilterProcessRepresentationModel) => {
let filterModel = new FilterProcessRepresentationModel(filter);
filters.push(filterModel);
});
return filters;
})
.catch(err => this.handleProcessError(err));
return from(this.callApiProcessFilters(appId))
.pipe(
map((response: any) => {
let filters: FilterProcessRepresentationModel[] = [];
response.data.forEach((filter: FilterProcessRepresentationModel) => {
let filterModel = new FilterProcessRepresentationModel(filter);
filters.push(filterModel);
});
return filters;
}),
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -52,10 +54,13 @@ export class ProcessFilterService {
* @returns Details of the filter
*/
getProcessFilterById(filterId: number, appId?: number): Observable<FilterProcessRepresentationModel> {
return Observable.fromPromise(this.callApiProcessFilters(appId))
.map((response: any) => {
return response.data.find(filter => filter.id === filterId);
}).catch(err => this.handleProcessError(err));
return from(this.callApiProcessFilters(appId))
.pipe(
map((response: any) => {
return response.data.find(filter => filter.id === filterId);
}),
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -65,10 +70,13 @@ export class ProcessFilterService {
* @returns Details of the filter
*/
getProcessFilterByName(filterName: string, appId?: number): Observable<FilterProcessRepresentationModel> {
return Observable.fromPromise(this.callApiProcessFilters(appId))
.map((response: any) => {
return response.data.find(filter => filter.name === filterName);
}).catch(err => this.handleProcessError(err));
return from(this.callApiProcessFilters(appId))
.pipe(
map((response: any) => {
return response.data.find(filter => filter.name === filterName);
}),
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -87,7 +95,7 @@ export class ProcessFilterService {
let allObservable = this.addProcessFilter(allFilter);
return Observable.create(observer => {
Observable.forkJoin(
forkJoin(
runningObservable,
completedObservable,
allObservable
@@ -166,11 +174,13 @@ export class ProcessFilterService {
* @returns The filter just added
*/
addProcessFilter(filter: FilterProcessRepresentationModel): Observable<FilterProcessRepresentationModel> {
return Observable.fromPromise(this.alfrescoApiService.getInstance().activiti.userFiltersApi.createUserProcessInstanceFilter(filter))
.map(res => res)
.map((response: FilterProcessRepresentationModel) => {
return response;
}).catch(err => this.handleProcessError(err));
return from(this.alfrescoApiService.getInstance().activiti.userFiltersApi.createUserProcessInstanceFilter(filter))
.pipe(
map((response: FilterProcessRepresentationModel) => {
return response;
}),
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -187,6 +197,6 @@ export class ProcessFilterService {
}
private handleProcessError(error: any) {
return Observable.throw(error || 'Server error');
return throwError(error || 'Server error');
}
}

View File

@@ -17,14 +17,14 @@
import { AlfrescoApiService, FormValues } from '@alfresco/adf-core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Observable, from, throwError } from 'rxjs';
import { TaskDetailsModel } from '../../task-list';
import { ProcessFilterParamRepresentationModel } from '../models/filter-process.model';
import { ProcessDefinitionRepresentation } from '../models/process-definition.model';
import { ProcessInstanceVariable } from '../models/process-instance-variable.model';
import { ProcessInstance } from '../models/process-instance.model';
import { ProcessListModel } from '../models/process-list.model';
import 'rxjs/add/observable/throw';
import { map, catchError } from 'rxjs/operators';
declare let moment: any;
@@ -41,16 +41,19 @@ export class ProcessService {
* @returns List of process instances
*/
getProcessInstances(requestNode: ProcessFilterParamRepresentationModel, processDefinitionKey?: string): Observable<ProcessListModel> {
return Observable.fromPromise(this.alfrescoApiService.getInstance().activiti.processApi.getProcessInstances(requestNode))
.map((res: any) => {
if (processDefinitionKey) {
const filtered = res.data.filter(process => process.processDefinitionKey === processDefinitionKey);
res.data = filtered;
return res;
} else {
return res;
}
}).catch(err => this.handleProcessError(err));
return from(this.alfrescoApiService.getInstance().activiti.processApi.getProcessInstances(requestNode))
.pipe(
map((res: any) => {
if (processDefinitionKey) {
const filtered = res.data.filter(process => process.processDefinitionKey === processDefinitionKey);
res.data = filtered;
return res;
} else {
return res;
}
}),
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -59,8 +62,10 @@ export class ProcessService {
* @returns Binary PDF data
*/
fetchProcessAuditPdfById(processId: string): Observable<Blob> {
return Observable.fromPromise(this.alfrescoApiService.getInstance().activiti.processApi.getProcessAuditPdf(processId))
.catch(err => this.handleProcessError(err));
return from<Blob>(this.alfrescoApiService.getInstance().activiti.processApi.getProcessAuditPdf(processId))
.pipe(
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -69,8 +74,10 @@ export class ProcessService {
* @returns JSON data
*/
fetchProcessAuditJsonById(processId: string): Observable<any> {
return Observable.fromPromise(this.alfrescoApiService.getInstance().activiti.processApi.getProcessAuditJson(processId))
.catch(err => this.handleProcessError(err));
return from(this.alfrescoApiService.getInstance().activiti.processApi.getProcessAuditJson(processId))
.pipe(
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -79,8 +86,10 @@ export class ProcessService {
* @returns Metadata for the instance
*/
getProcess(processInstanceId: string): Observable<ProcessInstance> {
return Observable.fromPromise(this.alfrescoApiService.getInstance().activiti.processApi.getProcessInstance(processInstanceId))
.catch(err => this.handleProcessError(err));
return from(this.alfrescoApiService.getInstance().activiti.processApi.getProcessInstance(processInstanceId))
.pipe(
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -96,13 +105,15 @@ export class ProcessService {
} : {
processInstanceId: processInstanceId
};
return Observable.fromPromise(this.alfrescoApiService.getInstance().activiti.taskApi.listTasks(taskOpts))
.map(this.extractData)
.map(tasks => tasks.map((task: any) => {
task.created = moment(task.created, 'YYYY-MM-DD').format();
return task;
}))
.catch(err => this.handleProcessError(err));
return from(this.alfrescoApiService.getInstance().activiti.taskApi.listTasks(taskOpts))
.pipe(
map(this.extractData),
map(tasks => tasks.map((task: any) => {
task.created = moment(task.created, 'YYYY-MM-DD').format();
return task;
})),
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -117,12 +128,14 @@ export class ProcessService {
} : {
latest: true
};
return Observable.fromPromise(
return from(
this.alfrescoApiService.getInstance().activiti.processApi.getProcessDefinitions(opts)
)
.map(this.extractData)
.map(processDefs => processDefs.map((pd) => new ProcessDefinitionRepresentation(pd)))
.catch(err => this.handleProcessError(err));
.pipe(
map(this.extractData),
map(processDefs => processDefs.map((pd) => new ProcessDefinitionRepresentation(pd))),
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -148,11 +161,13 @@ export class ProcessService {
if (variables) {
startRequest.variables = variables;
}
return Observable.fromPromise(
return from(
this.alfrescoApiService.getInstance().activiti.processApi.startNewProcessInstance(startRequest)
)
.map((pd) => new ProcessInstance(pd))
.catch(err => this.handleProcessError(err));
.pipe(
map((pd) => new ProcessInstance(pd)),
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -161,10 +176,12 @@ export class ProcessService {
* @returns Null response notifying when the operation is complete
*/
cancelProcess(processInstanceId: string): Observable<void> {
return Observable.fromPromise(
return from<void>(
this.alfrescoApiService.getInstance().activiti.processApi.deleteProcessInstance(processInstanceId)
)
.catch(err => this.handleProcessError(err));
.pipe(
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -173,11 +190,13 @@ export class ProcessService {
* @returns Array of instance variable info
*/
getProcessInstanceVariables(processInstanceId: string): Observable<ProcessInstanceVariable[]> {
return Observable.fromPromise(
return from(
this.alfrescoApiService.getInstance().activiti.processInstanceVariablesApi.getProcessInstanceVariables(processInstanceId)
)
.map((processVars: any[]) => processVars.map((pd) => new ProcessInstanceVariable(pd)))
.catch(err => this.handleProcessError(err));
.pipe(
map((processVars: any[]) => processVars.map((pd) => new ProcessInstanceVariable(pd))),
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -187,10 +206,12 @@ export class ProcessService {
* @returns Array of instance variable info
*/
createOrUpdateProcessInstanceVariables(processInstanceId: string, variables: ProcessInstanceVariable[]): Observable<ProcessInstanceVariable[]> {
return Observable.fromPromise(
return from<ProcessInstanceVariable[]>(
this.alfrescoApiService.getInstance().activiti.processInstanceVariablesApi.createOrUpdateProcessInstanceVariables(processInstanceId, variables)
)
.catch(err => this.handleProcessError(err));
.pipe(
catchError(err => this.handleProcessError(err))
);
}
/**
@@ -200,10 +221,12 @@ export class ProcessService {
* @returns Null response notifying when the operation is complete
*/
deleteProcessInstanceVariable(processInstanceId: string, variableName: string): Observable<void> {
return Observable.fromPromise(
return from<void>(
this.alfrescoApiService.getInstance().activiti.processInstanceVariablesApi.deleteProcessInstanceVariable(processInstanceId, variableName)
)
.catch(err => this.handleProcessError(err));
.pipe(
catchError(err => this.handleProcessError(err))
);
}
private extractData(res: any) {
@@ -211,6 +234,6 @@ export class ProcessService {
}
private handleProcessError(error: any) {
return Observable.throw(error || 'Server error');
return throwError(error || 'Server error');
}
}