Commit graph

38 commits

Author SHA1 Message Date
cd4877bdd2 Frontend: Reconnect-Sync, Dropdowns ohne String-Interpolation, Fehlerpfad
Alle vier Frontends horchten auf ein Event 'connected', das nie gesendet wurde;
der Server verschickte stattdessen ein Event mit dem Namen "Hello user from
server" und leerem Payload. Beides ist entfernt. An seine Stelle tritt das
Socket.IO-eigene 'connect', das auch nach einem Reconnect feuert: Adminpanel und
Monitor holen sich dort den aktuellen Stand. Da der Pi das WLAN selbst
aufspannt, sind kurze Abbrueche im Betrieb normal — bisher blieb die Anzeige
danach auf einem veralteten Stand stehen, bis das naechste Ereignis eintraf.

Die Teamnamen-Dropdowns bauten ihre Eintraege als HTML-String zusammen und
interpolierten den Namen in einen onclick-Aufruf. Ein Name mit Apostroph, etwa
"SG D'Horn", zerlegte den Handler und machte den Eintrag unbrauchbar. Die
Eintraege entstehen jetzt ueber createTeamDropdownItem() mit textContent und
addEventListener, der Name kommt per Closure statt als String. Die
Schleifenvariable ist zudem korrekt deklariert, vorher war sie global.

fetchJson() kapselt Anfragen und liefert null, wenn der Server nicht erreichbar
ist oder mit einem Fehler antwortet, statt still in der Konsole zu scheitern.
timerStart und timerPause behalten ihre eigene Auswertung des 406-Status.

Das Verbindungs-Handling ist von routes/index.js nach controllers/socketio.js
gewandert, wo der Socket.IO-Server erzeugt wird, und protokolliert jetzt auch
Verbindungsabbrueche.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 21:06:45 +02:00
6f4c63aa6e Bugfixes: Timer-Zuschlag, Debugfenster-Schalter, Score-Untergrenze
timerIncDec beendete den Timer auch beim Hinzufuegen von Zeit: die Pruefung
verglich den Betrag des Werts mit der Restzeit, ohne die Richtung zu beachten.
Bei 5s Restzeit fuehrte "+10s" damit zum Spielende statt zu 15s. Die Pruefung
gilt jetzt nur noch fuer negative Werte. Beim Verringern unter 0 wird die
Restzeit zusaetzlich sauber auf 00:00 gesetzt, sonst blieb sie stehen und der
Timer war trotz "ENDE" auf dem Monitor wieder startbar.

Im Debugfenster zeigten alle drei Label auf scoreSwitchEnable. Ein Klick auf
den Text "Teamanzeige spiegeln" oder "Splashscreen anzeigen" blendete damit das
Scoreboard aus. Jede Beschriftung zeigt jetzt auf ihren eigenen Schalter.

scoreSetScore sendet den neuen Stand jetzt wie alterScore und clearScore an die
Monitore; der Endpunkt wird vom Panel nicht verwendet, ist aber dokumentiert.

alterScore laesst den Spielstand nicht mehr unter 0 laufen.

Die toten Funktionsprototypen in timer.js und score.js sind entfernt: sie wurden
durch Hoisting ohnehin ueberschrieben und listeten toggleReferenceMirrored und
print schon nicht mehr auf. Ebenso die Wert-Snapshots duration, durationLeft und
isPaused aus module.exports, die dauerhaft die Startwerte lieferten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 21:06:30 +02:00
a1cea9c37d README auf den gemergten Stand gebracht
Ergaenzt: Splashscreen als dritte Monitoransicht und Standard beim Start,
Team-Datenbank, Debugfenster, Spiegelung des Adminpanels, Steuerung des
Kiosk-Browsers, die zugehoerigen etc-, db- und score-Endpunkte sowie der
Hinweis zur PORT-Variable. Korrigiert: Portangabe, Projektstruktur,
Antwortformate und die Abhaengigkeitsliste.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 20:39:27 +02:00
a3519f11d4 Splashscreen-Stylesheet gefuellt
Die Datei war leer, wodurch der Splashscreen den weissen Browser-Hintergrund
zeigte statt des Blaus der uebrigen Monitoransichten. Scrollbalken auf dem
Beamer unterdrueckt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 20:39:27 +02:00
6aa5a7b025 Standardport wieder 3000, Port 80 per Umgebungsvariable
Port 80 stammt aus dem Kiosk-Setup auf dem Pi, wo Chromium die Seite ohne
Portangabe unter http://localhost oeffnet. Als Default erzwingt er lokal
erhoehte Rechte. Auf dem Pi stattdessen PORT=80 setzen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 20:39:27 +02:00
ac3e8b183c Doppelte Team-IDs im Adminpanel entfernt
Mit dem Verschieben der +1/-1-Buttons in das Score-Panel blieb der alte
Block darunter als leere Karte stehen. Dadurch existierten teamAcolName und
teamBcolName jeweils zweimal im Dokument; getElementById traf nur die erste
Instanz, die zweite blieb dauerhaft leer.

Karte entfernt und die verbleibende Zeile zentriert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 20:39:27 +02:00
92eb59d2ef Teamdatenbank ohne lowdb, Pfad unabhaengig vom Startverzeichnis
lowdb v7 ist ESM-only, das Projekt ist CommonJS. Der bisherige Umweg ueber
eine async IIFE mit await import() hatte zur Folge, dass db bei einem sehr
fruehen Request noch undefined sein konnte.

Fuer eine Liste von Teamnamen genuegt fs: read/write lesen und schreiben
db.json direkt und synchron, die Race-Condition entfaellt und lowdb kann als
Abhaengigkeit raus. Die exportierte API bleibt unveraendert, score.js und
routes/admin.js brauchen keine Anpassung.

Der Pfad zu db.json wird jetzt ueber __dirname aufgeloest statt relativ zum
Arbeitsverzeichnis, damit die Datei unabhaengig vom Startverzeichnis immer
an derselben Stelle liegt. Fehlt oder bricht die Datei, wird auf eine leere
Teamliste zurueckgefallen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 20:39:12 +02:00
c4325ae8ac Merge branch 'master' of https://git.jappel.io/jappel/scoreboard-js
Konflikt in scoreboard/controllers/cli.js zugunsten der Remote-Version
aufgeloest: openBrowser()/killBrowser() bleiben erhalten, da routes/admin.js
sie verwendet. Der lokale Testcode wurde verworfen (er rief zudem das
child_process-Modul faelschlich als Funktion auf).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 20:32:29 +02:00
e25c8606d9 Added comments and readme 2026-04-10 22:16:51 +02:00
799dd9bd8c Last changes before game 2024-06-08 08:48:35 +02:00
a27c38eeb3 Added refernce mirrored to mirror team position when sitting behind the main monitor 2024-06-06 21:56:54 +02:00
c0ffac18e4 Added splashscreen 2024-06-06 21:51:18 +02:00
469f917ada Formatting 2024-06-02 22:31:18 +02:00
7244a4ceaa Added browser start and kill function 2024-06-02 22:31:11 +02:00
8f402058ad Added db with team selection, scoreboard enabled by default, Added Debugwindow, cleanup 2024-06-02 22:30:39 +02:00
1d632252bf Added test cli functionality 2024-05-31 21:05:22 +02:00
ad6ab2ecab Added sideswitch functionality, cleanup, comments 2024-05-28 23:00:32 +02:00
835248a9dc Added config team functionality, receive them from backend to update frontend, Added scoreswitch 2024-05-28 22:59:36 +02:00
faaa47a792 Cleanup, comments, removed ejs stuff 2024-05-17 22:21:43 +02:00
50dd893b5a Cleanup, comments, structuring 2024-05-17 21:53:37 +02:00
93d06517e4 Added scoreboard functionality, seperate update admin frontend 2024-05-17 21:24:58 +02:00
e36a959071 Refresh function for main frontend, separate main frontends for normal countdown and score+countdown 2024-05-17 21:22:57 +02:00
35a0785bf3 Added comments, incDec function 2024-05-17 21:17:52 +02:00
9f845ea234 Seperate style files for admin and index, admin interface formatting and design 2024-05-09 08:37:08 +02:00
54ca75563a Admin frontend page 2024-05-06 22:20:37 +02:00
b7cf1e4d9a Added websockts for admin interface 2024-05-06 22:20:19 +02:00
536c1272d8 Added important admin frontend functions with error handling, the corresponding api endpoints, and the timer logic 2024-05-06 22:19:20 +02:00
340ab1236e Cleanup 2024-05-06 21:51:13 +02:00
a3e98a0207 Added fontawesome 2024-05-06 21:26:58 +02:00
a4d905d728 Cleanup, formatting, comments, added onclick functions 2024-04-21 14:24:53 +02:00
093c8c6e24 Main timer logic, socketio server and backend endpoints 2024-04-21 12:56:00 +02:00
43f355765a Created main frontend 2024-04-21 12:55:33 +02:00
d8b400c371 Added basic admin interface 2024-04-21 12:54:37 +02:00
7d181ca315 Added socketio, and moment 2024-04-21 12:48:59 +02:00
a71f4b55a1 Removed old express installation 2024-04-21 12:44:59 +02:00
8a08aded5f Added bootstrap 2024-04-21 12:43:28 +02:00
36d9c066f4 Installed express 2024-04-07 13:44:51 +02:00
66765c431a Working Hello World express app 2024-04-07 12:42:00 +02:00