diff --git a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts
index 98125b3730..b2fec92f42 100644
--- a/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts
+++ b/demo-shell-ng2/app/components/activiti/activiti-demo.component.ts
@@ -122,6 +122,7 @@ export class ActivitiDemoComponent implements AfterViewInit {
{type: 'text', key: 'started', title: 'Started', cssClass: 'hidden', sortable: true}
]
);
+ this.dataProcesses.setSorting(new DataSorting('started', 'desc'));
// Uncomment this line to replace all 'text' field editors with custom component
// formRenderingService.setComponentTypeResolver('text', () => CustomEditorComponent, true);
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.spec.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.spec.ts
index 54c9b3f5ab..67b80eacd0 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.spec.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.spec.ts
@@ -21,7 +21,7 @@ import { Observable } from 'rxjs/Rx';
import { ActivitiProcessInstanceListComponent } from './activiti-processlist.component';
import { AlfrescoTranslateService, CoreModule } from 'ng2-alfresco-core';
-import { DataTableModule, ObjectDataRow, DataRowEvent, ObjectDataTableAdapter } from 'ng2-alfresco-datatable';
+import { DataTableModule, ObjectDataRow, DataRowEvent, ObjectDataTableAdapter, DataSorting } from 'ng2-alfresco-datatable';
import { TranslationMock } from './../assets/translation.service.mock';
import { ProcessInstance } from '../models/process-instance.model';
@@ -275,7 +275,7 @@ describe('ActivitiProcessInstanceListComponent', () => {
});
it('should reload the list when the sort parameter changes', (done) => {
- const sort = 'desc';
+ const sort = 'created-desc';
let change = new SimpleChange(null, sort);
component.onSuccess.subscribe((res) => {
@@ -290,6 +290,21 @@ describe('ActivitiProcessInstanceListComponent', () => {
component.ngOnChanges({'sort': change});
});
+ it('should sort the list when the sort parameter changes', (done) => {
+ const sort = 'created-asc';
+ let change = new SimpleChange(null, sort);
+ let sortSpy = spyOn(component.data, 'setSorting');
+
+ component.onSuccess.subscribe((res) => {
+ expect(res).toBeDefined();
+ expect(sortSpy).toHaveBeenCalledWith(new DataSorting('started', 'asc'));
+ done();
+ });
+
+ component.sort = sort;
+ component.ngOnChanges({'sort': change});
+ });
+
it('should reload the process list when the name parameter changes', (done) => {
const name = 'FakeTaskName';
let change = new SimpleChange(null, name);
diff --git a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts
index 8e724440b4..d64a01b3bd 100644
--- a/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts
+++ b/ng2-components/ng2-activiti-processlist/src/components/activiti-processlist.component.ts
@@ -17,9 +17,9 @@
import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';
import { AlfrescoTranslateService } from 'ng2-alfresco-core';
-import { ObjectDataTableAdapter, DataTableAdapter, DataRowEvent, ObjectDataRow } from 'ng2-alfresco-datatable';
+import { ObjectDataTableAdapter, DataTableAdapter, DataRowEvent, ObjectDataRow, DataSorting } from 'ng2-alfresco-datatable';
import { TaskQueryRequestRepresentationModel } from 'ng2-activiti-tasklist';
-
+import { ProcessFilterRequestRepresentation } from '../models/process-instance-filter.model';
import { ProcessInstance } from '../models/process-instance.model';
import { ActivitiProcessService } from '../services/activiti-process.service';
@@ -46,7 +46,7 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges {
@Input()
name: string;
- requestNode: TaskQueryRequestRepresentationModel;
+ requestNode: ProcessFilterRequestRepresentation;
@Input()
data: DataTableAdapter;
@@ -130,7 +130,7 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges {
);
}
- private load(requestNode: TaskQueryRequestRepresentationModel) {
+ private load(requestNode: ProcessFilterRequestRepresentation) {
this.processService.getProcessInstances(requestNode)
.subscribe(
(response) => {
@@ -168,9 +168,25 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges {
*/
private renderInstances(instances: any[]) {
instances = this.optimizeNames(instances);
+ this.setDatatableSorting();
this.data.setRows(instances);
}
+ /**
+ * Sort the datatable rows based on current value of 'sort' property
+ */
+ private setDatatableSorting() {
+ if (!this.sort) {
+ return;
+ }
+ let sortingParams: string[] = this.sort.split('-');
+ if (sortingParams.length === 2) {
+ let sortColumn = sortingParams[0] === 'created' ? 'started' : sortingParams[0];
+ let sortOrder = sortingParams[1];
+ this.data.setSorting(new DataSorting(sortColumn, sortOrder));
+ }
+ }
+
/**
* Select the first instance of a list if present
*/
@@ -226,10 +242,9 @@ export class ActivitiProcessInstanceListComponent implements OnInit, OnChanges {
let requestNode = {
appDefinitionId: this.appId,
processDefinitionKey: this.processDefinitionKey,
- text: this.name,
state: this.state,
sort: this.sort
};
- return new TaskQueryRequestRepresentationModel(requestNode);
+ return new ProcessFilterRequestRepresentation(requestNode);
}
}
diff --git a/ng2-components/ng2-activiti-tasklist/README.md b/ng2-components/ng2-activiti-tasklist/README.md
index 2eb7821a25..8c36a53110 100644
--- a/ng2-components/ng2-activiti-tasklist/README.md
+++ b/ng2-components/ng2-activiti-tasklist/README.md
@@ -329,6 +329,30 @@ The component shows all the available filters.
No options
+## Basic usage example Activiti Checklist
+
+The component shows the checklist task functionality.
+
+```html
+