var express = require('express'); var router = express.Router(); const io = require('../controllers/socketio'); const timer = require('../controllers/timer'); const score = require('../controllers/score'); // ###################################################################################################################################################### // General endpoints // ###################################################################################################################################################### // Express router endpoint to trigger a frontend refresh on all connected sockets router.get('/refreshMonitor', function(req, res, next) { console.log("Monitor neu geladen"); io.sockets.emit('refresh', ""); // Emit refresh to all connected sockets over websockets res.status(200); // Set http status code to 200 (success) res.send(); // send empty response }); // ###################################################################################################################################################### // Timerendpoints // ###################################################################################################################################################### // Express router entpoint to start the timer router.get('/timerStart', function(req, res, next) { if(timer.start()) { // If successfully started the timer res.status(200); // Set http status code to 200 (success) res.json(timer.getValues()); // Respond with all important values to update the frontend } else { // If not successfull, for example because timer is already running or not time is left res.status(406); // Set http status code to 406 (not acceptable) res.send(); // Respond with empty payload } }); // Express router endpoint to pause the timer router.get('/timerPause', function(req, res, next) { if(timer.pause()) { // If successfully paused the timer res.status(200); // Set http status code to 200 (success) res.json(timer.getValues()); // Respond with all important values to update the frontend } else { // If not successfull, for example if timer already is paused res.status(406); // Set http status code to 406 (not acceptable) res.send(); // Respond with empty payload } }); // Express router endpoint to reset the timer router.post('/timerReset', function(req, res, next) { timer.reset(req.body.duration); // Reset the timer with the duration in seconds received from the request res.json(timer.getValues()); // Respond with all important values to update the frontend }); router.post('/timerIncDec', function(req, res, next) { timer.incDec(req.body.value); res.json(timer.getValues()); }); // Express router endpoint to get important timer values router.get('/timerGetValues', function(req, res, next) { res.json(timer.getValues()); // Respond with important values for frontend }); // ###################################################################################################################################################### // Scoreboard endpoints // ###################################################################################################################################################### // Express router endpoint to toggle the scoreboard router.get('/scoreToggle', function(req, res, next) { if(score.getEnabled()) { // If scoreboard enabled console.log("Scoreboard disabled"); score.setEnabled(false) // Disable the scoreboard res.status(200); // Set http status code to 200 (success) res.json(score.getValues()) // Respond with all important values to update the frontend } else { console.log("Scoreboard enabled"); score.setEnabled(true) // Enable the scoreboard res.status(200); // Set http status code to 200 (success) res.json(score.getValues()); // Respond with all important values to update the frontend } }); // Express router endpoint to set score of a team router.post('/scoreSetScore', function(req, res, next) { score.setScore(req.body.team, req.body.score); res.status(200); res.json(score.getValues()); }); // Express router endpoint to alter passed teams score by one in the passed direction router.post('/scoreAlterScore', function(req, res, next) { score.alterScore(req.body.team, req.body.dir); res.status(200); res.json(score.getValues()); }); // Express router endpoint to switch the score after halftime router.post('/scoreSwitch', function(req, res, next) { }); // Express router endpoint to get important score values router.get('/scoreGetValues', function(req, res, next) { res.json(score.getValues()); // Respond with important values for frontend }); // Express router endpoint to clear score router.get('/scoreClearScore', function(req, res, next) { score.clearScore(); // Clear score res.json(score.getValues()); // Respond with important values for frontend }); /* GET home page. */ router.get('/', function(req, res, next) { res.render('admin'); }); module.exports = router;