No more inline styles and scripts

This commit is contained in:
2022-12-13 01:02:09 +01:00
parent 659bcb8f51
commit 52e588e0cc
4 changed files with 84 additions and 87 deletions

71
index.js Normal file
View File

@@ -0,0 +1,71 @@
const body = document.body;
const data = body.getAttribute("data-theme");
const initTheme = (state) => {
if (state === "dark") {
body.setAttribute("data-theme", "dark");
} else if (state === "light") {
body.removeAttribute("data-theme");
} else {
localStorage.setItem("theme", data);
}
};
initTheme(localStorage.getItem("theme"));
setTimeout(() => body.classList.remove("notransition"), 75);
let directoryHeading = document.getElementById("directory");
let directory = directoryHeading.innerHTML;
document.title = "Directory Listing for " + directory;
let table = document.getElementById("list");
if (table.tBodies[0].rows[0].cells[0].children[0].innerHTML == "Parent directory/") {
directoryHeading.innerHTML = directory.replaceAll(/[^/]+/g, (match, offset) =>
`<a href="${directory.substr(0, offset+match.length+1)}">${match}</a>`
);
}
let searchContainer = document.getElementById("search-container");
searchContainer.remove();
table.before(searchContainer);
searchContainer.hidden = false;
let searchInput = document.getElementById("search-input");
searchInput.addEventListener("input", filterTable);
filterTable();
function filterTable() {
let value = searchInput.value.toLowerCase();
let rows = table.tBodies[0].rows;
if (value) {
for (let row of rows) {
row.hidden = row.cells[0].children[0].innerHTML.toLowerCase()
.indexOf(value) < 0;
}
} else {
for (let row of rows) {
row.hidden = false;
}
}
}
fetch("README.md").then(response => {
if (response.ok) {
response.text().then(text => {
let description = document.createElement("details");
description.innerHTML = marked.parse(text);
let summary = document.createElement("summary");
summary.innerHTML = "Description";
description.prepend(summary);
directoryHeading.after(description);
});
}
});
[...document.querySelectorAll(".link a")].forEach(link => {
if (link.href.endsWith(".ics")) {
link.href = link.href.replace(/https?/, "webcal");
}
})