diff options
author | Adrián Oliva <adrian.oliva@cimat.mx> | 2023-05-19 20:52:06 -0600 |
---|---|---|
committer | Adrián Oliva <adrian.oliva@cimat.mx> | 2023-05-19 20:52:06 -0600 |
commit | ebb75b93e85416de5c760fe7ba39f14d92c9e732 (patch) | |
tree | 9440f9c520354852f76f4554461f7078ae97f69e /src/features | |
parent | 0e96c6939e84ed283ba7229ee9cf8144025c5718 (diff) | |
download | ToDo-App-FE-ebb75b93e85416de5c760fe7ba39f14d92c9e732.tar.gz ToDo-App-FE-ebb75b93e85416de5c760fe7ba39f14d92c9e732.zip |
Finished details on sorting.
Now it sorts after events like "adding new to do" and "edit a to do."
Diffstat (limited to '')
-rw-r--r-- | src/features/todo/reducer.js | 86 |
1 files changed, 54 insertions, 32 deletions
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; |