[ADF-3775] APS 2 Process and Task view in the ADF Demo Application (#4035)

* [ADF-3775] Created breadcrumb component for layout demo

* [ADF-3775] Created filter demo component

* [ADF-3775] Created apps demo component

* [ADF-3775] Created tasks list cloud demo component

* [ADF-3775] Created tasks process cloud demo component

* [ADF-3775] Created new cloud layout component

* [ADF-3775] Improved translation

* [ADF-3775] Fixed translation

* [ADF-3775] Improved layout

* Use the EditTaskFilters
TaskFilterCloud should have a stream of filter
Fix integration issues

* Remove useless route
Enable start task cloud button

* Remove useless pages and handle start task error event

* Fix wrong unit test

* Use the Process Cloud menu name
This commit is contained in:
Deepak Paul
2018-12-11 16:04:18 +05:30
committed by Eugenio Romano
parent 4302cfbd04
commit ced1901c89
32 changed files with 527 additions and 352 deletions

View File

@@ -17,13 +17,17 @@
import { StorageService, JwtHelperService } from '@alfresco/adf-core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { Observable, BehaviorSubject } from 'rxjs';
import { TaskFilterCloudModel } from '../models/filter-cloud.model';
@Injectable()
export class TaskFilterCloudService {
private filtersSubject: BehaviorSubject<TaskFilterCloudModel[]>;
filters$: Observable<TaskFilterCloudModel[]>;
constructor(private storage: StorageService, private jwtService: JwtHelperService) {
this.filtersSubject = new BehaviorSubject([]);
this.filters$ = this.filtersSubject.asObservable();
}
/**
@@ -31,14 +35,12 @@ export class TaskFilterCloudService {
* @param appName Name of the target app
* @returns Observable of default filters just created
*/
public createDefaultFilters(appName: string): Observable<TaskFilterCloudModel[]> {
public createDefaultFilters(appName: string) {
let myTasksFilter = this.getMyTasksFilterInstance(appName);
this.addFilter(myTasksFilter);
let completedTasksFilter = this.getCompletedTasksFilterInstance(appName);
this.addFilter(completedTasksFilter);
return this.getTaskListFilters(appName);
}
/**
@@ -50,10 +52,13 @@ export class TaskFilterCloudService {
const username = this.getUsername();
let key = `task-filters-${appName}-${username}`;
const filters = JSON.parse(this.storage.getItem(key) || '[]');
return new Observable(function(observer) {
observer.next(filters);
observer.complete();
});
if (filters.length === 0) {
this.createDefaultFilters(appName);
} else {
this.addFiltersToStream(filters);
}
return this.filters$;
}
getTaskFilterById(appName: string, id: string): TaskFilterCloudModel {
@@ -69,7 +74,7 @@ export class TaskFilterCloudService {
* @param filter The new filter to add
* @returns Details of task filter just added
*/
addFilter(filter: TaskFilterCloudModel): Observable<TaskFilterCloudModel> {
addFilter(filter: TaskFilterCloudModel) {
const username = this.getUsername();
const key = `task-filters-${filter.appName}-${username}`;
let filters = JSON.parse(this.storage.getItem(key) || '[]');
@@ -78,10 +83,11 @@ export class TaskFilterCloudService {
this.storage.setItem(key, JSON.stringify(filters));
return new Observable(function(observer) {
observer.next(filter);
observer.complete();
});
this.addFiltersToStream(filters);
}
private addFiltersToStream(filters: TaskFilterCloudModel []) {
this.filtersSubject.next(filters);
}
/**
@@ -107,9 +113,14 @@ export class TaskFilterCloudService {
const username = this.getUsername();
const key = `task-filters-${filter.appName}-${username}`;
if (key) {
let filters = JSON.parse(this.storage.getItem(key) || '[]');
let filters: TaskFilterCloudModel[] = JSON.parse(this.storage.getItem(key) || '[]');
filters = filters.filter((item) => item.id !== filter.id);
this.storage.setItem(key, JSON.stringify(filters));
if (filters.length === 0) {
this.createDefaultFilters(filter.appName);
} else {
this.addFiltersToStream(filters);
}
}
}

View File

@@ -67,14 +67,6 @@ describe('TaskFiltersCloudComponent', () => {
resolve(fakeGlobalFilter);
});
let fakeGlobalEmptyFilter = {
message: 'invalid data'
};
let fakeGlobalEmptyFilterPromise = new Promise(function (resolve, reject) {
resolve(fakeGlobalEmptyFilter);
});
let mockErrorFilterList = {
error: 'wrong request'
};
@@ -206,21 +198,6 @@ describe('TaskFiltersCloudComponent', () => {
}));
it('should be able to fetch and select the default filters if the input filter is not valid', (done) => {
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalEmptyFilterPromise));
spyOn(component, 'createFilters').and.callThrough();
const appName = 'my-app-1';
let change = new SimpleChange(null, appName, true);
component.ngOnChanges({ 'appName': change });
component.success.subscribe((res) => {
expect(res).toBeDefined();
expect(component.createFilters).not.toHaveBeenCalled();
done();
});
});
it('should select the task filter based on the input by name param', async(() => {
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(fakeGlobalFilterObservable);

View File

@@ -80,12 +80,8 @@ export class TaskFiltersCloudComponent implements OnChanges {
this.filters$.subscribe(
(res: TaskFilterCloudModel[]) => {
if (res.length === 0) {
this.createFilters(appName);
} else {
this.resetFilter();
this.filters = res;
}
this.resetFilter();
this.filters = Object.assign([], res);
this.selectFilterAndEmit(this.filterParam);
this.success.emit(res);
},
@@ -95,23 +91,6 @@ export class TaskFiltersCloudComponent implements OnChanges {
);
}
/**
* Create default filters by appId
*/
createFilters(appName?: string) {
this.filters$ = this.taskFilterCloudService.createDefaultFilters(appName);
this.filters$.subscribe(
(resDefault: TaskFilterCloudModel[]) => {
this.resetFilter();
this.filters = resDefault;
},
(errDefault: any) => {
this.error.emit(errDefault);
}
);
}
public selectFilter(newFilter: TaskFilterCloudModel) {
if (newFilter) {
this.currentFilter = this.filters.find( (filter: TaskFilterCloudModel, index) =>