mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
The process filter should not be created twice (#1789)
This commit is contained in:
committed by
Denys Vuika
parent
a608bc40a4
commit
406d96d5bf
@@ -105,14 +105,33 @@ export class ActivitiFilters implements OnInit, OnChanges {
|
||||
getFiltersByAppId(appId?: string) {
|
||||
this.activiti.getTaskListFilters(appId).subscribe(
|
||||
(res: FilterRepresentationModel[]) => {
|
||||
this.resetFilter();
|
||||
res.forEach((filter) => {
|
||||
this.filterObserver.next(filter);
|
||||
});
|
||||
this.selectFirstFilter();
|
||||
this.onSuccess.emit(res);
|
||||
if (res.length === 0 && this.isFilterListEmpty()) {
|
||||
this.activiti.createDefaultFilters(appId).subscribe(
|
||||
(resDefault: FilterRepresentationModel[]) => {
|
||||
this.resetFilter();
|
||||
resDefault.forEach((filter) => {
|
||||
this.filterObserver.next(filter);
|
||||
});
|
||||
|
||||
this.selectFirstFilter();
|
||||
this.onSuccess.emit(resDefault);
|
||||
},
|
||||
(errDefault: any) => {
|
||||
this.logService.error(errDefault);
|
||||
this.onError.emit(errDefault);
|
||||
}
|
||||
);
|
||||
} else {
|
||||
this.resetFilter();
|
||||
res.forEach((filter) => {
|
||||
this.filterObserver.next(filter);
|
||||
});
|
||||
|
||||
this.selectFirstFilter();
|
||||
this.onSuccess.emit(res);
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
(err: any) => {
|
||||
this.logService.error(err);
|
||||
this.onError.emit(err);
|
||||
}
|
||||
|
@@ -26,14 +26,9 @@ import {
|
||||
} from '../models/filter.model';
|
||||
import { Comment } from '../models/comment.model';
|
||||
|
||||
declare let AlfrescoApi: any;
|
||||
declare let jasmine: any;
|
||||
|
||||
describe('ActivitiTaskListService', () => {
|
||||
let fakeEmptyFilters = {
|
||||
size: 0, total: 0, start: 0,
|
||||
data: []
|
||||
};
|
||||
|
||||
let fakeFilters = {
|
||||
size: 2, total: 2, start: 0,
|
||||
@@ -431,29 +426,50 @@ describe('ActivitiTaskListService', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('should call the createDefaultFilter when the list is empty', (done) => {
|
||||
spyOn(service, 'createDefaultFilter');
|
||||
|
||||
service.getTaskListFilters().subscribe(
|
||||
(res) => {
|
||||
expect(service.createDefaultFilter).toHaveBeenCalled();
|
||||
it('should return the default filters', (done) => {
|
||||
service.createDefaultFilters('1234').subscribe(
|
||||
(res: FilterRepresentationModel []) => {
|
||||
expect(res).toBeDefined();
|
||||
expect(res.length).toEqual(4);
|
||||
expect(res[0].name).toEqual('Involved Tasks');
|
||||
expect(res[1].name).toEqual('My Tasks');
|
||||
expect(res[2].name).toEqual('Queued Tasks');
|
||||
expect(res[3].name).toEqual('Completed Tasks');
|
||||
done();
|
||||
}
|
||||
);
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
jasmine.Ajax.requests.at(0).respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify(fakeEmptyFilters)
|
||||
responseText: JSON.stringify({
|
||||
id: '111', name: 'Involved Tasks', filter: { assignment: 'fake-involved' }
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
it('should return the default filters', () => {
|
||||
spyOn(service, 'addFilter');
|
||||
let filters = service.createDefaultFilter(null);
|
||||
expect(service.addFilter).toHaveBeenCalledTimes(4);
|
||||
expect(filters).toBeDefined();
|
||||
expect(filters.length).toEqual(4);
|
||||
jasmine.Ajax.requests.at(1).respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({
|
||||
id: '222', name: 'My Tasks', filter: { assignment: 'fake-assignee' }
|
||||
})
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.at(2).respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({
|
||||
id: '333', name: 'Queued Tasks', filter: { assignment: 'fake-candidate' }
|
||||
})
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.at(3).respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({
|
||||
id: '444', name: 'Completed Tasks', filter: { assignment: 'fake-involved' }
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
it('should add a filter ', (done) => {
|
||||
|
@@ -61,9 +61,6 @@ export class ActivitiTaskListService {
|
||||
let filterModel = new FilterRepresentationModel(filter);
|
||||
filters.push(filterModel);
|
||||
});
|
||||
if (response && response.data && response.data.length === 0) {
|
||||
return this.createDefaultFilter(appId);
|
||||
}
|
||||
return filters;
|
||||
}).catch(err => this.handleError(err));
|
||||
}
|
||||
@@ -204,26 +201,46 @@ export class ActivitiTaskListService {
|
||||
* @param appId
|
||||
* @returns {FilterRepresentationModel[]}
|
||||
*/
|
||||
createDefaultFilter(appId: string): FilterRepresentationModel[] {
|
||||
let filters: FilterRepresentationModel[] = [];
|
||||
|
||||
public createDefaultFilters(appId: string): Observable<FilterRepresentationModel[]> {
|
||||
let involvedTasksFilter = this.getInvolvedTasksFilterInstance(appId);
|
||||
this.addFilter(involvedTasksFilter);
|
||||
filters.push(involvedTasksFilter);
|
||||
let involvedObservable = this.addFilter(involvedTasksFilter);
|
||||
|
||||
let myTasksFilter = this.getMyTasksFilterInstance(appId);
|
||||
this.addFilter(myTasksFilter);
|
||||
filters.push(myTasksFilter);
|
||||
let myTaskObservable = this.addFilter(myTasksFilter);
|
||||
|
||||
let queuedTasksFilter = this.getQueuedTasksFilterInstance(appId);
|
||||
this.addFilter(queuedTasksFilter);
|
||||
filters.push(queuedTasksFilter);
|
||||
let queuedObservable = this.addFilter(queuedTasksFilter);
|
||||
|
||||
let completedTasksFilter = this.getCompletedTasksFilterInstance(appId);
|
||||
this.addFilter(completedTasksFilter);
|
||||
filters.push(completedTasksFilter);
|
||||
let completeObservable = this.addFilter(completedTasksFilter);
|
||||
|
||||
return filters;
|
||||
return Observable.create(observer => {
|
||||
Observable.forkJoin(
|
||||
involvedObservable,
|
||||
myTaskObservable,
|
||||
queuedObservable,
|
||||
completeObservable
|
||||
).subscribe(
|
||||
(res) => {
|
||||
let filters: FilterRepresentationModel[] = [];
|
||||
res.forEach((filter) => {
|
||||
if (filter.name === involvedTasksFilter.name) {
|
||||
filters.push(involvedTasksFilter);
|
||||
} else if (filter.name === myTasksFilter.name) {
|
||||
filters.push(myTasksFilter);
|
||||
} else if (filter.name === queuedTasksFilter.name) {
|
||||
filters.push(queuedTasksFilter);
|
||||
} else if (filter.name === completedTasksFilter.name) {
|
||||
filters.push(completedTasksFilter);
|
||||
}
|
||||
});
|
||||
observer.next(filters);
|
||||
observer.complete();
|
||||
},
|
||||
(err: any) => {
|
||||
this.logService.error(err);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user