checklists: better handling of saveTask, keypress:13, and remove-blur

This commit is contained in:
Tyler Renelle 2013-12-30 12:56:26 -07:00
parent 0fe2804c3c
commit ebc7cf6bcb
2 changed files with 14 additions and 14 deletions

View file

@ -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)

View file

@ -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)')