Benutzer:Koerpertraining/js/filterList.js
Zur Navigation springen
Zur Suche springen
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Strg+F5
(() => {
console.log("load filterList.js");
var filterFunctions = [];
if (document.readyState == 'loading') {
document.addEventListener("DOMContentLoaded", init);
} else {
init();
}
function addFilter(text, func, apply) {
var num = filterFunctions.length;
if (num == 0) addFilterNavBar();
filterFunctions.push(func);
var a = document.createElement("a");
a.onclick = () => applyFilter(num);
a.text = text;
var span = document.createElement("span");
span.id = 'listFilter_stats' + num;
document.getElementById("listFilterNavBar")
.append(" | ", a, " (", span, ")");
applyFilter(num, !apply);
}
function addFilterNavBar() {
var ul = document.getElementById("bodyContent").getElementsByTagName("ul")[0];
var div = document.createElement("div");
div.setAttribute("id", "listFilterNavBar");
var a = document.createElement("a");
a.onclick = showAll;
a.text = "Alle";
div.append('Filter: ', a, ' (' + ul.getElementsByTagName("li").length + ')');
ul.parentNode.insertBefore(div,ul);
}
function init() {
console.log("init filterList.js");
switch (mediaWiki.config.get("wgCanonicalSpecialPageName")) {
case "Contributions":
addFilter("Ungesichtete Version", hasClassFilter('flaggedrevs-pending'));
addFilter("Ungesichtete Artikel", hasClassFilter('flaggedrevs-unreviewed'));
addFilter("Aktuell", searchFilter('<span class="mw-uctop">aktuell</span>'));
break;
}
}
function applyFilter(num, countonly) {
var func = filterFunctions[num];
var removed = 0;
var ul = document.getElementById("bodyContent").getElementsByTagName("ul")[0];
var lis = ul.getElementsByTagName("li");
for (var i=0; i < lis.length; i++) {
var li = lis[i];
if (func(li)) {
if (!countonly) li.setAttribute("style", "display:none");
removed++;
}
}
document.getElementById("listFilter_stats" + num).innerHTML =
lis.length - removed;
}
function searchFilter(text) {
return function(li) {
return li.innerHTML.indexOf(text) == -1;
};
}
function hasClassFilter(clazz) {
return function(li) {
return !li.classList.contains(clazz);
};
}
function showAll() {
var ul = document.getElementById("bodyContent").getElementsByTagName("ul")[0];
var lis = ul.getElementsByTagName("li");
for (var i=0; i < lis.length; i++) {
lis[i].setAttribute("style", "");
}
}
})();