/** * Модальное окно «Проверка БД» в стиле киоска (как привязка терминала): * тёмная рамка, iframe с /db_check?embed=1. */ (function () { const LOG = "[WespKioskDbCheck]"; const MENU_OVERLAY_ID = "wespKioskMenuOverlay"; function createModal() { const modal = document.createElement("div"); modal.id = "kioskDbCheckModal"; modal.setAttribute("aria-hidden", "true"); modal.style.cssText = "display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:5000;" + "align-items:center;justify-content:center;padding:12px;box-sizing:border-box;"; modal.innerHTML = `
`; document.body.appendChild(modal); const iframe = modal.querySelector("#kioskDbCheckFrame"); const closeBtn = modal.querySelector("#kioskDbCheckClose"); const panel = modal.querySelector(".kiosk-db-check-panel"); function closeModal() { modal.style.display = "none"; modal.setAttribute("aria-hidden", "true"); try { iframe.src = "about:blank"; } catch (e) { console.warn(LOG, "iframe reset", e); } document.removeEventListener("keydown", onKey); } function onKey(e) { if (e.key === "Escape") { e.preventDefault(); closeModal(); } } function openModal() { const menu = document.getElementById(MENU_OVERLAY_ID); if (menu) menu.style.display = "none"; iframe.src = "/db_check?embed=1"; modal.style.display = "flex"; modal.setAttribute("aria-hidden", "false"); document.addEventListener("keydown", onKey); } closeBtn.addEventListener("click", closeModal); modal.addEventListener("click", function (e) { if (e.target === modal) closeModal(); }); if (panel) { panel.addEventListener("click", function (e) { e.stopPropagation(); }); } return { modal, openModal, closeModal }; } function setup(opts) { const options = opts || {}; const linkSel = options.menuLinkSelector || "#dbCheckLink"; if (typeof window.WespKioskMenu !== "undefined" && typeof window.WespKioskMenu.ensureOverlay === "function") { window.WespKioskMenu.ensureOverlay(); } const link = document.querySelector(linkSel); if (!link) { console.warn(LOG, "ссылка меню не найдена после ensureOverlay:", linkSel); return {}; } let api; if (!window.__wespKioskDbCheckApi) { api = createModal(); window.__wespKioskDbCheckApi = api; } else { api = window.__wespKioskDbCheckApi; } if (link.dataset.wespDbCheckBound === "1") { return { openModal: api.openModal, closeModal: api.closeModal }; } link.dataset.wespDbCheckBound = "1"; link.addEventListener( "click", function (e) { if (e.ctrlKey || e.metaKey || e.shiftKey || e.button !== 0) return; if (window.frameElement) return; e.preventDefault(); e.stopPropagation(); api.openModal(); }, true ); return { openModal: api.openModal, closeModal: api.closeModal }; } window.WespKioskDbCheck = { setup }; })();