Specialist App
?
QR Kód s aktuální adresou
Otevřít Dveře 3
Archiv
Kancelář
Technická
Úklid
WC
ZAMČENO
Otevřít Dveře 4
Archiv
Kancelář
Technická
Úklid
WC
ZAMČENO
Upravit obsah stránky
{% extends "templates/base.html" %} {% set game_name = "Specialist App" %} {% block content %} <div class="container text-center mt-5"> <!-- Sekce pro Dveře 3 --> <h2>Otevřít Dveře 3</h2> <div class="d-flex flex-wrap justify-content-center gap-3 my-3"> <button class="btn btn-outline-light btn-lg room3-btn" data-room="archiv.png">Archiv</button> <button class="btn btn-outline-light btn-lg room3-btn" data-room="kancelar.png">Kancelář</button> <button class="btn btn-outline-light btn-lg room3-btn" data-room="technicka.png">Technická</button> <button class="btn btn-outline-light btn-lg room3-btn" data-room="uklid.png">Úklid</button> <button class="btn btn-outline-light btn-lg room3-btn" data-room="wc.png">WC</button> </div> <p id="status3" class="h4 mb-5">ZAMČENO</p> <!-- Sekce pro Dveře 4 --> <h2>Otevřít Dveře 4</h2> <div class="d-flex flex-wrap justify-content-center gap-3 my-3"> <button class="btn btn-outline-light btn-lg room4-btn" data-room="archiv.png">Archiv</button> <button class="btn btn-outline-light btn-lg room4-btn" data-room="kancelar.png">Kancelář</button> <button class="btn btn-outline-light btn-lg room4-btn" data-room="technicka.png">Technická</button> <button class="btn btn-outline-light btn-lg room4-btn" data-room="uklid.png">Úklid</button> <button class="btn btn-outline-light btn-lg room4-btn" data-room="wc.png">WC</button> </div> <p id="status4" class="h4">ZAMČENO</p> </div> <style> body { background: #333; color: #fff; } .room3-btn, .room4-btn { width: 140px; } #alarmOverlay { position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.9); color:#ff4444; display:flex; align-items:center; justify-content:center; font-size:2rem; text-align:center; z-index:9999; padding:1rem; } </style> <script> document.addEventListener('DOMContentLoaded', () => { const fh = new ForrestHubLib(); // ----- Dveře 3 ----- const status3 = document.getElementById('status3'); async function refresh3() { const st = await fh.dbVarGetKey('doors3State') || 'locked'; status3.textContent = st === 'unlocked' ? 'ODEMČENO' : 'ZAMČENO'; } refresh3(); setInterval(refresh3, 1000); document.querySelectorAll('.room3-btn').forEach(btn=>{ btn.addEventListener('click', async()=>{ const chosen = btn.dataset.room; const current = await fh.dbVarGetKey('doors3Room')||''; if (chosen === current) { await fh.dbVarSetKey('doors3Command', chosen); } else { // spustit vzdálený i lokální alarm await fh.dbVarSetKey('doors3State','alarm'); const ov = document.createElement('div'); ov.id = 'alarmOverlay'; ov.textContent = '!!!! Chyba !!!! Byl aktivován ALARM !!!'; document.body.appendChild(ov); setTimeout(()=>ov.remove(), 10000); } }); }); // ----- Dveře 4 ----- const status4 = document.getElementById('status4'); async function refresh4() { const st = await fh.dbVarGetKey('doors4State') || 'locked'; status4.textContent = st === 'unlocked' ? 'ODEMČENO' : 'ZAMČENO'; } refresh4(); setInterval(refresh4, 1000); document.querySelectorAll('.room4-btn').forEach(btn=>{ btn.addEventListener('click', async()=>{ const chosen = btn.dataset.room; const current = await fh.dbVarGetKey('doors4Room')||''; if (chosen === current) { await fh.dbVarSetKey('doors4Command', chosen); } else { await fh.dbVarSetKey('doors4State','alarm'); const ov = document.createElement('div'); ov.id = 'alarmOverlay'; ov.textContent = '!!!! Chyba !!!! Byl aktivován ALARM !!!'; document.body.appendChild(ov); setTimeout(()=>ov.remove(), 10000); } }); }); }); </script> {% endblock %}