From 835248a9dc1025743341d54cab1032bfdb344a28 Mon Sep 17 00:00:00 2001 From: Julian Appel Date: Tue, 28 May 2024 22:59:36 +0200 Subject: [PATCH] Added config team functionality, receive them from backend to update frontend, Added scoreswitch --- scoreboard/controllers/score.js | 14 ++------ scoreboard/public/javascripts/admin.js | 33 +++++++++++++++++ scoreboard/public/javascripts/indexScore.js | 27 ++++++++++++++ scoreboard/routes/admin.js | 7 ++++ scoreboard/views/admin.hbs | 40 ++++++++++++++++++--- scoreboard/views/indexScore.hbs | 4 +-- 6 files changed, 106 insertions(+), 19 deletions(-) diff --git a/scoreboard/controllers/score.js b/scoreboard/controllers/score.js index 825fc8f..870f1e4 100644 --- a/scoreboard/controllers/score.js +++ b/scoreboard/controllers/score.js @@ -17,8 +17,7 @@ let sideswitch = false; // Function prototypes function setEnabled(status) {}; -function setName(team, name) {}; -function configTeam() {}; +function configTeam(team, name, name2, isSpielgemeinschaft) {}; function setScore(team, score) {}; function alterScore(team, dir) {}; function clearScore() {}; @@ -43,15 +42,6 @@ function configTeam(team, name, name2, isSpielgemeinschaft) { } } -// Set team name -function setName(team, name) { - if(team == "teamA") { - teamA.name = name; - } else if(team == "teamB") { - teamB.name = name; - } -} - // Set score of team to passed value function setScore(team, score) { if(team == "teamA") { @@ -121,5 +111,5 @@ function getValues() { } module.exports = { - setEnabled, setScore, alterScore, clearScore, getEnabled, getValues + setEnabled, configTeam, setScore, alterScore, clearScore, toggleSideswitch, getEnabled, getValues } \ No newline at end of file diff --git a/scoreboard/public/javascripts/admin.js b/scoreboard/public/javascripts/admin.js index a66818f..6ce6bcd 100644 --- a/scoreboard/public/javascripts/admin.js +++ b/scoreboard/public/javascripts/admin.js @@ -48,6 +48,15 @@ function updateScoreFrontend(values) { console.log(values); // Print received data document.getElementById("scoreSwitchEnable").checked = values.enabled; // Set switch status to received score enabled value document.getElementById("score").innerHTML = values.print; // Set score on admin interface + + // Input current Team values into form inputs + document.getElementById("teamAname").value = values.teamA.name; + document.getElementById("teamAname2").value = values.teamA.name2; + document.getElementById("teamAisSpielgemeinschaft").checked = values.teamA.isSpielgemeinschaft; + + document.getElementById("teamBname").value = values.teamB.name; + document.getElementById("teamBname2").value = values.teamB.name2; + document.getElementById("teamBisSpielgemeinschaft").checked = values.teamB.isSpielgemeinschaft; } // Initial update gets called whenever page has been loaded @@ -162,4 +171,28 @@ async function scoreClearScore() { const response = await fetch("/admin/scoreClearScore"); // Call API Endpoint /admin/scoreClearScore const data = await response.json(); // Wait for asynchronous transfer to complete updateScoreFrontend(data); // Update admin frontend +} + +// Configure Teams +async function scoreConfigTeams() { + teamA = { + name: document.getElementById("teamAname").value, + name2: document.getElementById("teamAname2").value, + isSpielgemeinschaft: document.getElementById("teamAisSpielgemeinschaft").checked + }; + teamB = { + name: document.getElementById("teamBname").value, + name2: document.getElementById("teamBname2").value, + isSpielgemeinschaft: document.getElementById("teamBisSpielgemeinschaft").checked + } + console.log(teamA, teamB) + + const response = await fetch("/admin/scoreConfigTeams", { // Call API Endpoint /admin/scoreAlterScore with the teamname to alter the score in the specified direction + method: 'POST', + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({teamA: teamA, teamB: teamB}) + }); + const data = await response.json(); // Wait for asyncronous transfer to complete + updateScoreFrontend(data); // Update admin frontend + refreshMonitor(); } \ No newline at end of file diff --git a/scoreboard/public/javascripts/indexScore.js b/scoreboard/public/javascripts/indexScore.js index 5c01d9f..81ba527 100644 --- a/scoreboard/public/javascripts/indexScore.js +++ b/scoreboard/public/javascripts/indexScore.js @@ -39,6 +39,33 @@ function updateTimerFrontend(values) { // Update DOM score elements from passed values function updateScoreFrontend(values) { document.getElementById("score").innerHTML = values.print; // Set score on admin interface + + if(!values.sideswitch) { + if(values.teamA.isSpielgemeinschaft) { + document.getElementById("teamA").innerHTML = values.teamA.name + '
' + values.teamA.name2; + } else { + document.getElementById("teamA").innerHTML = values.teamA.name + } + + if(values.teamB.isSpielgemeinschaft) { + document.getElementById("teamB").innerHTML = values.teamB.name + '
' + values.teamB.name2; + } else { + document.getElementById("teamB").innerHTML = values.teamB.name + } + } else { + if(values.teamA.isSpielgemeinschaft) { + document.getElementById("teamB").innerHTML = values.teamA.name + '
' + values.teamA.name2; + } else { + document.getElementById("teamB").innerHTML = values.teamA.name + } + + if(values.teamB.isSpielgemeinschaft) { + document.getElementById("teamA").innerHTML = values.teamB.name + '
' + values.teamB.name2; + } else { + document.getElementById("teamA").innerHTML = values.teamB.name + } + } + } async function initialUpdate() { diff --git a/scoreboard/routes/admin.js b/scoreboard/routes/admin.js index 215ae1e..c76bbeb 100644 --- a/scoreboard/routes/admin.js +++ b/scoreboard/routes/admin.js @@ -107,6 +107,13 @@ router.get('/scoreClearScore', function(req, res, next) { res.json(score.getValues()); // Respond with important values for frontend }); +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); + console.log(score.getValues()); + res.json(score.getValues()); +}); + /* GET home page. */ router.get('/', function(req, res, next) { res.render('admin'); diff --git a/scoreboard/views/admin.hbs b/scoreboard/views/admin.hbs index cab6682..784eb0a 100644 --- a/scoreboard/views/admin.hbs +++ b/scoreboard/views/admin.hbs @@ -95,7 +95,7 @@
- +
@@ -189,20 +189,50 @@ -