ui: drop version from footer; add live autostart toggle (default: wait for Play)
The footer no longer shows the app version (sidebar version stays). A new per-browser preference liveAutostart controls live view startup: a toggle in Settings → Плеер. Default off — live opens paused and waits for Play; on — cameras start immediately on entering live view. Live.init seeds this.playing from the pref. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+16
-4
@@ -32,6 +32,7 @@ const PREFS_DEFAULT = {
|
||||
prof1: { ...PROFILE_DEFAULT, mode: "player" }, // 1 поток (основной)
|
||||
prof2: { ...PROFILE_DEFAULT, mode: "player" }, // 2 поток (суб)
|
||||
profA: { ...PROFILE_DEFAULT, mode: "transcode" }, // архив
|
||||
liveAutostart: false, // live view: сразу показывать (true) или ждать Play (по умолч.)
|
||||
};
|
||||
|
||||
// ── текущий пользователь / роли ─────────────────────────────────
|
||||
@@ -147,8 +148,7 @@ function ensureFooter() {
|
||||
f.innerHTML = `<span class="brand">CoRE<span>.Vizion+</span></span>` +
|
||||
`<span class="spacer"></span>` +
|
||||
`<span class="stats" id="sys-stats"></span>` +
|
||||
`<span class="clock" id="clock"></span>` +
|
||||
`<span id="footer-version"></span>`;
|
||||
`<span class="clock" id="clock"></span>`;
|
||||
document.body.appendChild(f);
|
||||
}
|
||||
function ensureHeader() {
|
||||
@@ -168,8 +168,6 @@ async function refreshStats() {
|
||||
` Диск <b>${s.disk.used_gb}/${s.disk.total_gb} GB</b>`;
|
||||
const v = document.getElementById("app-version");
|
||||
if (v && s.version) v.textContent = "v" + s.version;
|
||||
const fv = document.getElementById("footer-version");
|
||||
if (fv && s.version) fv.textContent = "v" + s.version;
|
||||
} catch (e) { /* нет связи / 401 — молчим */ }
|
||||
}
|
||||
// ограничение подменю раскладок (режим 16+) — на любой странице с .subnav
|
||||
@@ -510,6 +508,7 @@ const Live = {
|
||||
async init() {
|
||||
const data = await api("/api/cameras");
|
||||
this.cameras = data.cameras;
|
||||
this.playing = clientPrefs().liveAutostart === true; // по умолч. ждём Play; вкл — показываем сразу
|
||||
// режим каждого потока (свой плеер / транскод) — настройка этого браузера
|
||||
this.mode1 = profileMode("1"); // 1 поток (основной)
|
||||
this.mode2 = profileMode("2"); // 2 поток (суб)
|
||||
@@ -1783,6 +1782,19 @@ const Settings = {
|
||||
// 3 независимых профиля (1 поток / 2 поток / архив), у каждого свой режим:
|
||||
// «Использовать свой плеер» (клиентский WASM-декод) или «Перекодировать» (сервер)
|
||||
const saved = document.getElementById("prefs-saved");
|
||||
// Live view: показывать сразу при входе или после нажатия Play (этот браузер)
|
||||
const auto = document.getElementById("pref-autostart");
|
||||
if (auto) {
|
||||
auto.checked = clientPrefs().liveAutostart === true;
|
||||
auto.onchange = () => {
|
||||
setClientPref("liveAutostart", auto.checked);
|
||||
if (saved) {
|
||||
saved.textContent = "Сохранено в этом браузере ✓";
|
||||
clearTimeout(this._t);
|
||||
this._t = setTimeout(() => { saved.textContent = "Сохраняется в этом браузере"; }, 2000);
|
||||
}
|
||||
};
|
||||
}
|
||||
["1", "2", "a"].forEach((which) => {
|
||||
const block = document.querySelector(`.tr-block[data-tr="${which}"]`);
|
||||
if (!block) return;
|
||||
|
||||
Reference in New Issue
Block a user