35 lines
1.9 KiB
JavaScript
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);
|