// By JCat
// Contacts: https://jocat.ru/
"use strict";
// Breadcrumbs
const breadcrumbs_el = document.querySelector(".breadcrumb");
const breadcrumbs = location.pathname
.split("/")
.filter((word) => word.length > 0);
breadcrumbs_el.append(get_breadcrumbs_el("/", "Home", breadcrumbs.length == 0));
if (breadcrumbs.length > 0) {
let tree = "";
breadcrumbs.forEach((link, index) => {
tree += "/" + link;
breadcrumbs_el.append(
get_breadcrumbs_el(tree, link, index == breadcrumbs.length - 1)
);
});
}
function get_breadcrumbs_el(link, text, last = false) {
const el = document.createElement("li");
el.classList.add("breadcrumb-item");
if (last === true) {
el.classList.add("active");
el.innerHTML = text;
return el;
}
const a = document.createElement("a");
a.href = link;
a.innerHTML = text;
el.append(a);
return el;
}
// Toggle content
document.querySelectorAll(".js__toggle_content").forEach((el) => {
if (el.dataset.pathname == location.pathname) el.style.display = "block";
});
// Pretty table
const table = document.querySelector("table");
table.classList.add("table", "table-hover");
const headers = ["Дата загрузки / изменения", "Размер файла", "Файл"];
for (const el of table.querySelector("thead").querySelector("tr").children) {
el.children[0].innerText = headers.pop();
}
const table_body_el_list = table.querySelector("tbody").children;
for (const row of table_body_el_list) {
const file_size = row.querySelector(".size");
if (file_size.innerText != "-")
file_size.innerText = formatFileSize(file_size.innerText);
const file_link = row.querySelector(".link");
const file_path = file_link.innerHTML.match(/href="(.+?)"/)[1].split("?")[0];
const a = file_link.children[0];
const img = document.createElement("img");
const img_wrap = document.createElement("span");
if (file_path.endsWith("./")) {
a.innerText = "..";
img.src = "/.html/icons/folder-home.svg";
} else if (file_path.endsWith("/")) {
img.src = "/.html/icons/folder.svg";
} else if (file_path.endsWith("jar")) {
img.src = "/.html/icons/java.svg";
} else {
const file_split_path = file_path.split(".");
let file_type = file_split_path[file_split_path.length - 1];
img.src = "/.html/icons/" + file_type + ".svg";
}
img_wrap.append(img);
a.prepend(img_wrap);
}
function formatFileSize(bytes) {
const k = 1024,
dp = 0,
sizes = ["Bytes", "KB", "MB", "GB"],
i = Math.floor(Math.log(bytes) / Math.log(k));
return parseFloat((bytes / Math.pow(k, i)).toFixed(dp)) + " " + sizes[i];
}