// By JCat // Contacts: https://jocat.ru/ // Breadcrumbs let breadcrumbs_el = document.querySelector('#js__breadcrumbs'); let 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) { el = document.createElement('li'); el.classList.add('breadcrumb-item'); if (last === true) { el.classList.add('active'); el.innerHTML = text; return el; } let a = document.createElement('a'); a.href = link; a.innerHTML = text; el.append(a); return el; } // Toggle content for (let el of document.getElementsByClassName('js__toggle_content')) { if (el.dataset.pathname == location.pathname) el.style.display = 'block'; } // Pretty table let table = document.querySelector('table'); table.classList.add('table', 'table-hover'); let headers = ['Дата загрузки / изменения', 'Размер файла', 'Файл']; for (let el of table.querySelector('thead').querySelector('tr').children) { el.children[0].innerText = headers.pop(); } let table_body_el_list = table.querySelector('tbody').children; for (let row of table_body_el_list) { let file_size = row.querySelector('.size'); if (file_size.innerText != '-') file_size.innerText = formatFileSize(file_size.innerText); let file_link = row.querySelector('.link'); let file_type = file_link.innerHTML.match(/<a href=".+?((?<=\.)\w+|\.\/|\/)"(?: title=".+")?>.+<\/a>/)[1]; let a = file_link.children[0]; let img = document.createElement('img'); let img_wrap = document.createElement('span'); if (file_type == './') { a.innerText = '..'; img.src = '/.html/icons/folder-home.svg'; } else if (file_type == '/') { img.src = '/.html/icons/folder.svg'; } else if (file_type == 'jar') { img.src = '/.html/icons/java.svg'; } else { img.src = '/.html/icons/'+file_type+'.svg'; } img_wrap.prepend(img); a.prepend(img_wrap); } function formatFileSize(bytes) { var 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]; }