fix: Correct checklist on client

Closes #7207
This commit is contained in:
Blade Barringer
2016-05-13 22:05:00 -05:00
parent 1fd7df7521
commit 0a8b8236c1
2 changed files with 18 additions and 16 deletions

View File

@@ -2,25 +2,24 @@ import _ from 'lodash';
// From server pass task.toObject() not the task document directly
module.exports = function updateTask (task, req = {}) {
let body = req.body || {};
// If reminders are updated -> replace the original ones
if (req.body.reminders) {
task.reminders = req.body.reminders;
delete req.body.reminders;
if (body.reminders) {
task.reminders = body.reminders;
}
// If checklist is updated -> replace the original one
if (req.body.checklist) {
task.checklist = req.body.checklist;
delete req.body.checklist;
if (body.checklist) {
task.checklist = body.checklist;
}
// If tags are updated -> replace the original ones
if (req.body.tags) {
task.tags = req.body.tags;
delete req.body.tags;
if (body.tags) {
task.tags = body.tags;
}
_.merge(task, _.omit(req.body, ['_id', 'id', 'type']));
_.merge(task, _.omit(body, ['_id', 'id', 'type', 'reminders', 'checklist', 'tags']));
return [task];
};

View File

@@ -100,8 +100,11 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N
};
$scope.saveTask = function(task, stayOpen, isSaveAndClose) {
if (task.checklist)
task.checklist = _.filter(task.checklist,function(i){return !!i.text});
if (task.checklist) {
task.checklist = _.filter(task.checklist, function (i) {
return !!i.text
});
}
User.updateTask(task, {body: task});
if (!stayOpen) task._editing = false;
@@ -173,7 +176,7 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N
// Don't allow creation of an empty checklist item
// TODO Provide UI feedback that this item is still blank
} else if ($index == task.checklist.length - 1) {
User.updateTask({params:{id:task._id},body:task}); // don't preen the new empty item
Tasks.addChecklistItem(task._id, task.checklist[$index]);
task.checklist.push({completed:false,text:''});
focusChecklist(task,task.checklist.length-1);
} else {
@@ -185,12 +188,12 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User','N
$scope.removeChecklistItem = function(task, $event, $index, force){
// Remove item if clicked on trash icon
if (force) {
Tasks.removeChecklistItem(task._id, task.checklist[$index]._id);
Tasks.removeChecklistItem(task._id, task.checklist[$index].id);
task.checklist.splice($index, 1);
} else if (!task.checklist[$index].text) {
// User deleted all the text and is now wishing to delete the item
// saveTask will prune the empty item
Tasks.removeChecklistItem(task._id, task.checklist[$index]._id);
Tasks.removeChecklistItem(task._id, task.checklist[$index].id);
// Move focus if the list is still non-empty
if ($index > 0)
focusChecklist(task, $index-1);