BUILD152 — пауза всех обновлений в настройках
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
// BUILD152: all browser-side hockey data polling pauses while operator settings are open.
|
||||
// BUILD151: Schedule ONLINE is a toggle; one-second live polling uses isolated schedule_live.
|
||||
// BUILD150: Schedule ONLINE button refreshes score/status from language-specific per-game JSON.
|
||||
// BUILD146: schedule tab remains permanent; score/status refresh is driven by tournament-menu.js.
|
||||
@@ -4582,7 +4583,15 @@ function startCustomTooltips() {
|
||||
refreshQuickPanelOnAirClasses();
|
||||
}
|
||||
|
||||
function hockeySettingsDataRefreshPaused() {
|
||||
return Boolean(
|
||||
document.querySelector(".modal-settings-full")
|
||||
|| document.querySelector(".hockey-settings-modal")
|
||||
);
|
||||
}
|
||||
|
||||
async function pollQuickPanelOverlayState({ force = false } = {}) {
|
||||
if (hockeySettingsDataRefreshPaused()) return false;
|
||||
if (state.quickPanelOverlayPollPending && !force) return false;
|
||||
const deviceId = currentRuntimeVmixDeviceId();
|
||||
if (!deviceId) return false;
|
||||
@@ -4602,8 +4611,16 @@ function startCustomTooltips() {
|
||||
}
|
||||
}
|
||||
|
||||
function stopQuickPanelOverlayPolling() {
|
||||
if (state.quickPanelOverlayPollTimer) {
|
||||
window.clearInterval(state.quickPanelOverlayPollTimer);
|
||||
state.quickPanelOverlayPollTimer = null;
|
||||
}
|
||||
}
|
||||
|
||||
function startQuickPanelOverlayPolling() {
|
||||
if (state.quickPanelOverlayPollTimer) window.clearInterval(state.quickPanelOverlayPollTimer);
|
||||
stopQuickPanelOverlayPolling();
|
||||
if (hockeySettingsDataRefreshPaused()) return;
|
||||
pollQuickPanelOverlayState({ force: true }).catch(() => {});
|
||||
state.quickPanelOverlayPollTimer = window.setInterval(() => {
|
||||
pollQuickPanelOverlayState().catch(() => {});
|
||||
@@ -15255,15 +15272,20 @@ function renderHockeyPenaltyDashboard(node, component, runtime) {
|
||||
function showSettingsModal(title, bodyHtml, options = {}) {
|
||||
const className = ["modal-settings-full", String(options.className || "").trim()].filter(Boolean).join(" ");
|
||||
showModal(title, bodyHtml, { ...options, locked: true, className });
|
||||
window.dispatchEvent(new CustomEvent("hockey:settings-visibility", { detail: { open: true } }));
|
||||
}
|
||||
|
||||
function closeModal() {
|
||||
const closingSettings = Boolean(el.modalHost?.querySelector?.(".modal-settings-full"));
|
||||
closeControlPopover();
|
||||
if (state.shortcutCapture) { state.shortcutCapture = null; state.pressedShortcutModifiers.clear(); }
|
||||
clearInterval(state.timerQuickEditorInterval);
|
||||
state.timerQuickEditorInterval = null;
|
||||
state.modalLocked = false;
|
||||
el.modalHost.innerHTML = "";
|
||||
if (closingSettings) {
|
||||
window.dispatchEvent(new CustomEvent("hockey:settings-visibility", { detail: { open: false } }));
|
||||
}
|
||||
renderHockeyRuntimeSideWindows();
|
||||
scheduleRuntimeScale();
|
||||
}
|
||||
@@ -15386,11 +15408,25 @@ function renderHockeyPenaltyDashboard(node, component, runtime) {
|
||||
}
|
||||
scheduleRuntimeScale();
|
||||
});
|
||||
window.addEventListener("hockey:settings-updated", () => {
|
||||
const refreshHockeyRuntimeAfterSettings = () => {
|
||||
const gameId = hockeyTimerSelectedGameId();
|
||||
if (gameId) hockeyLoadGameControl(gameId, { force: true, rerender: false }).then(() => {
|
||||
if (!gameId) return;
|
||||
hockeyLoadGameControl(gameId, { force: true, rerender: false }).then(() => {
|
||||
if (hockeyTeamStateScoreboardIsLive()) hockeySyncTeamStateOverlays({ force: true }).catch(() => {});
|
||||
});
|
||||
};
|
||||
window.addEventListener("hockey:data-refresh-paused", (event) => {
|
||||
const paused = Boolean(event?.detail?.paused);
|
||||
if (paused) {
|
||||
stopQuickPanelOverlayPolling();
|
||||
} else if (boot.mode === "runtime") {
|
||||
startQuickPanelOverlayPolling();
|
||||
refreshHockeyRuntimeAfterSettings();
|
||||
}
|
||||
});
|
||||
window.addEventListener("hockey:settings-updated", () => {
|
||||
if (hockeySettingsDataRefreshPaused()) return;
|
||||
refreshHockeyRuntimeAfterSettings();
|
||||
});
|
||||
window.addEventListener("hockey:game-selected", (event) => {
|
||||
const gameId = String(event?.detail?.game?.external_id || event?.detail?.game?.id || "").trim();
|
||||
|
||||
Reference in New Issue
Block a user