/** * Tab switching — switchTab, initTabs, startAutoRefresh. */ import { apiKey, refreshInterval, setRefreshInterval } from '../core/state.js'; export function switchTab(name) { document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.toggle('active', btn.dataset.tab === name)); document.querySelectorAll('.tab-panel').forEach(panel => panel.classList.toggle('active', panel.id === `tab-${name}`)); localStorage.setItem('activeTab', name); if (name === 'dashboard') { // Use window.* to avoid circular imports with feature modules if (typeof window.loadDashboard === 'function') window.loadDashboard(); if (typeof window.startDashboardWS === 'function') window.startDashboardWS(); } else { if (typeof window.stopDashboardWS === 'function') window.stopDashboardWS(); if (name === 'streams') { if (typeof window.loadPictureSources === 'function') window.loadPictureSources(); } else if (name === 'targets') { if (typeof window.loadTargetsTab === 'function') window.loadTargetsTab(); } else if (name === 'profiles') { if (typeof window.loadProfiles === 'function') window.loadProfiles(); } } } export function initTabs() { let saved = localStorage.getItem('activeTab'); // Migrate legacy 'devices' tab to 'targets' if (saved === 'devices') saved = 'targets'; if (!saved || !document.getElementById(`tab-${saved}`)) saved = 'dashboard'; switchTab(saved); } export function startAutoRefresh() { if (refreshInterval) { clearInterval(refreshInterval); } setRefreshInterval(setInterval(() => { if (apiKey) { const activeTab = localStorage.getItem('activeTab') || 'dashboard'; if (activeTab === 'targets') { if (typeof window.loadTargetsTab === 'function') window.loadTargetsTab(); } else if (activeTab === 'dashboard') { if (typeof window.loadDashboard === 'function') window.loadDashboard(); } } }, 2000)); }