r1259 - in wit: . js js/components js/services
Author: jruchaud Date: 2015-04-27 12:55:55 +0000 (Mon, 27 Apr 2015) New Revision: 1259 Url: http://forge.nuiton.org/projects/sandbox/repository/revisions/1259 Log: Manage idle time Added: wit/idle.html Modified: wit/index.html wit/js/components/ActionsBar.js wit/js/components/Time.js wit/js/main.js wit/js/services/TimerService.js wit/package.json Copied: wit/idle.html (from rev 1256, wit/index.html) =================================================================== --- wit/idle.html (rev 0) +++ wit/idle.html 2015-04-27 12:55:55 UTC (rev 1259) @@ -0,0 +1,46 @@ +<html> + <head> + <title>WIT idle</title> + <link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.min.css"> + + <script> + var gui = require('nw.gui'); + var window = gui.Window.get(); + var timer = global.timer; + + var keepIdle = function() { + timer.keepIdle(); + window.close(); + }; + var removeIdle = function() { + timer.removeIdle(); + window.close(); + }; + var reassignIdle = function() { + timer.reassignIdle(); + window.close(); + }; + </script> + </head> + + <body> + <div class="container-fluid"> + <h1>Idle detected</h1> + <div class="alert alert-danger" role="alert">Idle detcted, please select your option:</div> + + <button type="button" class="btn btn-primary btn-lg btn-block" onclick="keepIdle()"> + <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> + Keep idle for current time + </button> + <button type="button" class="btn btn-primary btn-lg btn-block" onclick="removeIdle()"> + <span class="glyphicon glyphicon-minus" aria-hidden="true"></span> + Remove idle for current time + </button> + <button type="button" class="btn btn-primary btn-lg btn-block" onclick="reassignIdle()"> + <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> + Reassign idle time + </button> + </div> + </body> + +</html> Modified: wit/index.html =================================================================== --- wit/index.html 2015-04-27 11:48:09 UTC (rev 1258) +++ wit/index.html 2015-04-27 12:55:55 UTC (rev 1259) @@ -1,8 +1,6 @@ <html> <head> <title>WIT</title> - - <script type="application/javascript" src="js/gui.js"></script> <!-- For React --> <script type="text/javascript" src="node_modules/react/dist/react-with-addons.js"></script> @@ -18,9 +16,12 @@ <script type="text/jsx" src="js/pages/Rapport.js"></script> <script type="text/jsx" src="js/pages/UserActivity.js"></script> <script type="text/jsx" src="js/main.js"></script> + <script type="application/javascript" src="js/gui.js"></script> + <!-- For Bootstrap --> + <link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.min.css"> + <!-- For Less --> - <link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.min.css"> <link rel="stylesheet/less" type="text/css" href="css/style.less" /> <link rel="stylesheet/less" type="text/css" href="css/timeline.less" /> <link rel="stylesheet/less" type="text/css" href="css/userActivity.less" /> Modified: wit/js/components/ActionsBar.js =================================================================== --- wit/js/components/ActionsBar.js 2015-04-27 11:48:09 UTC (rev 1258) +++ wit/js/components/ActionsBar.js 2015-04-27 12:55:55 UTC (rev 1259) @@ -7,7 +7,7 @@ }, onStop: function() { - timer.stop(); + timer.stop(true); }, render: function() { Modified: wit/js/components/Time.js =================================================================== --- wit/js/components/Time.js 2015-04-27 11:48:09 UTC (rev 1258) +++ wit/js/components/Time.js 2015-04-27 12:55:55 UTC (rev 1259) @@ -8,7 +8,6 @@ componentDidMount: function() { timer.subscribeTimeChanged(this.forceUpdate.bind(this)); - timer.subscribeIdle(this.forceUpdate.bind(this)); }, render: function() { Modified: wit/js/main.js =================================================================== --- wit/js/main.js 2015-04-27 11:48:09 UTC (rev 1258) +++ wit/js/main.js 2015-04-27 12:55:55 UTC (rev 1259) @@ -8,11 +8,14 @@ global.document = window.document; global.navigator = window.navigator; -var React = require('react'); var timer = require('./js/services/TimerService.js'); -var Router = require('react-router'); +global.timer = timer; + var user = require('./js/services/UserActivityService.js'); +var React = require('react'); +var Router = require('react-router'); + var DefaultRoute = Router.DefaultRoute; var Link = Router.Link; var Route = Router.Route; @@ -63,3 +66,26 @@ Router.run(routes, function (Handler) { React.render(<Handler/>, document.body); }); + +timer.subscribeIdle(function() { + var gui = global.window.nwDispatcher.requireNwGui(); + + var current = gui.Window.get(); + current.hide(); + + var window = gui.Window.open('idle.html',{ + "position": "center", + "focus": true, + "toolbar": false, + "frame": true, + "width": 480, + "height": 300, + }); + + window.on('close', function() { + this.hide(); // Pretend to be closed already + this.close(true); + + current.show(); + }); +}); Modified: wit/js/services/TimerService.js =================================================================== --- wit/js/services/TimerService.js 2015-04-27 11:48:09 UTC (rev 1258) +++ wit/js/services/TimerService.js 2015-04-27 12:55:55 UTC (rev 1259) @@ -10,17 +10,16 @@ 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"); + console.log('Idle time ' + info.idle + "ms", info.idle >= TIME_IDLE); - if (info.idle >= TIME_IDLE) { - idleTime = idleTime || new Date(); + if (info.idle >= TIME_IDLE && !idleTime) { + idleTime = new Date(); eventEmitter.emit('onIdle'); } }); @@ -30,35 +29,34 @@ }; exports.start = function() { - time = new Date(); + time = idleTime || new Date(); + idleTime = null; timeChange(); }; -exports.stop = function() { - if (time) { - db.insertLog(tags, time, idleTime || new Date()); +exports.stop = function(force) { + + if (idleTime && force) { time = null; idleTime = null; - deltaIdle = 0; timeChange(); } + + if (time && !idleTime) { + db.insertLog(tags, time, new Date()); + time = null; + timeChange(); + } }; exports.getTime = function() { if (time) { - var start = idleTime ? moment(idleTime) : moment(); - var diff = moment(start.diff(time) + deltaIdle).utcOffset(0); + var start = moment(); + var diff = moment(start.diff(time)).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; }; @@ -80,7 +78,7 @@ if (time) { timeChangeTimer = setTimeout(timeChange.bind(), 1000); - //updateUserIdleTime(); + updateUserIdleTime(); } }; @@ -92,15 +90,23 @@ eventEmitter.on('onIdle', callback); }; -exports.keepTime = function() { - var old = deltaIdle + moment(idleTime).diff(time); +exports.keepIdle = function() { + idleTime = null; +}; + +exports.removeIdle = function() { + db.insertLog(tags, time, idleTime); + time = null; + idleTime = null; - exports.stop(); - exports.start(); - - deltaIdle = old; + clearTimeout(timeChangeTimer); + eventEmitter.emit('onTimeChanged'); }; + +exports.reassignIdle = function() { + db.insertLog(tags, time, idleTime); + time = idleTime; -exports.keepIdle = function() { - idleTime = null; + clearTimeout(timeChangeTimer); + eventEmitter.emit('onTimeChanged'); }; Modified: wit/package.json =================================================================== --- wit/package.json 2015-04-27 11:48:09 UTC (rev 1258) +++ wit/package.json 2015-04-27 12:55:55 UTC (rev 1259) @@ -4,7 +4,7 @@ "version": "1.0.0", "window": { "width": 480, - "height": 450, + "height": 490, "toolbar": true, "frame": true, "transparent": false
participants (1)
-
jruchaud@users.nuiton.org