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:
kartik adur
2018-02-19 23:33:38 +05:30
committed by Matteo Pagliazzi
parent f592103754
commit 9919faeed8
9 changed files with 605 additions and 127 deletions

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