mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 15:17:25 +01:00
54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
(function(){
|
|
var TASK_KEYS_TO_REMOVE = ['_id', 'completed', 'date', 'dateCompleted', 'dateCreated', 'history', 'id', 'streak'];
|
|
|
|
angular
|
|
.module('habitrpg')
|
|
.factory('Tasks', tasksFactory);
|
|
|
|
tasksFactory.$inject = [
|
|
'$rootScope',
|
|
'Shared',
|
|
'User'
|
|
];
|
|
|
|
function tasksFactory($rootScope, Shared, User) {
|
|
|
|
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;
|
|
}
|
|
|
|
function cloneTask(task) {
|
|
var clonedTask = _.cloneDeep(task);
|
|
clonedTask = _cleanUpTask(clonedTask);
|
|
|
|
return Shared.taskDefaults(clonedTask);
|
|
}
|
|
|
|
function _cleanUpTask(task) {
|
|
var cleansedTask = _.omit(task, TASK_KEYS_TO_REMOVE);
|
|
|
|
// Copy checklists but reset to uncomplete and assign new id
|
|
_(cleansedTask.checklist).forEach(function(item) {
|
|
item.completed = false;
|
|
item.id = Shared.uuid();
|
|
}).value();
|
|
|
|
if (cleansedTask.type !== 'reward') {
|
|
delete cleansedTask.value;
|
|
}
|
|
|
|
return cleansedTask;
|
|
}
|
|
|
|
return {
|
|
editTask: editTask,
|
|
cloneTask: cloneTask
|
|
};
|
|
}
|
|
})();
|