Added comments and readme
This commit is contained in:
parent
1d632252bf
commit
e25c8606d9
8 changed files with 252 additions and 16 deletions
|
|
@ -1,11 +1,14 @@
|
|||
// Einstiegspunkt der Express-Applikation.
|
||||
// Registriert Middleware, View-Engine und Routen, und exportiert die App für bin/www.
|
||||
|
||||
var createError = require('http-errors');
|
||||
var express = require('express');
|
||||
var path = require('path');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var logger = require('morgan');
|
||||
|
||||
var indexRouter = require('./routes/index');
|
||||
var adminRouter = require('./routes/admin');
|
||||
var indexRouter = require('./routes/index'); // Öffentliche Monitor-Ansicht
|
||||
var adminRouter = require('./routes/admin'); // Admin-Panel (Timer & Scoreboard steuern)
|
||||
|
||||
var app = express();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,23 @@
|
|||
// CLI-Controller (Testdatei)
|
||||
// Zuständig für die Verarbeitung von Kommandozeilen-Befehlen des Scoreboards.
|
||||
// Aktuell nur ein Funktionstest mit einem einfachen `ls`-Befehl.
|
||||
|
||||
const exec = require('node:child_process');
|
||||
|
||||
// run the `ls` command using exec
|
||||
// Testaufruf: Listet den Inhalt des aktuellen Verzeichnisses auf,
|
||||
// um zu prüfen, ob child_process.exec korrekt funktioniert.
|
||||
exec('ls ./', (err, output) => {
|
||||
// once the command has completed, the callback function is called
|
||||
if (err) {
|
||||
// log and return if we encounter an error
|
||||
console.error("could not execute command: ", err)
|
||||
return
|
||||
}
|
||||
// log the output received from the command
|
||||
console.log("Output: \n", output)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ let teamB = {
|
|||
};
|
||||
let sideswitch = false;
|
||||
|
||||
// Function prototypes
|
||||
// Funktionsübersicht (Prototypen ohne Implementierung — nur zur Übersicht)
|
||||
function setEnabled(status) {};
|
||||
function configTeam(team, name, name2, isSpielgemeinschaft) {};
|
||||
function setScore(team, score) {};
|
||||
|
|
@ -30,6 +30,7 @@ function setEnabled(status) {
|
|||
enabled = status;
|
||||
}
|
||||
|
||||
// Setzt Namen und Spielgemeinschafts-Status eines Teams
|
||||
function configTeam(team, name, name2, isSpielgemeinschaft) {
|
||||
if(team == "teamA") {
|
||||
teamA.name = name;
|
||||
|
|
@ -51,7 +52,7 @@ function setScore(team, score) {
|
|||
}
|
||||
}
|
||||
|
||||
// Increment score by one
|
||||
// Ändert den Score eines Teams um 1 — Richtung "inc" (erhöhen) oder "dec" (verringern)
|
||||
function alterScore(team, dir) {
|
||||
if(team == "teamA") {
|
||||
if(dir == "inc") {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,12 @@
|
|||
// Erstellt den zentralen Socket.IO-Server auf Port 3001.
|
||||
// Wird von timer.js, score.js und den Routen importiert,
|
||||
// um Events (Timer, Score, Refresh) an alle verbundenen Clients zu senden.
|
||||
|
||||
const { Server } = require('socket.io');
|
||||
|
||||
// CORS auf "*" gesetzt, da Admin und Monitor auf unterschiedlichen Ports laufen können
|
||||
const io = new Server(3001, {
|
||||
cors: { origin: "*" }
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = io
|
||||
|
|
@ -45,33 +45,37 @@ function updateScoreFrontend(values) {
|
|||
document.getElementById("score").innerHTML = values.print; // Set score on admin interface
|
||||
|
||||
if(!values.sideswitch) {
|
||||
// Normale Seite: teamA links, teamB rechts
|
||||
if(values.teamA.isSpielgemeinschaft) {
|
||||
document.getElementById("teamA").innerHTML = values.teamA.name + '<br>' + values.teamA.name2;
|
||||
} else {
|
||||
document.getElementById("teamA").innerHTML = values.teamA.name
|
||||
}
|
||||
|
||||
|
||||
if(values.teamB.isSpielgemeinschaft) {
|
||||
document.getElementById("teamB").innerHTML = values.teamB.name + '<br>' + values.teamB.name2;
|
||||
} else {
|
||||
document.getElementById("teamB").innerHTML = values.teamB.name
|
||||
}
|
||||
} else {
|
||||
// Seitenwechsel nach Halbzeit: teamA und teamB tauschen ihre Anzeigeseite
|
||||
if(values.teamA.isSpielgemeinschaft) {
|
||||
document.getElementById("teamB").innerHTML = values.teamA.name + '<br>' + values.teamA.name2;
|
||||
} else {
|
||||
document.getElementById("teamB").innerHTML = values.teamA.name
|
||||
}
|
||||
|
||||
|
||||
if(values.teamB.isSpielgemeinschaft) {
|
||||
document.getElementById("teamA").innerHTML = values.teamB.name + '<br>' + values.teamB.name2;
|
||||
} else {
|
||||
document.getElementById("teamA").innerHTML = values.teamB.name
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Wird beim Laden der Seite aufgerufen, um Timer und Score sofort mit dem aktuellen
|
||||
// Serverstand zu synchronisieren (verhindert leere Anzeige nach Seiten-Reload)
|
||||
async function initialUpdate() {
|
||||
timerGetValues(); // Request new values for timer
|
||||
scoreGetValues(); // Request new values for score
|
||||
|
|
|
|||
|
|
@ -55,8 +55,9 @@ router.post('/timerReset', function(req, res, next) {
|
|||
res.json(timer.getValues()); // Respond with all important values to update the frontend
|
||||
});
|
||||
|
||||
// Express router endpoint to increase or decrease the timer by a value in seconds
|
||||
router.post('/timerIncDec', function(req, res, next) {
|
||||
timer.incDec(req.body.value);
|
||||
timer.incDec(req.body.value); // Positive Werte = erhöhen, negative Werte = verringern
|
||||
res.json(timer.getValues());
|
||||
});
|
||||
|
||||
|
|
@ -116,6 +117,7 @@ router.get('/scoreClearScore', function(req, res, next) {
|
|||
res.json(score.getValues()); // Respond with important values for frontend
|
||||
});
|
||||
|
||||
// Express router endpoint to configure both teams (name, name2, Spielgemeinschaft-flag)
|
||||
router.post('/scoreConfigTeams', function(req, res, next) {
|
||||
score.configTeam("teamA", req.body.teamA.name, req.body.teamA.name2, req.body.teamA.isSpielgemeinschaft);
|
||||
score.configTeam("teamB", req.body.teamB.name, req.body.teamB.name2, req.body.teamB.isSpielgemeinschaft);
|
||||
|
|
|
|||
|
|
@ -13,10 +13,12 @@ router.get('/', function(req, res, next) {
|
|||
}
|
||||
});
|
||||
|
||||
// Websocket-Verbindungshandler: wird ausgelöst, sobald ein Client (Monitor) sich verbindet
|
||||
io.on('connection', (socket) => {
|
||||
console.log("A user connected");
|
||||
socket.emit("Hello user from server");
|
||||
socket.emit("Hello user from server"); // Begrüßungsnachricht an den neuen Client
|
||||
|
||||
// Eingehende Nachrichten vom Client loggen (aktuell nur für Debugging)
|
||||
socket.on('message', (message) => {
|
||||
console.log(message)
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue