29 lines
1.2 KiB
JavaScript
29 lines
1.2 KiB
JavaScript
document.addEventListener('DOMContentLoaded', () => {
|
|
const tabs = document.querySelectorAll('.tabs .tab');
|
|
const contents = document.querySelectorAll('.tab-content');
|
|
const validTabs = new Set([...tabs].map(btn => btn.dataset.tab));
|
|
|
|
function showTab(name) {
|
|
if (!validTabs.has(name)) name = 'report';
|
|
contents.forEach(el => el.style.display = 'none');
|
|
tabs.forEach(btn => btn.classList.remove('active'));
|
|
|
|
const content = document.getElementById('tab-' + name);
|
|
const btn = document.querySelector(`.tabs .tab[data-tab="${name}"]`);
|
|
|
|
if (content) content.style.display = 'block';
|
|
if (btn) btn.classList.add('active');
|
|
|
|
if (name === 'analysis') window.analysisTab?.onTabOpen?.();
|
|
if (name === 'planner') window.plannerTab?.onTabOpen?.();
|
|
|
|
localStorage.setItem('ff14-mitigator-active-tab', name);
|
|
}
|
|
|
|
tabs.forEach(btn => btn.addEventListener('click', () => showTab(btn.dataset.tab)));
|
|
window.showTab = showTab;
|
|
|
|
const params = new URLSearchParams(window.location.search);
|
|
showTab(params.get('tab') || localStorage.getItem('ff14-mitigator-active-tab') || 'report');
|
|
});
|