diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.spec.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.spec.ts
index effa712aaf..ef67877cdf 100644
--- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.spec.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.spec.ts
@@ -27,6 +27,7 @@ import { ActivitiTaskDetails } from './activiti-task-details.component';
import { ActivitiTaskListService } from './../services/activiti-tasklist.service';
import { ActivitiPeopleService } from './../services/activiti-people.service';
import { taskDetailsMock, taskFormMock, tasksMock, noDataMock } from './../assets/task-details.mock';
+import { TaskDetailsModel } from '../models/task-details.model';
describe('ActivitiTaskDetails', () => {
@@ -246,6 +247,13 @@ describe('ActivitiTaskDetails', () => {
expect(closeSpy).toHaveBeenCalled();
});
+ it('should emit a task created event when checklist task is created', () => {
+ let emitSpy: jasmine.Spy = spyOn(component.taskCreated, 'emit');
+ let mockTask = new TaskDetailsModel(taskDetailsMock);
+ component.onChecklistTaskCreated(mockTask);
+ expect(emitSpy).toHaveBeenCalled();
+ });
+
});
});
diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.ts
index d8fd6f3729..3ccc99870c 100644
--- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-task-details.component.ts
@@ -70,6 +70,9 @@ export class ActivitiTaskDetails implements OnInit, OnChanges {
@Output()
formLoaded: EventEmitter
= new EventEmitter();
+ @Output()
+ taskCreated: EventEmitter = new EventEmitter();
+
@Output()
onError: EventEmitter = new EventEmitter();
@@ -224,6 +227,10 @@ export class ActivitiTaskDetails implements OnInit, OnChanges {
this.formLoaded.emit(form);
}
+ onChecklistTaskCreated(task: TaskDetailsModel) {
+ this.taskCreated.emit(task);
+ }
+
onFormError(error: any) {
this.errorDialog.nativeElement.showModal();
this.onError.emit(error);
diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts
index 8ca3823570..fc4b02eb59 100644
--- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts
@@ -161,7 +161,7 @@ describe('ActivitiTaskList', () => {
});
it('should return a currentId null when the taskList is empty', () => {
- component.selectFirst();
+ component.selectTask(null);
expect(component.getCurrentId()).toBeNull();
});
diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts
index d5aee51d73..db9ae4d8c0 100644
--- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts
@@ -49,6 +49,9 @@ export class ActivitiTaskList implements OnInit, OnChanges {
@Input()
name: string;
+ @Input()
+ landingTaskId: string;
+
requestNode: TaskQueryRequestRepresentationModel;
@Input()
@@ -142,7 +145,7 @@ export class ActivitiTaskList implements OnInit, OnChanges {
(response) => {
let instancesRow = this.createDataRow(response);
this.renderInstances(instancesRow);
- this.selectFirst();
+ this.selectTask(requestNode.landingTaskId);
this.onSuccess.emit(response);
}, (error) => {
this.logService.error(error);
@@ -182,16 +185,24 @@ export class ActivitiTaskList implements OnInit, OnChanges {
}
/**
- * Select the first instance of a list if present
+ * Select the task given in input if present
*/
- selectFirst() {
+ selectTask(taskIdToSelect: string) {
if (!this.isListEmpty()) {
- this.currentInstanceId = this.data.getRows()[0].getValue('id');
+ let dataRow = this.data.getRows().find(row => row.getValue('id') === taskIdToSelect);
+ this.currentInstanceId = dataRow ? dataRow.getValue('id') : this.selectFirst();
} else {
this.currentInstanceId = null;
}
}
+ /**
+ * Select the first instance of a list if present
+ */
+ selectFirst() {
+ return this.data.getRows()[0].getValue('id');
+ }
+
/**
* Return the current id
* @returns {string}
@@ -239,7 +250,8 @@ export class ActivitiTaskList implements OnInit, OnChanges {
text: this.name,
assignment: this.assignment,
state: this.state,
- sort: this.sort
+ sort: this.sort,
+ landingTaskId: this.landingTaskId
};
return new TaskQueryRequestRepresentationModel(requestNode);
}
diff --git a/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts b/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts
index 09a8c88256..fb23c2f2f2 100644
--- a/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts
+++ b/ng2-components/ng2-activiti-tasklist/src/models/filter.model.ts
@@ -116,6 +116,7 @@ export class TaskQueryRequestRepresentationModel {
sort: string;
page: number;
size: number;
+ landingTaskId: string;
constructor(obj?: any) {
this.appDefinitionId = obj && obj.appDefinitionId || null;
@@ -128,5 +129,6 @@ export class TaskQueryRequestRepresentationModel {
this.sort = obj && obj.sort || null;
this.page = obj && obj.page || 0;
this.size = obj && obj.size || 25;
+ this.landingTaskId = obj && obj.landingTaskId || '';
}
}