Skip to content

Commit

Permalink
Merge pull request #79 from rjnewsham/filter
Browse files Browse the repository at this point in the history
Adding filter text box to top of the page for easy filtering of visib…
  • Loading branch information
leif81 authored Sep 10, 2019
2 parents 0e1db6f + a758614 commit e123283
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions bzkanban.js
Original file line number Diff line number Diff line change
Expand Up @@ -210,16 +210,33 @@ function createQueryFields() {
filterByAssignee(name);
});

var filter = document.createElement("span");

var filterIcon = document.createElement("i");
filterIcon.className = "fa fa-search";
filterIcon.title = "Filter";

var filterText = document.createElement("input");
filterText.id = 'textFilter';
filterText.name = 'textFilter';
filterText.placeholder = 'Filter';
filterText.addEventListener( "keyup", function() {
debounce( filterByString( document.getElementById("textFilter").value ), 500);
});

product.appendChild(productIcon);
product.appendChild(productList);
milestone.appendChild(milestoneIcon);
milestone.appendChild(milestoneList);
assignee.appendChild(assigneeIcon);
assignee.appendChild(assigneeList);
filter.appendChild(filterIcon);
filter.appendChild(filterText);

query.appendChild(product);
query.appendChild(milestone);
query.appendChild(assignee);
query.appendChild(filter);

return query;
}
Expand Down Expand Up @@ -898,6 +915,21 @@ function filterByAssignee(name) {
showColumnCounts();
}

function filterByString(string) {
var cards = document.querySelectorAll(".card");
cards.forEach(function(card) {
var regex = new RegExp( string, "i" );
if ( card.innerHTML.match( regex ) || string == "") {
card.style.display = "block";
} else {
card.style.display = "none";
}
});

// force reload
showColumnCounts();
}

function updateUnconfirmedColumnVisibilty() {
var col = document.querySelector(".board-column#UNCONFIRMED");
if (col !== null) {
Expand All @@ -909,6 +941,28 @@ function updateUnconfirmedColumnVisibilty() {
}
}

function debounce(func, wait, immediate) {
var timeout;

return function executedFunction() {
var context = this;
var args = arguments;

var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};

var callNow = immediate && !timeout;

clearTimeout(timeout);

timeout = setTimeout(later, wait);

if (callNow) func.apply(context, args);
};
};

function httpPut(url, dataObj, successCallback, errorCallback) {
httpRequest("PUT", url, dataObj, successCallback, errorCallback);
}
Expand Down

0 comments on commit e123283

Please sign in to comment.