mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
* add tasklist getter * add unit test + refactor for getters * add task order sorting + update unit tests * remove direct access to store.state.tasks * add tag and search filter back to column.vue + unit tests * add unit test for task order setting function * add task filters to helper file + modify taskColumn state access to getter * update column to get values at runtime. TODO set active filter at runtime * add TaskColumn init state + daily-due-default * add check for task type daily before set/reset dailyDueView * remove unused sortBy import in column.vue * remove unused sortBy * pr review requested updates * pr review clean up updates
31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
import compact from 'lodash/compact';
|
|
|
|
// sets task order for single task type only.
|
|
// Accepts task list and corresponding taskorder for its task type.
|
|
export function orderSingleTypeTasks (rawTasks, taskOrder) {
|
|
// if there is no predefined task order return task list as is.
|
|
if (!taskOrder) return rawTasks;
|
|
const orderedTasks = new Array(rawTasks.length);
|
|
const unorderedTasks = []; // What we want to add later
|
|
|
|
rawTasks.forEach((task, index) => {
|
|
const taskId = task._id;
|
|
const i = taskOrder[index] === taskId ? index : taskOrder.indexOf(taskId);
|
|
if (i === -1) {
|
|
unorderedTasks.push(task);
|
|
} else {
|
|
orderedTasks[i] = task;
|
|
}
|
|
});
|
|
|
|
return compact(orderedTasks).concat(unorderedTasks);
|
|
}
|
|
|
|
export function orderMultipleTypeTasks (rawTasks, tasksOrder) {
|
|
return {
|
|
habits: orderSingleTypeTasks(rawTasks.habits, tasksOrder.habits),
|
|
dailys: orderSingleTypeTasks(rawTasks.dailys, tasksOrder.dailys),
|
|
todos: orderSingleTypeTasks(rawTasks.todos, tasksOrder.todos),
|
|
rewards: orderSingleTypeTasks(rawTasks.rewards, tasksOrder.rewards),
|
|
};
|
|
} |