Плеер и перекодирование — настройки этого браузера
diff --git a/frontend/static/app.js b/frontend/static/app.js
index 43c860a..3d9e3ae 100644
--- a/frontend/static/app.js
+++ b/frontend/static/app.js
@@ -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 = `CoRE.Vizion+` +
`` +
`` +
- `` +
- ``;
+ ``;
document.body.appendChild(f);
}
function ensureHeader() {
@@ -168,8 +168,6 @@ async function refreshStats() {
` Диск ${s.disk.used_gb}/${s.disk.total_gb} GB`;
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;