Files

35 lines
1.9 KiB
JavaScript

// app.js — загрузчик и точка входа фронтенда
//
// Файлы подгружаются в index.html в СТРОГОМ порядке зависимостей:
// utils.js → instances.js → operations.js → history.js → scenario-list.js
// scenario-form.js → params-render.js → scenario-create/edit/delete.js
// icons.js, snackbar.js, views.js — без зависимостей
//
// Глобальные переменные из Jinja2 (window.APP):
// { version, stand, hasUserToken, firstServiceId }
/*
* Архитектура фронтенда — ванильный JS (без фреймворков).
* Модули по файлам, функции в глобальной области видимости:
*
* utils.js — _esc(), validateJson(), busy, relativeTime(), лог-панель
* instances.js — selectService(), toggleInstance(), refreshInstances()
* operations.js — startCreate(), runOp(), showParams(), executeOp(), poll
* history.js — toggleHistory(), loadHistory()
* scenario-list.js — toggleScenario(), loadScenarios(), runScenario()
* scenario-form.js — showScenarioEditor(), renderEditor(), saveScenario()
* params-render.js — renderParamRow(), renderMapFixedRow(), collectParams()
* icons.js — ICONS = {play, edit, trash, ...} (inline-SVG)
* snackbar.js — showSnackbar(msg, type)
* views.js — switchView(viewId)
*/
// ── Инициализация при загрузке страницы ──
// Запускаем поллинг логов (каждые 2 секунды, только если панель видна)
startLogPoll();
// Выбираем первый сервис из переданного Jinja2 значения
// currentSvcId берётся из window.APP.firstServiceId (задаётся в index.html)
selectService(currentSvcId);