60 lines
2.3 KiB
JavaScript

const moment = require('moment');
const io = require('./socketio')
let timerInterval;
// let duration = moment.duration(7, 'minutes'); // Initial duration
// let durationLeft = moment.duration(7, 'minutes'); // durationLeft after the timer has been started
let duration = moment.duration(7, 'seconds');
let durationLeft = moment.duration(10, 'seconds');
let isPaused = true; // Status of the timer
// Function prototypes
function start() {};
function pause() {};
function reset() {};
function end() {};
function print() {};
function start() {
if(isPaused == true)
{
isPaused = false
timerInterval = setInterval(() => { // Create Intervalfunction every 1000ms
console.log(print()); // Print durationLeft
io.sockets.emit('timerDurationLeft', print()) // Emit durationLeft to all connected sockets
if(durationLeft.minutes() == 0 && durationLeft.seconds() == 0) // End timer if durationLeft == 00:00
end()
durationLeft.subtract(1, 'second'); // Subtract a second from from the timer
}, 1000);
}
}
function pause() {
isPaused = true; // Set status of the timer
clearInterval(timerInterval); // End the execution
}
function reset() {
durationLeft = duration.clone(); // Set durationLeft to the initial duration
io.sockets.emit('timerDurationLeft', print()) // Emit durationLeft to all connected sockets
}
function end() {
isPaused = true // Set status of the timer
clearInterval(timerInterval); // End the execution
io.sockets.emit('timerEnded', print()) // Emit end to all connected sockets
}
function print()
{
var minutes = (durationLeft.minutes() < 10) ? "0" + durationLeft.minutes() : durationLeft.minutes(); // Create leading zeros for numbers <10
var seconds = (durationLeft.seconds() < 10) ? "0" + durationLeft.seconds() : durationLeft.seconds(); // Create leading zeros for numbers <10
return minutes + ":" + seconds
}
module.exports = {
duration, durationLeft, isPaused, start, pause, reset, end, print
};