timers3000
Version:
Provides a graphical interface in your browser to create and manage incremental timers for your daily tasks.
96 lines (77 loc) • 3.32 kB
JavaScript
var timerscontroller = require('../app/controller/timerscontroller.js')
, groupscontroller = require('../app/controller/groupscontroller.js')
, appcontroller = require('../app/controller/appcontroller.js')
, sessionscontroller = require('../app/controller/sessionscontroller.js')
, rancol = require('rancol')
, SleepTime = require('../lib/sleeptime.js');
/**
* Setup asynchronous events to listen on with socket.io
* Events should be self-explanatory
* @param {Object} server The apps HTTP-Server
*/
module.exports = function(server){
var io = require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
socket.on('startTimer', function(id,callback){
timerscontroller.startTimer(id,callback);
});
socket.on('stopTimer', function(id,callback){
timerscontroller.stopTimer(id,callback);
});
socket.on('newTimer', function(data,callback){
timerscontroller.create(data,callback);
});
socket.on("deleteTimer", function(id,callback){
timerscontroller.delete(id,callback);
});
socket.on("renameTimer",function(id,newName,callback){
timerscontroller.renameTimer(id,newName,callback);
});
socket.on("changeGroup",function(timer,new_group,callback){
timerscontroller.changeGroup(timer,new_group,callback);
});
socket.on('newGroup', function(name,callback){
groupscontroller.create(name,callback);
});
socket.on("deleteGroup",function(id,callback){
//Delete group and all timers in it
groupscontroller.delete(id,function(){
timerscontroller.deleteByGroup(id,callback);
});
});
socket.on("changeGroupColor",function(id,callback){
color = rancol.hex();
groupscontroller.changeColor(id,color,callback);
});
socket.on("renameGroup",function(id,new_name,callback){
groupscontroller.renameGroup(id,new_name,callback);
});
socket.on("deleteSession", function(id, callback){
sessionscontroller.delete(id, function(session){
timerscontroller.addTime(session.timer, -session.time, callback);
});
});
socket.on("updateSessionTime", function(id, time, callback){
sessionscontroller.updateTime(id, time, function(session, difference){
timerscontroller.addTime(session.timer, -difference, callback);
});
});
socket.on("updateNeeded", function(callback){
appcontroller.updateNeeded(callback);
});
socket.on("changePreference", function(key, value, callback){
appcontroller.changePreference(key, value, callback);
});
});
//Set handler for system wake up: Send notification to client if there is
//an active timer in the database
var sleepTime = new SleepTime(10000,function(diff){
timerscontroller.getTimers(function(timers){
for (var i = timers.length - 1; i >= 0; i--) {
if(timers[i].active){
io.sockets.emit("sleepTime",diff);
}
};
});
});
}