Files
habitica/website/client/libs/store/helpers/orderTasks.js
kartik adur 9919faeed8 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
2018-02-19 19:03:38 +01:00

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),
};
}