$(() => { var urlTimeout = null; function setURL(query, value) { clearTimeout(urlTimeout); urlTimeout = setTimeout(function() { var url = new URL(window.location.href); console.log(query,value,value.length,!value.length); if (!value.length) { console.log url.searchParams.delete(query); } else if (Array.isArray(value)) { url.searchParams.delete(query); value.forEach(function(v) { url.searchParams.append(query, v); }) } else { url.searchParams.set(query, value); } window.history.pushState(null, document.title, url.href); }, 1000); } function handlePageLoad() { var url = new URL(window.location.href); //get values from URL var filters = url.searchParams.getAll('filter'); search_terms = filters.join(" "); $("#support-matrix-filter").val(search_terms); run_filter(); } function filter_boards(search_string) { $(".board_hidden").removeClass("board_hidden"); $(".this_module").removeClass("this_module"); var nboards = $(".support-matrix-table tbody tr").length; if(search_string.trim() == "") { $("#support-matrix-filter-num").html("(all)"); setURL("filter",[]); return; } var list_search = search_string.split(" ").filter(i => i); var nvisible = 0; $(".support-matrix-table tbody tr").each( (index,item) => { var name = $(item).find("td:first-child p").html(); var modules = $(item).find("code, a.reference.external"); var matching_all = true; // list_search.forEach((sstring) => { var matching = (sstring[0] == "-"); for(var modi = 0; modi < modules.length; ++modi) { module = modules[modi]; var mod_name = module.firstChild.textContent; if(sstring[0] == "-") { if(mod_name.match(sstring.substr(1))) { matching = false; break; } } else { if(mod_name.match(sstring)) { $(module).addClass("this_module"); matching = true; } } } matching_all = matching_all && matching; }); if(!matching_all) { $(item).addClass("board_hidden"); } else { nvisible += 1; } }); $("#support-matrix-filter-num").html(`(${nvisible}/${nboards})`); setURL("filter",list_search); } function run_filter() { var search_string = $("#support-matrix-filter").val(); filter_boards(search_string); } $("#support-matrix-filter").on("keyup", run_filter); // $(document).on("keyup", "#support-matrix-filter", run_filter); handlePageLoad(); });