Files
hockey_new/ui_builder/static/index.html

189 lines
10 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Хоккейный vMix</title>
<link rel="icon" type="image/svg+xml" href="__UI_BUILDER_ASSETS__/favicon.svg?v=__UI_BUILDER_ASSET_VERSION__">
<link rel="stylesheet" href="__UI_BUILDER_ASSETS__/styles.css?v=__UI_BUILDER_ASSET_VERSION__">
__UI_BUILDER_CUSTOM_STYLES__
<script>
window.UI_BUILDER_BOOT = {
api: "__UI_BUILDER_API__",
authApi: "__UI_BUILDER_AUTH_API__",
assets: "__UI_BUILDER_ASSETS__",
editorUrl: "__UI_BUILDER_EDITOR__",
runtimeUrl: "__UI_BUILDER_RUNTIME__",
editorHotkey: "__UI_BUILDER_EDITOR_HOTKEY__",
buildVersion: "__UI_BUILDER_BUILD_VERSION__",
mode: "__UI_BUILDER_MODE__"
};
</script>
</head>
<body>
<header class="topbar editor-only">
<div class="brand-block">
<div class="eyebrow">UNIVERSAL UI BUILDER / MODULE</div>
<input id="projectName" class="project-name" value="Спортивный интерфейс" aria-label="Название проекта">
</div>
<div class="top-actions">
<label class="inline-field">
<span>Данные</span>
<select id="dataSource"></select>
</label>
<button id="reloadDataBtn" class="btn">Обновить</button>
<button id="previewBtn" class="btn">Предпросмотр</button>
<button id="saveBtn" class="btn">Сохранить черновик</button>
<button id="publishBtn" class="btn btn-accent" title="Скопировать черновик в рабочую панель">Опубликовать</button>
<button id="openRuntimeBtn" class="btn" title="Открыть опубликованную панель управления">Панель управления</button>
<button id="lockEditorBtn" class="btn editor-lock-btn" title="Завершить защищённую сессию конструктора">Закрыть доступ</button>
<span id="editorSessionBadge" class="editor-session-badge" title="Оставшееся время защищённой сессии">Сессия редактора</span>
<button id="shortcutsBtn" class="btn" title="Шорткаты и сценарии">⌨ Шорткаты <span id="shortcutsCount" class="btn-count">0</span></button>
<button id="triggersBtn" class="btn">Триггеры <span id="triggersCount" class="btn-count">0</span></button>
<button id="backupsBtn" class="btn">Копии</button>
<button id="exportBtn" class="btn">Экспорт</button>
<label class="btn file-btn">Импорт<input id="importInput" type="file" accept="application/json,.json"></label>
</div>
</header>
<main id="editor" class="editor-shell editor-only">
<aside class="left-sidebar panel-scroll">
<section class="sidebar-section">
<div class="section-title-row"><h2>Шаблоны</h2></div>
<div class="template-grid">
<button data-template="hockey_penalties">Хоккей — drag & drop</button>
<button data-template="hockey">Хоккей — таймеры</button>
<button data-template="vmix">vMix — кнопка</button>
<button data-template="golf">Гольф</button>
<button data-template="race">Гонки</button>
<button data-template="football">Футбол</button>
<button data-template="dashboard">Dashboard</button>
<button data-template="form">Форма</button>
<button data-template="empty">Пустой</button>
</div>
</section>
<section class="sidebar-section">
<div class="section-title-row">
<h2>Вкладки проекта</h2>
<button id="addTabBtn" class="mini-btn" title="Добавить вкладку"></button>
</div>
<div id="tabsManager" class="tabs-manager"></div>
</section>
<section class="sidebar-section">
<div class="section-title-row"><h2>Холст</h2></div>
<div class="canvas-settings-grid">
<label><span>Ширина</span><input id="canvasWidth" type="number" min="640" max="7680"></label>
<label><span>Высота</span><input id="canvasHeight" type="number" min="360" max="4320"></label>
<label><span>Сетка</span><input id="gridSize" type="number" min="1" max="100"></label>
<label><span>Магнит</span><input id="snapThreshold" type="number" min="1" max="50"></label>
<label class="canvas-background">
<span>Фон</span>
<span class="color-control color-control-static">
<input id="canvasBackground" type="color" value="#0c1421" aria-label="Выбрать фон холста">
<input id="canvasBackgroundText" type="text" value="#0c1421" placeholder="#0c1421" aria-label="CSS-цвет фона холста">
<button id="canvasBackgroundClear" type="button" class="color-clear" title="Сбросить цвет">×</button>
</span>
</label>
</div>
</section>
<section class="sidebar-section sticky-search">
<h2>Компоненты</h2>
<input id="componentSearch" type="search" placeholder="Поиск компонента...">
</section>
<div id="componentLibrary" class="component-library"></div>
</aside>
<section class="workspace">
<div class="workspace-toolbar">
<div class="toolbar-group">
<label class="inline-field compact">
<span>Редактируемая вкладка</span>
<select id="activeTabSelect"></select>
</label>
<label class="check-inline"><input id="showAllTabs" type="checkbox"> Все слои</label>
</div>
<div class="toolbar-group">
<label class="check-inline"><input id="snapEnabled" type="checkbox" checked> Магниты</label>
<label class="check-inline"><input id="gridEnabled" type="checkbox" checked> Сетка</label>
<label class="check-inline"><input id="autoBindEnabled" type="checkbox" checked> Привязка к контейнерам</label>
<button id="zoomOutBtn" class="icon-btn" title="Уменьшить"></button>
<span id="zoomLabel" class="zoom-label">70%</span>
<button id="zoomInBtn" class="icon-btn" title="Увеличить"></button>
<button id="bringFrontBtn" class="icon-btn" title="На передний план"></button>
<button id="sendBackBtn" class="icon-btn" title="На задний план"></button>
<button id="duplicateBtn" class="icon-btn" title="Дублировать"></button>
<button id="deleteBtn" class="icon-btn danger" title="Удалить">×</button>
</div>
</div>
<div id="canvasViewport" class="canvas-viewport">
<div id="canvasSizer" class="canvas-sizer">
<div id="canvasStage" class="canvas-stage">
<div id="guideX" class="snap-guide horizontal hidden"></div>
<div id="guideY" class="snap-guide vertical hidden"></div>
<div id="canvasEmpty" class="canvas-empty hidden">Добавьте компоненты слева или выберите шаблон.</div>
</div>
</div>
</div>
<details class="data-inspector">
<summary>Текущий JSON и доступные пути</summary>
<div class="data-inspector-grid">
<pre id="rawData"></pre>
<div>
<div class="mini-heading">Пути данных</div>
<div id="dataPaths" class="data-paths"></div>
</div>
</div>
</details>
</section>
<aside class="right-sidebar panel-scroll">
<div class="section-title-row">
<h2>Настройки элемента</h2>
<span id="selectedType" class="type-pill"></span>
</div>
<div id="emptyInspector" class="empty-state">Выберите компонент на холсте.</div>
<form id="inspector" class="inspector hidden"></form>
</aside>
</main>
<section id="runtimeView" class="runtime-view runtime-only hidden">
<header class="runtime-topbar">
<div>
<div class="eyebrow">RUNTIME INTERFACE</div>
<div class="runtime-title-line"><strong id="runtimeTitle">Интерфейс</strong><small class="runtime-build-badge">BUILD __UI_BUILDER_BUILD_VERSION__</small></div>
</div>
<div id="runtimeTabs" class="runtime-tabs"></div>
<div class="runtime-actions">
<button id="runtimeEventsToggleBtn" class="icon-btn runtime-events-toggle is-on" type="button" title="Toast-уведомления включены для этого аккаунта" aria-label="Включить или выключить toast-уведомления">🔔</button>
<button id="runtimeEditorBtn" class="icon-btn hidden" type="button" title="Открыть конструктор (Ctrl+Shift+E)" aria-label="Открыть конструктор"></button>
<button id="runtimeShortcutsBtn" class="icon-btn" type="button" title="Шорткаты" aria-label="Шорткаты"></button>
<button id="quickTimersBtn" class="icon-btn" type="button" title="Быстрая настройка таймеров" aria-label="Быстрая настройка таймеров"></button>
<button id="runtimeAdminSettingsBtn" class="icon-btn hidden" type="button" title="Настройки базы данных" aria-label="Настройки базы данных"></button>
<button id="runtimeLogoutBtn" class="icon-btn runtime-logout-btn" type="button" title="Выйти из аккаунта" aria-label="Выйти из аккаунта"></button>
<button id="closePreviewBtn" class="icon-btn btn-accent preview-only" type="button" title="Вернуться в конструктор" aria-label="Вернуться в конструктор"></button>
</div>
</header>
<div id="runtimeViewport" class="runtime-viewport">
<div id="runtimeSizer" class="runtime-sizer">
<div id="runtimeStage" class="runtime-stage"></div>
</div>
</div>
<div id="runtimeButtonDock" class="runtime-button-dock hidden"></div>
</section>
<div id="modalHost"></div>
<div id="toast" class="toast"></div>
<datalist id="dataPathList"></datalist>
<script src="__UI_BUILDER_ASSETS__/app.js?v=__UI_BUILDER_ASSET_VERSION__"></script>
__UI_BUILDER_CUSTOM_SCRIPTS__
</body>
</html>