From fbc61678e464d8550596400a719a77606bfa6cd1 Mon Sep 17 00:00:00 2001 From: Johannes Millan Date: Sat, 28 Oct 2017 15:57:01 +0200 Subject: [PATCH] feat: always feature current task after starting it --- app-src/scripts/task-list/task-list-d.js | 64 +++++++++++++++--------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/app-src/scripts/task-list/task-list-d.js b/app-src/scripts/task-list/task-list-d.js index 3ae8ee1b06..a23a86cb79 100644 --- a/app-src/scripts/task-list/task-list-d.js +++ b/app-src/scripts/task-list/task-list-d.js @@ -30,6 +30,7 @@ this.lastFocusedTaskEl = undefined; this.checkKeyCombo = CheckShortcutKeyCombo; this.Util = Util; + // this.selectCurrentTaskTimeout; this.boundHandleKeyPress = this.handleKeyPress.bind(this); this.boundFocusLastTaskEl = this.focusLastFocusedTaskEl.bind(this); @@ -37,6 +38,7 @@ $onDestroy() { this.$timeout.cancel(this.animationReadyTimeout); + this.$timeout.cancel(this.selectCurrentTaskTimeout); } $onInit() { @@ -119,6 +121,16 @@ } } + focusCurrentTask() { + if (this.selectCurrentTaskTimeout) { + this.$timeout.cancel(this.selectCurrentTaskTimeout); + } + + this.selectCurrentTaskTimeout = this.$timeout(() => { + document.querySelectorAll('.task.is-current')[0].focus(); + }); + } + estimateTime(task) { this.Dialogs('TIME_ESTIMATE', { task }) .then(this.boundFocusLastTaskEl, this.boundFocusLastTaskEl); @@ -216,74 +228,74 @@ taskEl.off('keydown', this.boundHandleKeyPress); } - handleKeyPress($event) { - let taskEl = $event.currentTarget || $event.srcElement || $event.originalTarget; + handleKeyPress($ev) { + let taskEl = $ev.currentTarget || $ev.srcElement || $ev.originalTarget; taskEl = angular.element(taskEl); const task = this.lastFocusedTaskEl.scope().modelValue; const lsKeys = this.$localStorage.keys; - const isShiftOrCtrlPressed = ($event.shiftKey === false && $event.ctrlKey === false); + const isShiftOrCtrlPressed = ($ev.shiftKey === false && $ev.ctrlKey === false); const taskIndex = _.findIndex(this.tasks, (cTask) => { return cTask.id === task.id; }); // stop propagation to prevent from occurring twice - $event.preventDefault(); - $event.stopPropagation(); + $ev.preventDefault(); + $ev.stopPropagation(); - if (this.checkKeyCombo($event, lsKeys.taskEditTitle) || $event.key === 'Enter') { + if (this.checkKeyCombo($ev, lsKeys.taskEditTitle) || $ev.key === 'Enter') { this.$scope.$broadcast(this.EDIT_ON_CLICK_TOGGLE_EV, task.id); } - if (this.checkKeyCombo($event, lsKeys.taskToggleNotes)) { + if (this.checkKeyCombo($ev, lsKeys.taskToggleNotes)) { task.showNotes = !task.showNotes; } - if (this.checkKeyCombo($event, lsKeys.taskOpenEstimationDialog)) { + if (this.checkKeyCombo($ev, lsKeys.taskOpenEstimationDialog)) { this.estimateTime(task); } - if (this.checkKeyCombo($event, lsKeys.taskToggleDone)) { + if (this.checkKeyCombo($ev, lsKeys.taskToggleDone)) { task.isDone = !task.isDone; this.onTaskDoneChanged(task); } - if (this.checkKeyCombo($event, lsKeys.taskAddSubTask)) { + if (this.checkKeyCombo($ev, lsKeys.taskAddSubTask)) { this.addSubTask(task); } - if (this.checkKeyCombo($event, lsKeys.moveToBacklog)) { + if (this.checkKeyCombo($ev, lsKeys.moveToBacklog)) { this.Tasks.moveTaskFromTodayToBackLog(task); } - if (this.checkKeyCombo($event, lsKeys.taskOpenOriginalLink)) { + if (this.checkKeyCombo($ev, lsKeys.taskOpenOriginalLink)) { this.Util.openExternalUrl(task.originalLink); } - if (this.checkKeyCombo($event, lsKeys.togglePlay)) { - this.togglePlay(task); + if (this.checkKeyCombo($ev, lsKeys.togglePlay)) { this.expandSubTasks(task); + this.togglePlay(task); } - if (this.checkKeyCombo($event, lsKeys.taskDelete)) { + if (this.checkKeyCombo($ev, lsKeys.taskDelete)) { this.deleteTask(task); // don't propagate to next focused element - $event.preventDefault(); - $event.stopPropagation(); + $ev.preventDefault(); + $ev.stopPropagation(); } - if (this.checkKeyCombo($event, lsKeys.moveToTodaysTasks)) { + if (this.checkKeyCombo($ev, lsKeys.moveToTodaysTasks)) { this.Tasks.moveTaskFromBackLogToToday(task); } // move focus up - if ((isShiftOrCtrlPressed && $event.keyCode === KEY_UP) || this.checkKeyCombo($event, lsKeys.selectPreviousTask)) { + if ((isShiftOrCtrlPressed && $ev.keyCode === KEY_UP) || this.checkKeyCombo($ev, lsKeys.selectPreviousTask)) { this.focusPrevTask(taskEl); } // move focus down - if ((isShiftOrCtrlPressed && $event.keyCode === KEY_DOWN) || this.checkKeyCombo($event, lsKeys.selectNextTask)) { + if ((isShiftOrCtrlPressed && $ev.keyCode === KEY_DOWN) || this.checkKeyCombo($ev, lsKeys.selectNextTask)) { this.focusNextTask(taskEl); } // expand sub tasks - if (($event.keyCode === KEY_RIGHT) || this.checkKeyCombo($event, lsKeys.expandSubTasks)) { + if (($ev.keyCode === KEY_RIGHT) || this.checkKeyCombo($ev, lsKeys.expandSubTasks)) { this.expandSubTasks(task); } // collapse sub tasks - if (($event.keyCode === KEY_LEFT) || this.checkKeyCombo($event, lsKeys.collapseSubTasks)) { + if (($ev.keyCode === KEY_LEFT) || this.checkKeyCombo($ev, lsKeys.collapseSubTasks)) { if (task.subTasks) { this.collapseSubTasks(task); } @@ -294,7 +306,7 @@ // moving items // move task up - if (this.checkKeyCombo($event, lsKeys.moveTaskUp)) { + if (this.checkKeyCombo($ev, lsKeys.moveTaskUp)) { if (taskIndex > 0) { TaskListCtrl.moveItem(this.tasks, taskIndex, taskIndex - 1); @@ -305,7 +317,7 @@ } } // move task down - if (this.checkKeyCombo($event, lsKeys.moveTaskDown)) { + if (this.checkKeyCombo($ev, lsKeys.moveTaskDown)) { if (taskIndex < this.tasks.length - 1) { TaskListCtrl.moveItem(this.tasks, taskIndex, taskIndex + 1); } @@ -379,6 +391,10 @@ this.Tasks.updateCurrent(task); } } + + if (this.currentTaskId) { + this.focusCurrentTask(); + } } static moveItem(array, oldIndex, newIndex) {