diff options
Diffstat (limited to 'assets/js/board.js')
-rw-r--r-- | assets/js/board.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/assets/js/board.js b/assets/js/board.js index 3c5ec51c..a030a5fb 100644 --- a/assets/js/board.js +++ b/assets/js/board.js @@ -208,6 +208,8 @@ }); } + // Drag and drop events + var dragSrcItem = null; var dragSrcColumn = null; @@ -235,4 +237,56 @@ }); }); + // Filtering + + function getSelectedUserFilter() + { + var select = document.getElementById("form-user_id"); + return select.options[select.selectedIndex].value; + } + + function hasDueDateFilter() + { + var dateFilter = document.getElementById("filter-due-date"); + return dateFilter.classList.contains("filter-on"); + } + + function applyFilter(selectedUserId, filterDueDate) + { + [].forEach.call(document.querySelectorAll('[data-task-id]'), function (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 == "") { + item.style.opacity = "0.2"; + } + }); + } + + var userFilter = document.getElementById("form-user_id"); + var dateFilter = document.getElementById("filter-due-date"); + + if (userFilter) { + userFilter.onchange = function() { + applyFilter(getSelectedUserFilter(), hasDueDateFilter()); + }; + } + + if (dateFilter) { + + dateFilter.onclick = function(e) { + dateFilter.classList.toggle("filter-on"); + applyFilter(getSelectedUserFilter(), hasDueDateFilter()); + e.preventDefault(); + }; + } + }()); |