Reload-Countdown laedt die Buero-Visualisierung bei 0 tatsaechlich neu
Bisher zaehlte der Countdown im Header nur rein kosmetisch herunter, ohne selbst etwas neu zu laden. Ein dauerhaft offener Tab (z.B. auf einer Monitor-Wand) blieb dadurch auf unbestimmte Zeit bei der beim Laden geholten JS-Version haengen, auch wenn ein Fix laengst gemergt und per Auto-Update deployt war - so blieben z.B. die in PR #106 entfernten KPI-Graphen auf bereits offenen Tabs weiter sichtbar (Issue #108). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
b60a36832a
commit
72bad859f1
5 changed files with 30 additions and 13 deletions
|
|
@ -30,9 +30,11 @@ CODEBERG_TOKEN=
|
|||
# Mit eingerichtetem Webhook (siehe unten) ist das nur noch das Sicherheitsnetz fuer
|
||||
# verpasste Zustellungen und darf gross bleiben - Issue-Aenderungen landen dann in Sekunden
|
||||
# auf dem Board, nicht erst beim naechsten Lauf.
|
||||
# Speist ausserdem den rein kosmetischen Reload-Countdown im Header der Buero-Visualisierung
|
||||
# (Service "web", siehe docker/nginx/default.conf.template) - der Countdown zaehlt nur mit,
|
||||
# er loest selbst keinen echten Reload/Sync aus.
|
||||
# Speist ausserdem den Reload-Countdown im Header der Buero-Visualisierung (Service "web",
|
||||
# siehe docker/nginx/default.conf.template) - erreicht der Countdown 0, laedt der Browser die
|
||||
# Seite tatsaechlich neu (Issue #108), damit ein dauerhaft offener Wand-Tab laengstens nach
|
||||
# einem Intervall den aktuell deployten Frontend-Stand bekommt. Auf den periodischen
|
||||
# Codeberg-Sync hat das keinen Einfluss, dafuer ist weiterhin allein das Backend zustaendig.
|
||||
MONITOR_SYNC_INTERVAL=600
|
||||
|
||||
# Secret des Codeberg-Webhooks (Repo -> Einstellungen -> Webhooks -> Forgejo, Ziel-URL
|
||||
|
|
|
|||
|
|
@ -20,7 +20,11 @@ die dazugehörigen Klärungen in [Detailfragen.md](Detailfragen.md) und
|
|||
Agenten laufen animiert zwischen Schreibtisch/Board/Monitor-Wand/Kaffee-Ecke (Phase 3-5,
|
||||
siehe Visualization.md Abschnitt 9). Ist die API nicht erreichbar, zeigt die Szene
|
||||
ersatzweise Demo-Daten — kenntlich gemacht durch einen roten Banner „API nicht erreichbar!".
|
||||
Die Basis-URL der API kommt aus `MONITOR_API_BASE` (siehe `.env.example`).
|
||||
Die Basis-URL der API kommt aus `MONITOR_API_BASE` (siehe `.env.example`). Ein dauerhaft
|
||||
offener Tab (z.B. auf einer Monitor-Wand) lädt sich spätestens alle `MONITOR_SYNC_INTERVAL`
|
||||
Sekunden selbst neu (Reload-Countdown im Header, Issue #108), damit er immer den aktuell
|
||||
deployten Frontend-Stand zeigt statt auf unbestimmte Zeit eine alte Version weiterlaufen zu
|
||||
lassen.
|
||||
- Klick auf den PO öffnet ein Modal, in dem sich die vom Codeberg-Sync gelesenen Projekte
|
||||
(Owner/Repo + Farbe) hinzufügen, bearbeiten und löschen lassen (Issue #27) — Änderungen
|
||||
wirken sofort im laufenden `sync`-Dienst, ohne Neustart. Schreibende Aktionen fragen einmalig
|
||||
|
|
|
|||
|
|
@ -18,8 +18,9 @@ server {
|
|||
# definiert, bleibt ihr Platzhalter stehen und nginx verweigert den Start
|
||||
# ("unknown \"monitor_api_base\" variable") - besser ein lauter Fehler als eine still
|
||||
# falsche URL. docker-compose.yml setzt beide Variablen daher immer (ggf. mit Default).
|
||||
# MONITOR_SYNC_INTERVAL speist nur den rein kosmetischen Reload-Countdown im Header
|
||||
# (Issue #12) - hat keinen Einfluss auf den tatsaechlichen Update-Takt der Szene.
|
||||
# MONITOR_SYNC_INTERVAL speist den Reload-Countdown im Header (Issue #12) - der laedt die
|
||||
# Seite bei 0 tatsaechlich per location.reload() neu (Issue #108), hat aber keinen Einfluss
|
||||
# auf den laufenden Update-Takt der Szene selbst (SSE/Polling, siehe office-render.js).
|
||||
location = /config.js {
|
||||
default_type application/javascript;
|
||||
add_header Cache-Control "no-store";
|
||||
|
|
|
|||
|
|
@ -2537,9 +2537,12 @@ function setAgentProblemBanner(agents) {
|
|||
banner.classList.toggle("api-banner-warning", !expired && Boolean(expiring));
|
||||
}
|
||||
|
||||
// Rein kosmetischer Countdown im Header (Issue #12): zaehlt unabhaengig vom tatsaechlichen
|
||||
// SSE-/Polling-Takt von MONITOR_SYNC_INTERVAL (aus config.js, siehe office.html) auf 0
|
||||
// herunter und startet danach von vorn - loest selbst keinen Reload aus.
|
||||
// Countdown im Header (Issue #12, seit Issue #108 mit echtem Reload): zaehlt unabhaengig vom
|
||||
// tatsaechlichen SSE-/Polling-Takt von MONITOR_SYNC_INTERVAL (aus config.js, siehe office.html)
|
||||
// auf 0 herunter und laedt die Seite dann per location.reload() neu, statt nur wieder von vorn
|
||||
// zu zaehlen - ein dauerhaft offener Wand-Tab holt sich damit laengstens nach einem Intervall
|
||||
// den aktuell deployten Frontend-Stand (sonst zeigt er auf unbestimmte Zeit die alte
|
||||
// JS-Version weiter an, selbst wenn ein Fix laengst gemergt/deployt ist).
|
||||
function startReloadCountdown() {
|
||||
const countdownEl = document.getElementById("reload-countdown");
|
||||
if (!countdownEl) {
|
||||
|
|
@ -2551,7 +2554,12 @@ function startReloadCountdown() {
|
|||
countdownEl.textContent = `${remaining}s`;
|
||||
|
||||
window.setInterval(() => {
|
||||
remaining = nextCountdownSeconds(remaining, intervalSeconds);
|
||||
const next = nextCountdownSeconds(remaining, intervalSeconds);
|
||||
if (next === intervalSeconds) {
|
||||
window.location.reload();
|
||||
return;
|
||||
}
|
||||
remaining = next;
|
||||
countdownEl.textContent = `${remaining}s`;
|
||||
}, 1000);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1045,9 +1045,11 @@ export function advancePoVisitStage(stage) {
|
|||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------
|
||||
// Reload-Countdown im Header (Issue #12): rein kosmetischer Sekundenzaehler, der die
|
||||
// Sync-Frequenz des Backends (MONITOR_SYNC_INTERVAL, siehe .env.example) im Header
|
||||
// widerspiegelt - ohne selbst irgendetwas neu zu laden (siehe office-render.js).
|
||||
// Reload-Countdown im Header (Issue #12, seit Issue #108 mit echtem Reload): Sekundenzaehler,
|
||||
// der die Sync-Frequenz des Backends (MONITOR_SYNC_INTERVAL, siehe .env.example) im Header
|
||||
// widerspiegelt - erreicht er 0, laedt office-render.js die Seite tatsaechlich neu, damit ein
|
||||
// dauerhaft offener Wand-Tab laengstens nach einem Intervall den aktuell deployten
|
||||
// Frontend-Stand bekommt.
|
||||
// ---------------------------------------------------------------------------------------
|
||||
|
||||
export const DEFAULT_RELOAD_INTERVAL_SECONDS = 600;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue