let initialWindowHeight; document.addEventListener("DOMContentLoaded", function() { initialWindowHeight = window.innerHeight; if (localStorage.getItem("dark-mode") === "true") { document.body.classList.add("dark-mode"); document.getElementById('theme-icon').classList.remove('fa-moon'); document.getElementById('theme-icon').classList.add('fa-sun'); } else { document.getElementById('theme-icon').classList.remove('fa-sun'); document.getElementById('theme-icon').classList.add('fa-moon'); } if (localStorage.getItem("view-mode") === "list") { document.body.classList.add("list-mode"); document.getElementById('view-mode-icon').classList.remove('fa-list'); document.getElementById('view-mode-icon').classList.add('fa-table'); } else { document.getElementById('view-mode-icon').classList.remove('fa-table'); document.getElementById('view-mode-icon').classList.add('fa-list'); } document.querySelectorAll('.group').forEach(group => { const groupName = group.id; const collapsed = group.dataset.collapsed === 'true'; if (collapsed) { group.classList.add('collapsed'); } else if (localStorage.getItem(`collapsed-${groupName}`) === 'true') { group.classList.add('collapsed'); } }); document.addEventListener("click", function(event) { const settingsMenu = document.getElementById('settings-menu'); if (!settingsMenu.contains(event.target) && !event.target.closest('.icon-button')) { settingsMenu.classList.remove('visible'); } }); const searchInput = document.getElementById('search-input'); searchInput.addEventListener('input', handleSearch); searchInput.addEventListener('keydown', handleKeyDown); document.addEventListener('keydown', function(event) { if (event.key === '/') { event.preventDefault(); searchInput.focus(); } if (event.key === 'Escape' || event.key === 'Esc') { event.preventDefault(); clearSearch(); searchInput.blur(); } }); window.visualViewport.addEventListener('resize', adjustFooterPosition); }); function searchFocus() { document.getElementById('search-input').focus() } function toggleDarkMode() { document.body.classList.toggle("dark-mode"); const themeIcon = document.getElementById('theme-icon'); if (document.body.classList.contains("dark-mode")) { localStorage.setItem("dark-mode", "true"); themeIcon.classList.remove('fa-moon'); themeIcon.classList.add('fa-sun'); } else { localStorage.setItem("dark-mode", "false"); themeIcon.classList.remove('fa-sun'); themeIcon.classList.add('fa-moon'); } } function toggleGroup(group) { const groupElement = document.getElementById(group); groupElement.classList.toggle("collapsed"); const isCollapsed = groupElement.classList.contains("collapsed"); localStorage.setItem(`collapsed-${group}`, isCollapsed); } function toggleSettings() { const settingsMenu = document.getElementById('settings-menu'); settingsMenu.classList.toggle('visible'); } function refreshData() { location.reload(); } function toggleViewMode() { document.body.classList.toggle("list-mode"); const viewModeIcon = document.getElementById('view-mode-icon'); if (document.body.classList.contains("list-mode")) { localStorage.setItem("view-mode", "list"); viewModeIcon.classList.remove('fa-list'); viewModeIcon.classList.add('fa-table'); } else { localStorage.setItem("view-mode", "box"); viewModeIcon.classList.remove('fa-table'); viewModeIcon.classList.add('fa-list'); } } let selectedRouterIndex = -1; function handleSearch(event) { const query = event.target.value.toLowerCase(); const groups = document.querySelectorAll('.group'); const content = document.getElementById('content'); // Remove the search group if it exists let searchGroup = document.getElementById('search-group'); if (searchGroup) { searchGroup.remove(); } if (query === '') { // Show all original groups groups.forEach(group => group.style.display = ''); selectedRouterIndex = -1; } else { // Hide all original groups groups.forEach(group => group.style.display = 'none'); // Create and show the search group searchGroup = document.createElement('div'); searchGroup.id = 'search-group'; searchGroup.className = 'group'; content.appendChild(searchGroup); searchGroup.innerHTML = `