diff --git a/public/js/controllers/tasksCtrl.js b/public/js/controllers/tasksCtrl.js index 0ed412fa7d..c373a6e53f 100644 --- a/public/js/controllers/tasksCtrl.js +++ b/public/js/controllers/tasksCtrl.js @@ -42,9 +42,11 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N User.user.ops.deleteTask({params:{id:list[$index].id}}) }; - $scope.saveTask = function(task) { + $scope.saveTask = function(task, stayOpen) { + if (task.checklist && task.checklist[0]) + task.checklist = _.filter(task.checklist,function(i){return !!i.text}); User.user.ops.updateTask({params:{id:task.id},body:task}); - task._editing = false; + if (!stayOpen) task._editing = false; }; /** @@ -87,24 +89,22 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N $('#task-'+task.id+' .checklist-form .inline-edit')[0].focus(); }); } - $scope.checkChecklistItem = function(task){ - User.user.ops.updateTask({params:{id:task.id},body:task}); - } - $scope.saveChecklist = function(task,$event,$index) { - User.user.ops.updateTask({params:{id:task.id},body:task}); - task.checklist = _.filter(task.checklist,function(i){return !!i.text}); - $event.target.blur(); + $scope.addChecklistItem = function(task,$event,$index) { if ($index == task.checklist.length-1){ + User.user.ops.updateTask({params:{id:task.id},body:task}); // don't preen the new empty item task.checklist.push({completed:false,text:''}); ws(function(){ var list = $('#task-'+task.id+' .checklist-form .inline-edit'); list[list.length-1].focus(); - },100); + },0); + } else { + $scope.saveTask(task,true); + $('#task-'+task.id+' .checklist-form .inline-edit')[$index+1].focus(); } } $scope.removeChecklistItem = function(task,$index){ task.checklist.splice($index,1); - User.user.ops.updateTask({params:{id:task.id},body:task}); + $scope.saveTask(task,true); } $scope.checklistCompletion = function(checklist){ return _.reduce(checklist,function(m,i){return m+(i.completed ? 1 : 0);},0) diff --git a/views/shared/tasks/task.jade b/views/shared/tasks/task.jade index c631f950b7..5fd62896c8 100644 --- a/views/shared/tasks/task.jade +++ b/views/shared/tasks/task.jade @@ -70,7 +70,7 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s div(ng-if='task.checklist && !$state.includes("options.social.challenges") && user.preferences.inlineChecklists && !task._editing') fieldset.option-group label.checkbox(ng-repeat='item in task.checklist') - input(type='checkbox',ng-model='item.completed',ng-change='checkChecklistItem(task)') + input(type='checkbox',ng-model='item.completed',ng-change='saveTask(task,true)') | {{item.text}} // edit/options dialog @@ -116,8 +116,8 @@ li(bindonce='list', bo-id='"task-"+task.id', ng-repeat='task in obj[list.type+"s li(ng-repeat='item in task.checklist') a.pull-right.checklist-icons(ng-click='removeChecklistItem(task,$index)') i.icon-trash(tooltip='Delete') - input(type='checkbox',ng-model='item.completed',ng-change='checkChecklistItem(task)') - input.inline-edit(type='text',ng-model='item.text',ui-keypress="{13:'saveChecklist(task,$event,$index)'}",ng-blur='saveChecklist(task,$event,$index)') + input(type='checkbox',ng-model='item.completed',ng-change='saveTask(task,true)') + input.inline-edit(type='text',ng-model='item.text',ui-keypress="{'13':'addChecklistItem(task,$event,$index)'}")//-,ng-blur='saveTask(task,true)') form(ng-submit='saveTask(task)')