habitica-self-host/website/public/js/services/taskServices.js

51 lines
1.2 KiB
JavaScript
Raw Normal View History

2015-06-17 04:11:04 +00:00
'use strict';
angular
.module('habitrpg')
.factory('Tasks', tasksFactory);
tasksFactory.$inject = [
'$rootScope',
2015-06-20 01:49:24 +00:00
'Shared',
'User'
2015-06-17 04:11:04 +00:00
];
2015-06-20 01:49:24 +00:00
function tasksFactory($rootScope, Shared, User) {
2015-06-17 04:11:04 +00:00
function editTask(task) {
task._editing = !task._editing;
task._tags = !User.user.preferences.tagsCollapsed;
task._advanced = !User.user.preferences.advancedCollapsed;
if($rootScope.charts[task.id]) $rootScope.charts[task.id] = false;
}
2015-06-20 01:49:24 +00:00
function cloneTask(task) {
var clonedTask = _.cloneDeep(task);
clonedTask = _cleanUpTask(clonedTask);
return Shared.taskDefaults(clonedTask);
}
function _cleanUpTask(task) {
var keysToRemove = ['_id', 'completed', 'date', 'dateCompleted', 'dateCreated', 'history', 'id', 'streak'];
var cleansedTask = _.omit(task, keysToRemove);
// Copy checklists but reset to uncomplete and assign new id
_(cleansedTask.checklist).forEach(function(item) {
item.completed = false;
item.id = Shared.uuid();
});
if (cleansedTask.type !== 'reward') {
delete cleansedTask.value;
}
2015-06-20 01:49:24 +00:00
return cleansedTask;
}
2015-06-17 04:11:04 +00:00
return {
editTask: editTask,
2015-06-20 01:49:24 +00:00
cloneTask: cloneTask
2015-06-17 04:11:04 +00:00
};
}