forked from camunda/camunda-bpm-examples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
scripts.js
100 lines (75 loc) · 2.09 KB
/
scripts.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
(function (global){
'use strict';
var CamSDK = global.CamSDK;
var $ = global.jQuery;
var $formContainer = $('.column.right');
var camClient = new CamSDK.Client({
mock: false,
apiUri: '/engine-rest'
});
var taskService = new camClient.resource('task');
function loadTasks() {
// fetch the list of available tasks
taskService.list({
// filter?
}, function (err, results) {
if (err) {
throw err;
}
showTasks(results);
});
}
function showTasks(results) {
// generate the HTML for the list of tasks
var items = [];
$.each(results._embedded.task, function (t, task) {
items = items.concat([
'<li data-task-id="', task.id, '">',
'<h4>', task.name || task.id, '</h4>',
task.description ? '<div class="description">' : '',
task.description,
task.description ? '</div>' : '',
'</li>'
]);
});
$('#tasks')
// add the HTML to the list
.html(items.join(''))
// attach click events to the task list items
.find('> li').click(function () {
// load the the task form (getting the task ID from the tag attribute)
loadTaskForm($(this).attr('data-task-id'), function(err, camForm) {
if (err) {
throw err;
}
var $submitBtn = $('<button type="submit">Complete</button>').click(function () {
camForm.submit(function (err) {
if (err) {
throw err;
}
// clear the form
$formContainer.html('');
loadTasks();
});
});
camForm.containerElement.append($submitBtn);
});
});
}
function loadTaskForm(taskId, callback) {
// loads the task form using the task ID provided
taskService.form(taskId, function(err, taskFormInfo) {
var url = taskFormInfo.key.replace('embedded:app:', taskFormInfo.contextPath + '/');
new CamSDK.Form({
client: camClient,
formUrl: url,
taskId: taskId,
containerElement: $formContainer,
// continue the logic with the callback
done: callback
});
});
}
// load the tasks at start
loadTasks();
})(this);