From 36dbee017d7b7e76e5259c75ee571d2c918d70fc Mon Sep 17 00:00:00 2001 From: Johannes Millan Date: Thu, 19 Jan 2017 11:50:28 +0100 Subject: [PATCH] make idle tracking (when there is no current task) and task selection work with sub tasks --- .../task-selection/task-selection-c.js | 2 +- app/scripts/dialogs/was-idle/was-idle-c.js | 2 +- app/scripts/main/global-services/tasks-s.js | 49 +++++++++++++++---- 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/app/scripts/dialogs/task-selection/task-selection-c.js b/app/scripts/dialogs/task-selection/task-selection-c.js index d3a7b1ece2..e9e692625e 100644 --- a/app/scripts/dialogs/task-selection/task-selection-c.js +++ b/app/scripts/dialogs/task-selection/task-selection-c.js @@ -17,7 +17,7 @@ function TaskSelectionCtrl($mdDialog, Tasks) { let vm = this; - vm.undoneTasks = Tasks.getUndoneToday(); + vm.undoneTasks = Tasks.getUndoneToday(true); vm.submit = () => { if (!vm.selectedTask) { diff --git a/app/scripts/dialogs/was-idle/was-idle-c.js b/app/scripts/dialogs/was-idle/was-idle-c.js index 46a56af3ba..a393db278c 100644 --- a/app/scripts/dialogs/was-idle/was-idle-c.js +++ b/app/scripts/dialogs/was-idle/was-idle-c.js @@ -19,7 +19,7 @@ vm.idleTime = $window.moment.duration(idleTime, 'milliseconds'); - vm.undoneTasks = Tasks.getUndoneToday(); + vm.undoneTasks = Tasks.getUndoneToday(true); vm.selectedTask = $rootScope.r.currentTask; vm.trackIdleToTask = () => { diff --git a/app/scripts/main/global-services/tasks-s.js b/app/scripts/main/global-services/tasks-s.js index 6295b7eb0a..25fe86bd6f 100644 --- a/app/scripts/main/global-services/tasks-s.js +++ b/app/scripts/main/global-services/tasks-s.js @@ -19,6 +19,7 @@ const IPC_EVENT_UPDATE_TIME_SPEND_FOR_CURRENT = 'UPDATE_TIME_SPEND'; const IPC_EVENT_CURRENT_TASK_UPDATED = 'CHANGED_CURRENT_TASK'; const moment = $window.moment; + const _ = $window._; let isShowTakeBreakNotification = true; @@ -29,7 +30,7 @@ // handler for time spent tracking window.ipcRenderer.on(IPC_EVENT_UPDATE_TIME_SPEND_FOR_CURRENT, (ev, evData) => { let timeSpentInMs = evData.timeSpentInMs; - let idleTimeInMs = evData.idleTimeInMs + let idleTimeInMs = evData.idleTimeInMs; // only track if there is a task if ($rootScope.r.currentTask) { @@ -190,7 +191,7 @@ return valueArr.indexOf(item) !== idx; }); if (dupeIds.length) { - let firstDupe = $window._.find(tasksArray, (task) => { + let firstDupe = _.find(tasksArray, (task) => { return dupeIds.indexOf(task.id) > -1; }); console.log(firstDupe); @@ -276,9 +277,9 @@ // TODO check if this is even required if ($localStorage.currentTask) { - currentTask = $window._.find($localStorage.tasks, (task) => { + currentTask = _.find($localStorage.tasks, (task) => { if (task.subTasks) { - let subTaskMatchTmp = $window._.find(task.subTasks, { id: $localStorage.currentTask.id }); + let subTaskMatchTmp = _.find(task.subTasks, { id: $localStorage.currentTask.id }); if (subTaskMatchTmp) { subTaskMatch = subTaskMatchTmp; } @@ -292,7 +293,7 @@ }; this.getById = (taskId) => { - return $window._.find($rootScope.r.tasks, ['id', taskId]) || $window._.find($rootScope.r.backlogTasks, ['id', taskId]) || $window._.find($rootScope.r.doneBacklogTasks, ['id', taskId]); + return _.find($rootScope.r.tasks, ['id', taskId]) || _.find($rootScope.r.backlogTasks, ['id', taskId]) || _.find($rootScope.r.doneBacklogTasks, ['id', taskId]); }; this.getBacklog = () => { @@ -310,14 +311,42 @@ return $localStorage.tasks; }; - this.getUndoneToday = () => { - return $window._.filter($localStorage.tasks, (task) => { - return task && !task.isDone; - }); + this.getUndoneToday = (isSubTasksInsteadOfParent) => { + let undoneTasks; + + // get flattened result of all undone tasks including subtasks + if (isSubTasksInsteadOfParent) { + undoneTasks = []; + let allParentTasks = _.filter($localStorage.tasks, (task) => { + return task && !task.isDone; + }); + for (let i = 0; i < allParentTasks.length; i++) { + let parentTask = allParentTasks[i]; + if (parentTask.subTasks && parentTask.subTasks.length > 0) { + for (let j = 0; j < parentTask.subTasks.length; j++) { + let subTask = parentTask.subTasks[j]; + if (!subTask.isDone) { + undoneTasks.push(subTask); + } + } + } else { + undoneTasks.push(parentTask); + } + } + } + + // just get parent undone tasks + else { + undoneTasks = _.filter($localStorage.tasks, (task) => { + return task && !task.isDone; + }); + } + + return undoneTasks; }; this.getDoneToday = () => { - return $window._.filter($localStorage.tasks, (task) => { + return _.filter($localStorage.tasks, (task) => { return task && task.isDone; }); };