62 lines
1.4 KiB
JavaScript
62 lines
1.4 KiB
JavaScript
|
// TODO: The tactic part seem to be unimplemented now.
|
||
|
|
||
|
function filterSelectionClass(tagNames, classname) {
|
||
|
if (tagNames.length == 0) {
|
||
|
for (const elem of document.getElementsByClassName(classname)) {
|
||
|
elem.classList.remove("hide");
|
||
|
}
|
||
|
} else {
|
||
|
// Add the "show" class (display:block) to the filtered elements, and remove the "show" class from the elements that are not selected
|
||
|
for (const elem of document.getElementsByClassName(classname)) {
|
||
|
elem.classList.add("hide");
|
||
|
for (const tagName of tagNames) {
|
||
|
if (elem.classList.contains(tagName)) {
|
||
|
elem.classList.remove("hide");
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function filterSelection(c) {
|
||
|
filterSelectionClass(c, "tactic");
|
||
|
filterSelectionClass(c, "taclink");
|
||
|
}
|
||
|
|
||
|
var filterBoxes = document.getElementsByClassName("tagfilter");
|
||
|
|
||
|
function updateDisplay() {
|
||
|
filterSelection(getSelectValues());
|
||
|
}
|
||
|
|
||
|
function getSelectValues() {
|
||
|
var result = [];
|
||
|
|
||
|
for (const opt of filterBoxes) {
|
||
|
if (opt.checked) {
|
||
|
result.push(opt.value);
|
||
|
}
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
function setSelectVal(val) {
|
||
|
for (const opt of filterBoxes) {
|
||
|
opt.checked = val;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
updateDisplay();
|
||
|
|
||
|
for (const opt of filterBoxes) {
|
||
|
opt.addEventListener("change", updateDisplay);
|
||
|
}
|
||
|
|
||
|
const tse = document.getElementById("tagfilter-selectall");
|
||
|
if (tse != null) {
|
||
|
tse.addEventListener("change", function () {
|
||
|
setSelectVal(this.checked);
|
||
|
updateDisplay();
|
||
|
});
|
||
|
}
|