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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
(function () {
var checkInterval = null;
// Setup the board
function board_load_events()
{
$(".column").sortable({
connectWith: ".column",
placeholder: "draggable-placeholder",
stop: function(event, ui) {
board_save();
}
});
var interval = parseInt($("#board").attr("data-check-interval"));
if (interval > 0) {
checkInterval = window.setInterval(board_check, interval * 1000);
}
}
// Stop events
function board_unload_events()
{
clearInterval(checkInterval);
}
// Save and refresh the board
function board_save()
{
var data = [];
var projectId = $("#board").attr("data-project-id");
board_unload_events();
$(".column").each(function() {
var columnId = $(this).attr("data-column-id");
$("#column-" + columnId + " .task").each(function(index) {
data.push({
"task_id": parseInt($(this).attr("data-task-id")),
"position": index + 1,
"column_id": parseInt(columnId)
});
});
});
$.ajax({
url: "?controller=board&action=save&project_id=" + projectId,
data: {positions: data},
type: "POST",
success: function(data) {
$("#board").remove();
$("#main").append(data);
board_load_events();
applyFilter(getSelectedUserFilter(), hasDueDateFilter());
}
});
}
// Check if a board have been changed by someone else
function board_check()
{
var projectId = $("#board").attr("data-project-id");
var timestamp = $("#board").attr("data-time");
if (projectId != undefined && timestamp != undefined) {
$.ajax({
url: "?controller=board&action=check&project_id=" + projectId + "×tamp=" + timestamp,
statusCode: {
200: function(data) {
$("#board").remove();
$("#main").append(data);
board_unload_events();
board_load_events();
applyFilter(getSelectedUserFilter(), hasDueDateFilter());
}
}
});
}
}
// Get the selected user id
function getSelectedUserFilter()
{
return $("#form-user_id").val();
}
// Return true if the filter is activated
function hasDueDateFilter()
{
return $("#filter-due-date").hasClass("filter-on");
}
// Apply user or date filter (change tasks opacity)
function applyFilter(selectedUserId, filterDueDate)
{
$("[data-task-id]").each(function(index, item) {
var ownerId = item.getAttribute("data-owner-id");
var dueDate = item.getAttribute("data-due-date");
if (ownerId != selectedUserId && selectedUserId != -1) {
item.style.opacity = "0.2";
}
else {
item.style.opacity = "1.0";
}
if (filterDueDate && (dueDate == "" || dueDate == "0")) {
item.style.opacity = "0.2";
}
});
}
// Load filter events
function filter_load_events()
{
$("#form-user_id").change(function() {
applyFilter(getSelectedUserFilter(), hasDueDateFilter());
});
$("#filter-due-date").click(function(e) {
$(this).toggleClass("filter-on");
applyFilter(getSelectedUserFilter(), hasDueDateFilter());
e.preventDefault();
});
}
// Initialization
$(function() {
board_load_events();
filter_load_events();
});
}());
|