mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 15:17:25 +01:00
Task page : task filters (#9898)
* 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
This commit is contained in:
committed by
Matteo Pagliazzi
parent
f592103754
commit
9919faeed8
31
website/client/libs/store/helpers/orderTasks.js
Normal file
31
website/client/libs/store/helpers/orderTasks.js
Normal file
@@ -0,0 +1,31 @@
|
||||
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),
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user