aboutsummaryrefslogtreecommitdiff
path: root/src/features/todo/reducer.js
diff options
context:
space:
mode:
authorAdrián Oliva <adrian.oliva@cimat.mx>2023-05-19 20:52:06 -0600
committerAdrián Oliva <adrian.oliva@cimat.mx>2023-05-19 20:52:06 -0600
commitebb75b93e85416de5c760fe7ba39f14d92c9e732 (patch)
tree9440f9c520354852f76f4554461f7078ae97f69e /src/features/todo/reducer.js
parent0e96c6939e84ed283ba7229ee9cf8144025c5718 (diff)
downloadToDo-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.js86
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;