mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
* update column.vue, getters/task.js, getters/user.js and add unittests and helpers * add vue-test-utils pkg + unit test for column.vue * add unit test column.vue * update unit tests * fix linting errors
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),
|
|
};
|
|
} |