// views.js — переключение видов (Консоль / Обзор / История / Сценарии / Логи) // // Каждый вид — div.view с id="view-{name}". // Активный вид — без класса .hidden. // Все остальные — с классом .hidden (display: none). // // Переключение: // switchView('overview') — Обзор (инфраструктура) // switchView('console') — Консоль (ручной режим) // switchView('history-view') — История (автозагрузка при открытии) // switchView('scenarios-view') — Сценарии (автозагрузка) // switchView('logs-view') — Логи (специальная обработка) /** * Переключиться на вид по его ID. * * @param {string} viewId — суффикс после "view-" (напр. "console" → #view-console) */ function switchView(viewId) { // Скрыть ВСЕ виды document.querySelectorAll('.view').forEach(v => v.classList.add('hidden')); // Показать целевой вид const target = document.getElementById('view-' + viewId); if (target) target.classList.remove('hidden'); // Подсветка активного пункта в sidebar document.querySelectorAll('.sidebar-item').forEach(el => el.classList.remove('active')); const btn = document.querySelector('.sidebar-item[data-view="' + viewId + '"]'); if (btn) btn.classList.add('active'); // ── Автозагрузка при открытии вида ── // История: автозагрузка только если ещё не загружена if (viewId === 'history-view' && typeof toggleHistory === 'function') { if (!historyOpen) toggleHistory(); } // Сценарии: автозагрузка if (viewId === 'scenarios-view' && typeof toggleScenario === 'function') { if (!scenarioOpen) toggleScenario(); } // Логи: прямая загрузка с API, не полагаемся на нижнюю панель if (viewId === 'logs-view') { const lvc = document.getElementById('log-view-content'); if (lvc) { lvc.innerHTML = 'Логи загружаются...'; fetch('/api/log').then(r => r.json()).then(lines => { if (lines.length) { lvc.innerHTML = lines.map(l => `