72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
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");
|
|
}
|
|
})
|