mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
#514 select filters by appId and AppName
This commit is contained in:
@@ -11,16 +11,16 @@
|
||||
<section class="mdl-layout__tab-panel is-active" id="scroll-tab-1">
|
||||
<div class="page-content">
|
||||
<div class="mdl-grid">
|
||||
<div class="mdl-cell mdl-cell--2-col task-column">
|
||||
<div class="mdl-cell mdl-cell--2-col task-column mdl-shadow--2dp">
|
||||
<span>Task Filters</span>
|
||||
<activiti-filters (filterClick)="onFilterClick($event)"></activiti-filters>
|
||||
<activiti-filters (filterClick)="onFilterClick($event)" appName='Visit'></activiti-filters>
|
||||
</div>
|
||||
<div class="mdl-cell mdl-cell--3-col task-column">
|
||||
<div class="mdl-cell mdl-cell--3-col task-column mdl-shadow--2dp">
|
||||
<span>Task List</span>
|
||||
<activiti-tasklist *ngIf="isTaskListSelected()" [taskFilter]="taskFilter" [schemaColumn]="schemaColumn"
|
||||
(rowClick)="onRowClick($event)" #activititasklist></activiti-tasklist>
|
||||
</div>
|
||||
<div class="mdl-cell mdl-cell--7-col task-column">
|
||||
<div class="mdl-cell mdl-cell--7-col task-column mdl-shadow--2dp">
|
||||
<span>Task Details</span>
|
||||
<activiti-task-details [taskId]="currentTaskId" #activitidetails></activiti-task-details>
|
||||
</div>
|
||||
|
@@ -57,7 +57,6 @@ describe('ActivitiFilters', () => {
|
||||
|
||||
filterList.onSuccess.subscribe( (res) => {
|
||||
expect(res).toBeDefined();
|
||||
expect(res).toEqual('Filter task list loaded');
|
||||
expect(filterList.filters).toBeDefined();
|
||||
expect(filterList.filters.length).toEqual(2);
|
||||
expect(filterList.filters[0].name).toEqual('FakeInvolvedTasks');
|
||||
@@ -73,7 +72,6 @@ describe('ActivitiFilters', () => {
|
||||
|
||||
filterList.onError.subscribe( (err) => {
|
||||
expect(err).toBeDefined();
|
||||
expect(err).toEqual('Error to load a task filter list');
|
||||
done();
|
||||
});
|
||||
|
||||
|
@@ -15,7 +15,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { Component, Output, EventEmitter, OnInit } from '@angular/core';
|
||||
import { Component, Output, EventEmitter, OnInit, Input } from '@angular/core';
|
||||
import { AlfrescoTranslationService, AlfrescoAuthenticationService, AlfrescoPipeTranslate } from 'ng2-alfresco-core';
|
||||
import { ActivitiTaskListService } from './../services/activiti-tasklist.service';
|
||||
import { FilterModel } from '../models/filter.model';
|
||||
@@ -40,10 +40,16 @@ export class ActivitiFilters implements OnInit {
|
||||
filterClick: EventEmitter<FilterModel> = new EventEmitter<FilterModel>();
|
||||
|
||||
@Output()
|
||||
onSuccess: EventEmitter<string> = new EventEmitter<string>();
|
||||
onSuccess: EventEmitter<any> = new EventEmitter<any>();
|
||||
|
||||
@Output()
|
||||
onError: EventEmitter<string> = new EventEmitter<string>();
|
||||
onError: EventEmitter<any> = new EventEmitter<any>();
|
||||
|
||||
@Input()
|
||||
appId: string;
|
||||
|
||||
@Input()
|
||||
appName: string;
|
||||
|
||||
private filterObserver: Observer<FilterModel>;
|
||||
filter$: Observable<FilterModel>;
|
||||
@@ -80,20 +86,50 @@ export class ActivitiFilters implements OnInit {
|
||||
* @param tasks
|
||||
*/
|
||||
private load() {
|
||||
this.activiti.getTaskListFilters().subscribe(
|
||||
if (this.appName) {
|
||||
this.filterByAppName();
|
||||
} else {
|
||||
this.filterByAppId();
|
||||
}
|
||||
}
|
||||
|
||||
private filterByAppId() {
|
||||
this.activiti.getTaskListFilters(this.appId).subscribe(
|
||||
(res: FilterModel[]) => {
|
||||
res.forEach((filter) => {
|
||||
this.filterObserver.next(filter);
|
||||
});
|
||||
this.onSuccess.emit('Filter task list loaded');
|
||||
this.onSuccess.emit(res);
|
||||
},
|
||||
(err) => {
|
||||
console.log(err);
|
||||
this.onError.emit('Error to load a task filter list');
|
||||
this.onError.emit(err);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
private filterByAppName() {
|
||||
this.activiti.getDeployedApplications(this.appName).subscribe(
|
||||
application => {
|
||||
this.activiti.getTaskListFilters(application.id).subscribe(
|
||||
(res: FilterModel[]) => {
|
||||
res.forEach((filter) => {
|
||||
this.filterObserver.next(filter);
|
||||
});
|
||||
this.onSuccess.emit(res);
|
||||
},
|
||||
(err) => {
|
||||
console.log(err);
|
||||
this.onError.emit(err);
|
||||
}
|
||||
);
|
||||
},
|
||||
(err) => {
|
||||
console.log(err);
|
||||
this.onError.emit(err);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Pass the selected filter as next
|
||||
* @param filter
|
||||
|
@@ -96,7 +96,6 @@ describe('ActivitiTaskList', () => {
|
||||
|
||||
taskList.onSuccess.subscribe( (res) => {
|
||||
expect(res).toBeDefined();
|
||||
expect(res).toEqual('Task List loaded');
|
||||
expect(taskList.tasks).toBeDefined();
|
||||
expect(taskList.isTaskListEmpty()).not.toBeTruthy();
|
||||
expect(taskList.tasks.getRows().length).toEqual(2);
|
||||
@@ -114,7 +113,6 @@ describe('ActivitiTaskList', () => {
|
||||
|
||||
taskList.onError.subscribe( (err) => {
|
||||
expect(err).toBeDefined();
|
||||
expect(err).toEqual('Error to load a tasks list');
|
||||
done();
|
||||
});
|
||||
|
||||
|
@@ -51,10 +51,10 @@ export class ActivitiTaskList implements OnInit {
|
||||
rowClick: EventEmitter<string> = new EventEmitter<string>();
|
||||
|
||||
@Output()
|
||||
onSuccess: EventEmitter<string> = new EventEmitter<string>();
|
||||
onSuccess: EventEmitter<any> = new EventEmitter<any>();
|
||||
|
||||
@Output()
|
||||
onError: EventEmitter<string> = new EventEmitter<string>();
|
||||
onError: EventEmitter<any> = new EventEmitter<any>();
|
||||
|
||||
data: DataTableAdapter;
|
||||
|
||||
@@ -91,10 +91,10 @@ export class ActivitiTaskList implements OnInit {
|
||||
this.activiti.getTasks(filter).subscribe(
|
||||
(res) => {
|
||||
this.renderTasks(res.data);
|
||||
this.onSuccess.emit('Task List loaded');
|
||||
this.onSuccess.emit(res);
|
||||
}, (err) => {
|
||||
console.error(err);
|
||||
this.onError.emit('Error to load a tasks list');
|
||||
this.onError.emit(err);
|
||||
});
|
||||
}
|
||||
|
||||
|
@@ -29,11 +29,11 @@ export class FilterModel {
|
||||
icon: string;
|
||||
filter: FilterParamsModel;
|
||||
|
||||
constructor(name: string, recent: boolean, icon: string, query: string, state: string, assignment: string) {
|
||||
constructor(name: string, recent: boolean, icon: string, query: string, state: string, assignment: string, appDefinitionId?: string) {
|
||||
this.name = name;
|
||||
this.recent = recent;
|
||||
this.icon = icon;
|
||||
this.filter = new FilterParamsModel(query, state, assignment);
|
||||
this.filter = new FilterParamsModel(query, state, assignment, appDefinitionId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,10 +48,12 @@ export class FilterParamsModel {
|
||||
name: string;
|
||||
state: string;
|
||||
assignment: string;
|
||||
appDefinitionId: string;
|
||||
|
||||
constructor(query: string, state: string, assignment: string) {
|
||||
constructor(query: string, state: string, assignment: string, appDefinitionId?: string) {
|
||||
this.name = query;
|
||||
this.state = state;
|
||||
this.assignment = assignment;
|
||||
this.appDefinitionId = appDefinitionId;
|
||||
}
|
||||
}
|
||||
|
@@ -32,18 +32,32 @@ export class ActivitiTaskListService {
|
||||
constructor(private http: Http, public alfrescoSettingsService: AlfrescoSettingsService) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrive all the Deployed app
|
||||
* @returns {Observable<any>}
|
||||
*/
|
||||
getDeployedApplications(name: string): Observable<any> {
|
||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/runtime-app-definitions`;
|
||||
return this.http
|
||||
.get(url, this.getRequestOptions())
|
||||
.map((response: Response) => response.json().data.find(p => p.name === name))
|
||||
.do(data => console.log('Application: ' + JSON.stringify(data)))
|
||||
.catch(this.handleError);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrive all the Tasks filters
|
||||
* @returns {Observable<any>}
|
||||
*/
|
||||
getTaskListFilters(): Observable<any> {
|
||||
return Observable.fromPromise(this.callApiTaskFilters())
|
||||
getTaskListFilters(appId?: string): Observable<any> {
|
||||
return Observable.fromPromise(this.callApiTaskFilters(appId))
|
||||
.map(res => res.json())
|
||||
.map((response: any) => {
|
||||
let filters: FilterModel[] = [];
|
||||
response.data.forEach((filter) => {
|
||||
let filterModel = new FilterModel(filter.name, filter.recent, filter.icon,
|
||||
filter.filter.name, filter.filter.state, filter.filter.assignment);
|
||||
filter.filter.name, filter.filter.state, filter.filter.assignment, appId);
|
||||
filters.push(filterModel);
|
||||
});
|
||||
return filters;
|
||||
@@ -160,100 +174,65 @@ export class ActivitiTaskListService {
|
||||
private callApiTasksFiltered(filter: FilterParamsModel) {
|
||||
let data = JSON.stringify(filter);
|
||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/query`;
|
||||
let headers = new Headers({
|
||||
'Content-Type': 'application/json',
|
||||
'Cache-Control': 'no-cache'
|
||||
});
|
||||
let options = new RequestOptions({headers: headers});
|
||||
|
||||
return this.http
|
||||
.post(url, data, options).toPromise();
|
||||
.post(url, data, this.getRequestOptions()).toPromise();
|
||||
}
|
||||
|
||||
private callApiTaskFilters() {
|
||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/filters/tasks`;
|
||||
let headers = new Headers({
|
||||
'Content-Type': 'application/json',
|
||||
'Cache-Control': 'no-cache'
|
||||
});
|
||||
let options = new RequestOptions({headers: headers});
|
||||
private callApiTaskFilters(appId?: string) {
|
||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl();
|
||||
if (appId) {
|
||||
url = url + `/api/enterprise/filters/tasks?appId=${appId}`;
|
||||
} else {
|
||||
url = url + `/api/enterprise/filters/tasks`;
|
||||
}
|
||||
|
||||
return this.http
|
||||
.get(url, options).toPromise();
|
||||
.get(url, this.getRequestOptions()).toPromise();
|
||||
}
|
||||
|
||||
private callApiTaskDetails(id: string) {
|
||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${id}`;
|
||||
let headers = new Headers({
|
||||
'Content-Type': 'application/json',
|
||||
'Cache-Control': 'no-cache'
|
||||
});
|
||||
let options = new RequestOptions({headers: headers});
|
||||
|
||||
return this.http
|
||||
.get(url, options).toPromise();
|
||||
.get(url, this.getRequestOptions()).toPromise();
|
||||
}
|
||||
|
||||
private callApiTaskComments(id: string) {
|
||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${id}/comments`;
|
||||
let headers = new Headers({
|
||||
'Content-Type': 'application/json',
|
||||
'Cache-Control': 'no-cache'
|
||||
});
|
||||
let options = new RequestOptions({headers: headers});
|
||||
|
||||
return this.http
|
||||
.get(url, options).toPromise();
|
||||
.get(url, this.getRequestOptions()).toPromise();
|
||||
}
|
||||
|
||||
private callApiAddTaskComment(id: string, message: string) {
|
||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${id}/comments`;
|
||||
let headers = new Headers({
|
||||
'Content-Type': 'application/json',
|
||||
'Cache-Control': 'no-cache'
|
||||
});
|
||||
let body = JSON.stringify({message: message});
|
||||
let options = new RequestOptions({headers: headers});
|
||||
|
||||
return this.http
|
||||
.post(url, body, options).toPromise();
|
||||
.post(url, body, this.getRequestOptions()).toPromise();
|
||||
}
|
||||
|
||||
private callApiAddTask(task: TaskDetailsModel) {
|
||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${task.parentTaskId}/checklist`;
|
||||
let headers = new Headers({
|
||||
'Content-Type': 'application/json',
|
||||
'Cache-Control': 'no-cache'
|
||||
});
|
||||
let body = JSON.stringify(task);
|
||||
let options = new RequestOptions({headers: headers});
|
||||
|
||||
return this.http
|
||||
.post(url, body, options).toPromise();
|
||||
.post(url, body, this.getRequestOptions()).toPromise();
|
||||
}
|
||||
|
||||
private callApiTaskChecklist(id: string) {
|
||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${id}/checklist`;
|
||||
let headers = new Headers({
|
||||
'Content-Type': 'application/json',
|
||||
'Cache-Control': 'no-cache'
|
||||
});
|
||||
let options = new RequestOptions({headers: headers});
|
||||
|
||||
return this.http
|
||||
.get(url, options).toPromise();
|
||||
.get(url, this.getRequestOptions()).toPromise();
|
||||
}
|
||||
|
||||
private callApiCompleteTask(id: string) {
|
||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${id}/action/complete`;
|
||||
let headers = new Headers({
|
||||
'Content-Type': 'application/json',
|
||||
'Cache-Control': 'no-cache'
|
||||
});
|
||||
let options = new RequestOptions({headers: headers});
|
||||
|
||||
return this.http
|
||||
.put(url, options).toPromise();
|
||||
.put(url, this.getRequestOptions()).toPromise();
|
||||
}
|
||||
|
||||
|
||||
@@ -267,4 +246,15 @@ export class ActivitiTaskListService {
|
||||
return Observable.throw(error || 'Server error');
|
||||
}
|
||||
|
||||
private getHeaders(): Headers {
|
||||
return new Headers({
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/json'
|
||||
});
|
||||
}
|
||||
|
||||
private getRequestOptions(): RequestOptions {
|
||||
let headers = this.getHeaders();
|
||||
return new RequestOptions({headers: headers});
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user