Author: jruchaud Date: 2015-04-17 16:15:31 +0000 (Fri, 17 Apr 2015) New Revision: 1225 Url: http://forge.nuiton.org/projects/sandbox/repository/revisions/1225 Log: First try to manage idle Modified: wit/js/TimerService.js wit/js/components/Time.js wit/js/gui.js Modified: wit/js/TimerService.js =================================================================== --- wit/js/TimerService.js 2015-04-17 15:24:59 UTC (rev 1224) +++ wit/js/TimerService.js 2015-04-17 16:15:31 UTC (rev 1225) @@ -1,12 +1,34 @@ var moment = require('moment'); var db = require("./database.js"); +var x11 = require('x11'); var events = require('events'); var eventEmitter = new events.EventEmitter(); +var TIME_IDLE = 4 * 1000; + var tags = ["wit", "js", "dev"]; var time = null; +var idleTime = null; +var deltaIdle = 0; +var updateUserIdleTime = function() { + x11.createClient(function(err, display) { + var X = display.client; + X.require('screen-saver', function(err, SS) { + SS.QueryInfo(display.screen[0].root, function(err, info) { + console.log('Idle time ' + info.idle + "ms"); + + if (info.idle >= TIME_IDLE) { + idleTime = idleTime || new Date(); + eventEmitter.emit('onIdle'); + } + }); + }); + X.on('error', console.error); + }); +}; + exports.start = function() { time = new Date(); timeChange(); @@ -14,19 +36,29 @@ exports.stop = function() { if (time) { - db.insertLog(tags, time, new Date()); + db.insertLog(tags, time, idleTime || new Date()); time = null; + idleTime = null; + deltaIdle = 0; timeChange(); } }; exports.getTime = function() { if (time) { - var diff = moment(moment().diff(time)).utcOffset(0); + var start = idleTime ? moment(idleTime) : moment(); + var diff = moment(start.diff(time) + deltaIdle).utcOffset(0); return diff.format("HH:mm:ss"); } }; +exports.getIdle = function() { + if (idleTime) { + var diff = moment(moment().diff(time) + deltaIdle).utcOffset(0); + return diff.format("HH:mm:ss"); + } +}; + exports.getTags = function() { return tags; }; @@ -47,9 +79,28 @@ eventEmitter.emit('onTimeChanged'); if (time) { timeChangeTimer = setTimeout(timeChange.bind(), 1000); + + updateUserIdleTime(); } }; exports.subscribeTimeChanged = function(callback) { eventEmitter.on('onTimeChanged', callback); }; + +exports.subscribeIdle = function(callback) { + eventEmitter.on('onIdle', callback); +}; + +exports.keepTime = function() { + var old = deltaIdle + moment(idleTime).diff(time); + + exports.stop(); + exports.start(); + + deltaIdle = old; +}; + +exports.keepIdle = function() { + idleTime = null; +}; Modified: wit/js/components/Time.js =================================================================== --- wit/js/components/Time.js 2015-04-17 15:24:59 UTC (rev 1224) +++ wit/js/components/Time.js 2015-04-17 16:15:31 UTC (rev 1225) @@ -8,11 +8,26 @@ componentDidMount: function() { timer.subscribeTimeChanged(this.forceUpdate.bind(this)); + timer.subscribeIdle(this.forceUpdate.bind(this)); }, + keepTime: function() { + timer.keepTime(); + this.forceUpdate(); + }, + + keepIdle: function() { + timer.keepIdle(); + this.forceUpdate(); + }, + render: function() { return ( - <div id="time">{this.state.getTime() || "Not started"}</div> + <div id="time"> + <span onClick={this.keepTime}>{this.state.getTime() || "Not started"}</span> + + <span onClick={this.keepIdle}>{this.state.getIdle() || ""}</span> + </div> ); } }); Modified: wit/js/gui.js =================================================================== --- wit/js/gui.js 2015-04-17 15:24:59 UTC (rev 1224) +++ wit/js/gui.js 2015-04-17 16:15:31 UTC (rev 1225) @@ -27,17 +27,3 @@ tray = null; }); }); - -var x11 = require('x11'); - -var getUserIdleTime = function() { - x11.createClient(function(err, display) { - var X = display.client; - X.require('screen-saver', function(err, SS) { - SS.QueryInfo(display.screen[0].root, function(err, info) { - console.log('Idle time ' + info.idle + "ms"); - }); - }); - X.on('error', console.error); - }); -};
participants (1)
-
jruchaud@users.nuiton.org