84 lines
2.5 KiB
JavaScript
Executable File
84 lines
2.5 KiB
JavaScript
Executable File
(() => {
|
|
const layout = document.querySelector('.layout-body');
|
|
if (!layout) return;
|
|
|
|
const enabled = layout.dataset.sidebarEnabled === '1';
|
|
const collapsible = layout.dataset.sidebarCollapsible === '1';
|
|
const defaultState = layout.dataset.sidebarDefault || 'collapsed';
|
|
|
|
const toggles = document.querySelectorAll('[data-sidebar-toggle]');
|
|
if (!enabled || !collapsible) {
|
|
toggles.forEach((t) => t.remove());
|
|
return;
|
|
}
|
|
|
|
const saved = localStorage.getItem('sidebar-state');
|
|
const initial = saved || defaultState;
|
|
if (initial === 'open') {
|
|
layout.classList.add('sidebar-open');
|
|
} else {
|
|
layout.classList.remove('sidebar-open');
|
|
}
|
|
|
|
toggles.forEach((toggle) => {
|
|
toggle.addEventListener('click', () => {
|
|
layout.classList.toggle('sidebar-open');
|
|
localStorage.setItem('sidebar-state', layout.classList.contains('sidebar-open') ? 'open' : 'collapsed');
|
|
});
|
|
});
|
|
})();
|
|
|
|
(() => {
|
|
const openBtn = document.querySelector('[data-debug-open]');
|
|
const modal = document.getElementById('debug-modal');
|
|
if (!openBtn || !modal) return;
|
|
|
|
const listEl = document.getElementById('debug-log-list');
|
|
const contentEl = document.getElementById('debug-log-content');
|
|
const closeEls = modal.querySelectorAll('[data-debug-close]');
|
|
|
|
const open = () => {
|
|
modal.classList.add('is-open');
|
|
modal.setAttribute('aria-hidden', 'false');
|
|
loadList();
|
|
};
|
|
const close = () => {
|
|
modal.classList.remove('is-open');
|
|
modal.setAttribute('aria-hidden', 'true');
|
|
};
|
|
|
|
const loadList = async () => {
|
|
try {
|
|
const res = await fetch('/debug?list=1', { cache: 'no-store' });
|
|
const files = await res.json();
|
|
listEl.innerHTML = '';
|
|
files.forEach((f) => {
|
|
const a = document.createElement('a');
|
|
a.href = '#';
|
|
a.textContent = f;
|
|
a.addEventListener('click', (e) => {
|
|
e.preventDefault();
|
|
loadFile(f);
|
|
});
|
|
const li = document.createElement('li');
|
|
li.appendChild(a);
|
|
listEl.appendChild(li);
|
|
});
|
|
if (files.includes('oidc_login.log')) {
|
|
loadFile('oidc_login.log');
|
|
}
|
|
} catch (e) {}
|
|
};
|
|
|
|
const loadFile = async (name) => {
|
|
try {
|
|
const res = await fetch(`/debug?raw=1&file=${encodeURIComponent(name)}`, { cache: 'no-store' });
|
|
const text = await res.text();
|
|
contentEl.textContent = text;
|
|
} catch (e) {}
|
|
};
|
|
|
|
openBtn.addEventListener('click', open);
|
|
closeEls.forEach((el) => el.addEventListener('click', close));
|
|
})();
|