From ebb75b93e85416de5c760fe7ba39f14d92c9e732 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Oliva?= Date: Fri, 19 May 2023 20:52:06 -0600 Subject: Finished details on sorting. Now it sorts after events like "adding new to do" and "edit a to do." --- src/features/todo/reducer.js | 86 +++++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 32 deletions(-) (limited to 'src/features/todo/reducer.js') diff --git a/src/features/todo/reducer.js b/src/features/todo/reducer.js index bef7f03..5fafb6d 100644 --- a/src/features/todo/reducer.js +++ b/src/features/todo/reducer.js @@ -50,72 +50,94 @@ export const todo_slice = createSlice({ state.todos[selected_todo].priority = action.payload.priority; }, - sort_todo: (state, action) => { + set_sort_todo: (state, action) => { switch (action.payload.where_clicked) { case "priority": - const priority_order = { - Low: 1, - Medium: 2, - High: 3, - }; - switch (state.current_sorting) { case "priority-^": state.current_sorting = "priority-v"; - state.todos.sort( - (a, b) => - priority_order[a.priority] - - priority_order[b.priority] - ); break; case "priority-v": state.current_sorting = "created_time"; - state.todos.sort((a, b) => - a.creation_date.localeCompare(b.creation_date) - ); break; default: state.current_sorting = "priority-^"; - state.todos.sort( - (a, b) => - priority_order[b.priority] - - priority_order[a.priority] - ); break; } - break; case "due_date": switch (state.current_sorting) { case "due-date-^": state.current_sorting = "due-date-v"; - state.todos.sort((a, b) => - a.due_date.localeCompare(b.due_date) - ); break; + case "due-date-v": state.current_sorting = "created_time"; - state.todos.sort((a, b) => - a.creation_date.localeCompare(b.creation_date) - ); break; + default: state.current_sorting = "due-date-^"; - state.todos.sort((a, b) => - b.due_date.localeCompare(a.due_date) - ); break; } } }, + + sort_todo: (state) => { + const priority_order = { + Low: 1, + Medium: 2, + High: 3, + }; + switch (state.current_sorting) { + case "priority-^": + state.todos.sort( + (a, b) => + priority_order[b.priority] - + priority_order[a.priority] + ); + break; + + case "priority-v": + state.todos.sort( + (a, b) => + priority_order[a.priority] - + priority_order[b.priority] + ); + break; + + case "due-date-^": + state.todos.sort((a, b) => + b.due_date.localeCompare(a.due_date) + ); + break; + + case "due-date-v": + state.todos.sort((a, b) => + a.due_date.localeCompare(b.due_date) + ); + break; + + default: + state.todos.sort((a, b) => + a.creation_date.localeCompare(b.creation_date) + ); + break; + } + }, }, }); -export const { add_todo, change_done, remove_todo, edit_todo, sort_todo } = - todo_slice.actions; +export const { + add_todo, + change_done, + remove_todo, + edit_todo, + set_sort_todo, + sort_todo, +} = todo_slice.actions; export const select_todos = (state) => state.todo_list.todos; export const select_last_index = (state) => state.todo_list.last_id; -- cgit v1.2.3