59 lines
2.8 KiB
JavaScript
59 lines
2.8 KiB
JavaScript
// 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();
|
||
}
|
||
|
||
// Логи: специальная обработка — копируем содержимое нижней панели в вид
|
||
if (viewId === 'logs-view') {
|
||
const lp = document.getElementById('log-panel');
|
||
const lvc = document.getElementById('log-view-content');
|
||
if (lp && lvc) {
|
||
// Копируем текущее содержимое лог-панели в вид
|
||
lvc.innerHTML = lp.innerHTML || '<span style="color:#888;">Логи загружаются...</span>';
|
||
lp.style.display = 'none'; // скрываем нижнюю панель
|
||
}
|
||
} else {
|
||
// На всех видах кроме логов — скрываем нижнюю лог-панель
|
||
const lp = document.getElementById('log-panel');
|
||
if (lp) lp.style.display = 'none';
|
||
}
|
||
}
|