// deck-it - the card a panel shows while what it watches is switched off // Copyright (C) 2026 Danilo M. // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as // published by the Free Software Foundation. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License along // with this program; if not, write to the Free Software Foundation, Inc., // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. // Replaces box's content with a dimmed app icon, a title, a line on what // brings it back, and a pulsing "checking" note, since the poll keeps going // and the panel returns by itself. icon is a URL; a missing one is hidden. // The raw reason, if any, is kept in the tooltip rather than shown. export function offline(box, { icon, title, detail, reason }) { const key = `${icon}|${title}|${detail}|${reason ?? ""}`; if (box._offline === key && box.firstElementChild?.classList.contains("offline")) return; box._offline = key; box.innerHTML = `
checking
`; const img = box.querySelector(".off-icon"); img.onerror = () => img.remove(); img.src = icon; box.querySelector(".off-title").textContent = title; box.querySelector(".off-detail").textContent = detail; if (reason) box.firstElementChild.title = reason; }