-
Notifications
You must be signed in to change notification settings - Fork 0
/
taskStore.js
36 lines (27 loc) · 986 Bytes
/
taskStore.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
module.exports = TaskStore;
function TaskStore() {
this.tasks = {};
this._currTask = null;
this._currTaskStart = null;
}
TaskStore.prototype.startTask = function (task, time) {
// if there's a current task, end it
if (this._currTask !== null) this.endCurrTask(time);
// mark the passed task as the current task
this._currTask = task;
this._currTaskStart = time;
};
TaskStore.prototype.endCurrTask = function (time) {
if (this._currTask === null) return false;
// calculate duration from currTaskStart
var elapsedTime = time.diff(this._currTaskStart, 'minutes');
// always assume 0 <= elapsedTime < 1 day
if (elapsedTime < 0) elapsedTime += 24*60;
// add it to time for current task
if (!this.tasks[this._currTask]) this.tasks[this._currTask] = 0;
this.tasks[this._currTask] += elapsedTime;
// null out currTask and currTaskStart
this._currTask = null;
this._currTaskStart = null;
return true;
};