mirror of
https://github.com/Theodor-Springmann-Stiftung/jacoblenz.git
synced 2026-02-04 20:05:30 +00:00
Code Quality Check
This commit is contained in:
@@ -60,261 +60,6 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<script>
|
||||
|
||||
// Script for showing and acting upon the "scroll to top button"
|
||||
const scrollFunction = function () {
|
||||
button = document.getElementById("scrollbutton");
|
||||
if (button !== null) {
|
||||
if (document.body.scrollTop > 400 || document.documentElement.scrollTop > 400) {
|
||||
// button.style.display = "block";
|
||||
button.style.pointerEvents = "auto";
|
||||
button
|
||||
.classList
|
||||
.remove("hidden-important");
|
||||
} else {
|
||||
// button.style.display = "none";
|
||||
button.style.pointerEvents = "none";
|
||||
button
|
||||
.classList
|
||||
.add("hidden-important");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function isInViewport(element) {
|
||||
const rect = element.getBoundingClientRect();
|
||||
return (
|
||||
rect.top >= 0 &&
|
||||
rect.left >= 0 &&
|
||||
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
|
||||
rect.right <= (window.innerWidth || document.documentElement.clientWidth)
|
||||
);
|
||||
}
|
||||
|
||||
// Scripts for filtering lists
|
||||
let dictionary = [];
|
||||
let categories = [];
|
||||
let found = dictionary;
|
||||
let sw = "";
|
||||
let swl = 0;
|
||||
|
||||
$(".showifsearching").each((ind, el) => {
|
||||
$(el).hide();
|
||||
});
|
||||
|
||||
function createIndex(id, searchable) {
|
||||
$("#" + id + " " + searchable).each((ind, el) => {
|
||||
dictionary.push({
|
||||
category: el.closest(".category"), element: el, searchitem: $(el)
|
||||
.text()
|
||||
.toLowerCase()
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function findWord(word, d) {
|
||||
var sw = word
|
||||
.trim()
|
||||
.toLowerCase();
|
||||
return d.filter(function (e) {
|
||||
if (e.searchitem.indexOf(sw) !== -1) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
};
|
||||
})
|
||||
}
|
||||
|
||||
const search = function (evt) {
|
||||
evt = evt || window.event;
|
||||
var isEscape = false;
|
||||
if ("key" in evt) {
|
||||
isEscape = (evt.key === "Escape" || evt.key === "Esc");
|
||||
} else {
|
||||
isEscape = (evt.keyCode === 27);
|
||||
}
|
||||
if (isEscape) {
|
||||
searchreset();
|
||||
return;
|
||||
}
|
||||
|
||||
term = $("input[name='keyword']")
|
||||
.val()
|
||||
.trim() || '';
|
||||
|
||||
// Unmark everything previously marked
|
||||
for (let item of found) {
|
||||
$(item.element).unmark();
|
||||
}
|
||||
|
||||
if (term) {
|
||||
// Hide everything tagged hideifseaching
|
||||
$(".hideifsearching").each((ind, el) => {
|
||||
$(el).hide();
|
||||
});
|
||||
|
||||
$(".showifsearching").each((ind, el) => {
|
||||
$(el).show();
|
||||
});
|
||||
|
||||
$(".ueberschrift-gruppe").each((ind, el) => {
|
||||
$(el).hide();
|
||||
});
|
||||
|
||||
// Hide all categories by default
|
||||
for (let cat of categories) {
|
||||
cat
|
||||
.classList
|
||||
.add("hidden-important");
|
||||
cat
|
||||
.classList
|
||||
.remove("search-expanded");
|
||||
}
|
||||
|
||||
// Only search in prior found elements if word starts the same
|
||||
if (term.length > swl && term.startsWith(sw)) {
|
||||
found = findWord(term, found);
|
||||
} else {
|
||||
found = findWord(term, dictionary);
|
||||
}
|
||||
|
||||
for (let item of dictionary) {
|
||||
if (found.indexOf(item) !== -1) {
|
||||
item
|
||||
.category
|
||||
.classList
|
||||
.add("search-expanded");
|
||||
item
|
||||
.category
|
||||
.classList
|
||||
.remove("hidden-important");
|
||||
item
|
||||
.element
|
||||
.classList
|
||||
.remove("hidden-important");
|
||||
if (term.length >= 2) {
|
||||
$(item.element).mark(term, {
|
||||
"separateWordSearch": false,
|
||||
"acrossElements": true
|
||||
});
|
||||
}
|
||||
} else {
|
||||
item
|
||||
.element
|
||||
.classList
|
||||
.add("hidden-important");
|
||||
}
|
||||
}
|
||||
sw = term;
|
||||
swl = term.length;
|
||||
} else {
|
||||
searchreset();
|
||||
}
|
||||
}
|
||||
|
||||
const searchreset = function() {
|
||||
for (let item of found) {
|
||||
$(item.element).unmark();
|
||||
}
|
||||
|
||||
var hidden = document
|
||||
.getElementById("list")
|
||||
.querySelectorAll(".hidden-important");
|
||||
for (let item of hidden) {
|
||||
item
|
||||
.classList
|
||||
.remove("hidden-important");
|
||||
}
|
||||
found = dictionary;
|
||||
sw = "";
|
||||
swl = 0;
|
||||
$(".hideifsearching").each((ind, el) => {
|
||||
$(el).show();
|
||||
});
|
||||
$(".showifsearching").each((ind, el) => {
|
||||
$(el).hide();
|
||||
});
|
||||
|
||||
var input = document.querySelector("input[name='keyword']");
|
||||
input.value = '';
|
||||
input.focus();
|
||||
}
|
||||
|
||||
$(document).ready(function () {
|
||||
// Mobile menu
|
||||
var menubutton = document.getElementById("navigation-button");
|
||||
var navigation = document.getElementById("navigation");
|
||||
if (menubutton !== null && navigation !== null) {
|
||||
menubutton.addEventListener("click", () => {
|
||||
if (navigation.classList.contains("hidden")) {
|
||||
navigation
|
||||
.classList
|
||||
.remove("hidden");
|
||||
} else {
|
||||
navigation
|
||||
.classList
|
||||
.add("hidden");
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// Scroll button
|
||||
if (document.getElementById("scrollbutton") !== null) {
|
||||
scrollFunction();
|
||||
document
|
||||
.getElementById("scrollbutton")
|
||||
.addEventListener("click", () => {
|
||||
document.body.scrollTop = 0; // For Safari
|
||||
document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
|
||||
})
|
||||
window.addEventListener("scroll", scrollFunction);
|
||||
}
|
||||
|
||||
// List filtering
|
||||
if (document.getElementById("list")) {
|
||||
var searchable = "";
|
||||
if (document.getElementsByClassName("searchable").length > 0) {
|
||||
searchable = ".searchable";
|
||||
} else if (document.getElementsByClassName("handschrift").length > 0) {
|
||||
searchable = ".handschrift";
|
||||
}
|
||||
createIndex("list", searchable);
|
||||
categories = document
|
||||
.getElementById("list")
|
||||
.getElementsByClassName("category");
|
||||
|
||||
var searchinput = document.querySelector("input[name='keyword']");
|
||||
if (searchinput !== null && isInViewport(searchinput)) {
|
||||
$("input[name='keyword']").focus();
|
||||
}
|
||||
$("input[name='keyword']").keyup(search);
|
||||
|
||||
// Scrolling & List updating
|
||||
let select = document.getElementById("listselect");
|
||||
if (select !== null) {
|
||||
var sections = {};
|
||||
var i = 0;
|
||||
Array
|
||||
.prototype
|
||||
.forEach
|
||||
.call(categories, function (e) {
|
||||
sections[e.id] = e.offsetTop;
|
||||
});
|
||||
window.onscroll = function () {
|
||||
var scrollPosition = document.documentElement.scrollTop || document.body.scrollTop;
|
||||
for (i in sections) {
|
||||
if (sections[i] <= scrollPosition + 60) {
|
||||
var opt = select.querySelector('option[value="#' + i + '"]');
|
||||
if (opt !== null) {
|
||||
opt.selected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script src="/static/js/scripts.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user