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">
|
<section class="mdl-layout__tab-panel is-active" id="scroll-tab-1">
|
||||||
<div class="page-content">
|
<div class="page-content">
|
||||||
<div class="mdl-grid">
|
<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>
|
<span>Task Filters</span>
|
||||||
<activiti-filters (filterClick)="onFilterClick($event)"></activiti-filters>
|
<activiti-filters (filterClick)="onFilterClick($event)" appName='Visit'></activiti-filters>
|
||||||
</div>
|
</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>
|
<span>Task List</span>
|
||||||
<activiti-tasklist *ngIf="isTaskListSelected()" [taskFilter]="taskFilter" [schemaColumn]="schemaColumn"
|
<activiti-tasklist *ngIf="isTaskListSelected()" [taskFilter]="taskFilter" [schemaColumn]="schemaColumn"
|
||||||
(rowClick)="onRowClick($event)" #activititasklist></activiti-tasklist>
|
(rowClick)="onRowClick($event)" #activititasklist></activiti-tasklist>
|
||||||
</div>
|
</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>
|
<span>Task Details</span>
|
||||||
<activiti-task-details [taskId]="currentTaskId" #activitidetails></activiti-task-details>
|
<activiti-task-details [taskId]="currentTaskId" #activitidetails></activiti-task-details>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -57,7 +57,6 @@ describe('ActivitiFilters', () => {
|
|||||||
|
|
||||||
filterList.onSuccess.subscribe( (res) => {
|
filterList.onSuccess.subscribe( (res) => {
|
||||||
expect(res).toBeDefined();
|
expect(res).toBeDefined();
|
||||||
expect(res).toEqual('Filter task list loaded');
|
|
||||||
expect(filterList.filters).toBeDefined();
|
expect(filterList.filters).toBeDefined();
|
||||||
expect(filterList.filters.length).toEqual(2);
|
expect(filterList.filters.length).toEqual(2);
|
||||||
expect(filterList.filters[0].name).toEqual('FakeInvolvedTasks');
|
expect(filterList.filters[0].name).toEqual('FakeInvolvedTasks');
|
||||||
@@ -73,7 +72,6 @@ describe('ActivitiFilters', () => {
|
|||||||
|
|
||||||
filterList.onError.subscribe( (err) => {
|
filterList.onError.subscribe( (err) => {
|
||||||
expect(err).toBeDefined();
|
expect(err).toBeDefined();
|
||||||
expect(err).toEqual('Error to load a task filter list');
|
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
* limitations under the License.
|
* 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 { AlfrescoTranslationService, AlfrescoAuthenticationService, AlfrescoPipeTranslate } from 'ng2-alfresco-core';
|
||||||
import { ActivitiTaskListService } from './../services/activiti-tasklist.service';
|
import { ActivitiTaskListService } from './../services/activiti-tasklist.service';
|
||||||
import { FilterModel } from '../models/filter.model';
|
import { FilterModel } from '../models/filter.model';
|
||||||
@@ -40,10 +40,16 @@ export class ActivitiFilters implements OnInit {
|
|||||||
filterClick: EventEmitter<FilterModel> = new EventEmitter<FilterModel>();
|
filterClick: EventEmitter<FilterModel> = new EventEmitter<FilterModel>();
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
onSuccess: EventEmitter<string> = new EventEmitter<string>();
|
onSuccess: EventEmitter<any> = new EventEmitter<any>();
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
onError: EventEmitter<string> = new EventEmitter<string>();
|
onError: EventEmitter<any> = new EventEmitter<any>();
|
||||||
|
|
||||||
|
@Input()
|
||||||
|
appId: string;
|
||||||
|
|
||||||
|
@Input()
|
||||||
|
appName: string;
|
||||||
|
|
||||||
private filterObserver: Observer<FilterModel>;
|
private filterObserver: Observer<FilterModel>;
|
||||||
filter$: Observable<FilterModel>;
|
filter$: Observable<FilterModel>;
|
||||||
@@ -80,20 +86,50 @@ export class ActivitiFilters implements OnInit {
|
|||||||
* @param tasks
|
* @param tasks
|
||||||
*/
|
*/
|
||||||
private load() {
|
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: FilterModel[]) => {
|
||||||
res.forEach((filter) => {
|
res.forEach((filter) => {
|
||||||
this.filterObserver.next(filter);
|
this.filterObserver.next(filter);
|
||||||
});
|
});
|
||||||
this.onSuccess.emit('Filter task list loaded');
|
this.onSuccess.emit(res);
|
||||||
},
|
},
|
||||||
(err) => {
|
(err) => {
|
||||||
console.log(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
|
* Pass the selected filter as next
|
||||||
* @param filter
|
* @param filter
|
||||||
|
@@ -96,7 +96,6 @@ describe('ActivitiTaskList', () => {
|
|||||||
|
|
||||||
taskList.onSuccess.subscribe( (res) => {
|
taskList.onSuccess.subscribe( (res) => {
|
||||||
expect(res).toBeDefined();
|
expect(res).toBeDefined();
|
||||||
expect(res).toEqual('Task List loaded');
|
|
||||||
expect(taskList.tasks).toBeDefined();
|
expect(taskList.tasks).toBeDefined();
|
||||||
expect(taskList.isTaskListEmpty()).not.toBeTruthy();
|
expect(taskList.isTaskListEmpty()).not.toBeTruthy();
|
||||||
expect(taskList.tasks.getRows().length).toEqual(2);
|
expect(taskList.tasks.getRows().length).toEqual(2);
|
||||||
@@ -114,7 +113,6 @@ describe('ActivitiTaskList', () => {
|
|||||||
|
|
||||||
taskList.onError.subscribe( (err) => {
|
taskList.onError.subscribe( (err) => {
|
||||||
expect(err).toBeDefined();
|
expect(err).toBeDefined();
|
||||||
expect(err).toEqual('Error to load a tasks list');
|
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@@ -51,10 +51,10 @@ export class ActivitiTaskList implements OnInit {
|
|||||||
rowClick: EventEmitter<string> = new EventEmitter<string>();
|
rowClick: EventEmitter<string> = new EventEmitter<string>();
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
onSuccess: EventEmitter<string> = new EventEmitter<string>();
|
onSuccess: EventEmitter<any> = new EventEmitter<any>();
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
onError: EventEmitter<string> = new EventEmitter<string>();
|
onError: EventEmitter<any> = new EventEmitter<any>();
|
||||||
|
|
||||||
data: DataTableAdapter;
|
data: DataTableAdapter;
|
||||||
|
|
||||||
@@ -91,10 +91,10 @@ export class ActivitiTaskList implements OnInit {
|
|||||||
this.activiti.getTasks(filter).subscribe(
|
this.activiti.getTasks(filter).subscribe(
|
||||||
(res) => {
|
(res) => {
|
||||||
this.renderTasks(res.data);
|
this.renderTasks(res.data);
|
||||||
this.onSuccess.emit('Task List loaded');
|
this.onSuccess.emit(res);
|
||||||
}, (err) => {
|
}, (err) => {
|
||||||
console.error(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;
|
icon: string;
|
||||||
filter: FilterParamsModel;
|
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.name = name;
|
||||||
this.recent = recent;
|
this.recent = recent;
|
||||||
this.icon = icon;
|
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;
|
name: string;
|
||||||
state: string;
|
state: string;
|
||||||
assignment: 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.name = query;
|
||||||
this.state = state;
|
this.state = state;
|
||||||
this.assignment = assignment;
|
this.assignment = assignment;
|
||||||
|
this.appDefinitionId = appDefinitionId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -32,18 +32,32 @@ export class ActivitiTaskListService {
|
|||||||
constructor(private http: Http, public alfrescoSettingsService: AlfrescoSettingsService) {
|
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
|
* Retrive all the Tasks filters
|
||||||
* @returns {Observable<any>}
|
* @returns {Observable<any>}
|
||||||
*/
|
*/
|
||||||
getTaskListFilters(): Observable<any> {
|
getTaskListFilters(appId?: string): Observable<any> {
|
||||||
return Observable.fromPromise(this.callApiTaskFilters())
|
return Observable.fromPromise(this.callApiTaskFilters(appId))
|
||||||
.map(res => res.json())
|
.map(res => res.json())
|
||||||
.map((response: any) => {
|
.map((response: any) => {
|
||||||
let filters: FilterModel[] = [];
|
let filters: FilterModel[] = [];
|
||||||
response.data.forEach((filter) => {
|
response.data.forEach((filter) => {
|
||||||
let filterModel = new FilterModel(filter.name, filter.recent, filter.icon,
|
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);
|
filters.push(filterModel);
|
||||||
});
|
});
|
||||||
return filters;
|
return filters;
|
||||||
@@ -160,100 +174,65 @@ export class ActivitiTaskListService {
|
|||||||
private callApiTasksFiltered(filter: FilterParamsModel) {
|
private callApiTasksFiltered(filter: FilterParamsModel) {
|
||||||
let data = JSON.stringify(filter);
|
let data = JSON.stringify(filter);
|
||||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/query`;
|
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
|
return this.http
|
||||||
.post(url, data, options).toPromise();
|
.post(url, data, this.getRequestOptions()).toPromise();
|
||||||
}
|
}
|
||||||
|
|
||||||
private callApiTaskFilters() {
|
private callApiTaskFilters(appId?: string) {
|
||||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/filters/tasks`;
|
let url = this.alfrescoSettingsService.getBPMApiBaseUrl();
|
||||||
let headers = new Headers({
|
if (appId) {
|
||||||
'Content-Type': 'application/json',
|
url = url + `/api/enterprise/filters/tasks?appId=${appId}`;
|
||||||
'Cache-Control': 'no-cache'
|
} else {
|
||||||
});
|
url = url + `/api/enterprise/filters/tasks`;
|
||||||
let options = new RequestOptions({headers: headers});
|
}
|
||||||
|
|
||||||
return this.http
|
return this.http
|
||||||
.get(url, options).toPromise();
|
.get(url, this.getRequestOptions()).toPromise();
|
||||||
}
|
}
|
||||||
|
|
||||||
private callApiTaskDetails(id: string) {
|
private callApiTaskDetails(id: string) {
|
||||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${id}`;
|
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
|
return this.http
|
||||||
.get(url, options).toPromise();
|
.get(url, this.getRequestOptions()).toPromise();
|
||||||
}
|
}
|
||||||
|
|
||||||
private callApiTaskComments(id: string) {
|
private callApiTaskComments(id: string) {
|
||||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${id}/comments`;
|
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
|
return this.http
|
||||||
.get(url, options).toPromise();
|
.get(url, this.getRequestOptions()).toPromise();
|
||||||
}
|
}
|
||||||
|
|
||||||
private callApiAddTaskComment(id: string, message: string) {
|
private callApiAddTaskComment(id: string, message: string) {
|
||||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${id}/comments`;
|
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 body = JSON.stringify({message: message});
|
||||||
let options = new RequestOptions({headers: headers});
|
|
||||||
|
|
||||||
return this.http
|
return this.http
|
||||||
.post(url, body, options).toPromise();
|
.post(url, body, this.getRequestOptions()).toPromise();
|
||||||
}
|
}
|
||||||
|
|
||||||
private callApiAddTask(task: TaskDetailsModel) {
|
private callApiAddTask(task: TaskDetailsModel) {
|
||||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${task.parentTaskId}/checklist`;
|
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 body = JSON.stringify(task);
|
||||||
let options = new RequestOptions({headers: headers});
|
|
||||||
|
|
||||||
return this.http
|
return this.http
|
||||||
.post(url, body, options).toPromise();
|
.post(url, body, this.getRequestOptions()).toPromise();
|
||||||
}
|
}
|
||||||
|
|
||||||
private callApiTaskChecklist(id: string) {
|
private callApiTaskChecklist(id: string) {
|
||||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${id}/checklist`;
|
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
|
return this.http
|
||||||
.get(url, options).toPromise();
|
.get(url, this.getRequestOptions()).toPromise();
|
||||||
}
|
}
|
||||||
|
|
||||||
private callApiCompleteTask(id: string) {
|
private callApiCompleteTask(id: string) {
|
||||||
let url = this.alfrescoSettingsService.getBPMApiBaseUrl() + `/api/enterprise/tasks/${id}/action/complete`;
|
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
|
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');
|
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