binárka / linux (pull_request) Successful in 10s
testy / pytest (3.11) (pull_request) Successful in 1s
testy / pytest (3.12) (pull_request) Successful in 1s
testy / pytest (3.13) (pull_request) Successful in 1s
testy / pytest (3.14) (pull_request) Successful in 0s
Tabule dosud zbylé adresy jen vypsala, ale naskenovat se dala pouze ta první. Teď se na ně dá kliknout: vybraná se přesune nahoru velkým písmem, QR kód se přepne na ni a ta předchozí se objeví v seznamu, takže se dá kroužit dokola. Kódy jsou vykreslené všechny předem a přepíná se jen ten viditelný — žádné doptávání serveru, žádná QR knihovna na klientovi. Aby to stránku nenafouklo, skládá se SVG ze souvislých úseků místo jednotlivých čtverečků; tabule se třemi adresami má 23 kB. Otisk v data-address zahrnuje všechny adresy, ne jen tu první. Když se změní kterákoli z nich, nabídka i QR kódy jsou k ničemu a tabule se načte znovu. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
42 lines
1.3 KiB
HTML
42 lines
1.3 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}Zápisník — hra {{ game_id }}{% endblock %}
|
|
|
|
{% block body %}
|
|
<div class="board">
|
|
<header class="masthead">
|
|
<div id="head" data-address="{{ address_key }}">{% include "_head.html" %}</div>
|
|
{% include "_join.html" %}
|
|
</header>
|
|
|
|
<div id="sheet">{% include "_sheet.html" %}</div>
|
|
</div>
|
|
|
|
<script>
|
|
// Tabule se doptává serveru; není co udržovat na klientovi.
|
|
const url = "{{ url_for('board_panel', game_id=game_id) }}";
|
|
|
|
setInterval(async () => {
|
|
try {
|
|
const response = await fetch(url, { cache: "no-store" });
|
|
if (!response.ok) return;
|
|
|
|
const fresh = new DOMParser().parseFromString(await response.text(), "text/html");
|
|
|
|
// Notebook se přesunul na jinou síť — adresa v QR kódu už neplatí.
|
|
const head = fresh.getElementById("head");
|
|
if (head && head.dataset.address !== document.getElementById("head").dataset.address) {
|
|
location.reload();
|
|
return;
|
|
}
|
|
|
|
for (const id of ["head", "sheet"]) {
|
|
const updated = fresh.getElementById(id);
|
|
if (updated) document.getElementById(id).replaceWith(updated);
|
|
}
|
|
} catch (error) {
|
|
// Server je pryč — zkusíme to za dvě vteřiny znovu.
|
|
}
|
|
}, 2000);
|
|
</script>
|
|
{% endblock %}
|