From 6551609d1b248011d301080c1be7c48085dc5d55 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sat, 26 Apr 2014 20:04:39 -0400 Subject: Add a filter by user and due date + minor changes --- assets/css/app.css | 5 +++++ assets/js/board.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) (limited to 'assets') diff --git a/assets/css/app.css b/assets/css/app.css index f3a44c92..a406fa4d 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -468,6 +468,11 @@ nav .active a { background-color: red; } +a.filter-on { + font-weight: bold; + color: #333; +} + .task-title { margin-top: 10px; font-size: 110%; 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(); + }; + } + }()); -- cgit v1.2.3