From a3c62b693358d1362c6f49a89dfd2b6f1cea52e1 Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Sun, 7 Dec 2025 15:49:03 +0100 Subject: [PATCH] moving filter function within a dedicated file --- src/pages/Events/EventsPage.jsx | 41 +++----------------------------- src/utils/filter.js | 42 +++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 38 deletions(-) create mode 100644 src/utils/filter.js diff --git a/src/pages/Events/EventsPage.jsx b/src/pages/Events/EventsPage.jsx index 84797be..70f2e9a 100644 --- a/src/pages/Events/EventsPage.jsx +++ b/src/pages/Events/EventsPage.jsx @@ -2,6 +2,7 @@ import {useState} from "react"; import Event from "../../components/Event/Event.jsx"; import styles from "./EventsPage.module.css"; import ToolBar from "../../components/ToolBar/ToolBar.jsx"; +import filter from "../../utils/filter.js"; function EventsPage(){ @@ -10,6 +11,7 @@ function EventsPage(){ yearOrder: "asc", }); + const [events] = useState([ { id: 1, @@ -173,49 +175,12 @@ function EventsPage(){ }, ]); - const compareDate = (dateA, dateB) => { - const dA = new Date(dateA); - const dB = new Date(dateB); - - if (filters.yearOrder === "asc") { - return dB - dA; - } else { - return dA - dB; - } - }; - - const sortedEvents = [...events].sort((a, b) => { - const sortedATasks = a.tasks.sort((taskA, taskB) => - compareDate(taskA.start, taskB.start) - ); - const sortedBTasks = b.tasks.sort((taskA, taskB) => - compareDate(taskA.start, taskB.start) - ); - - const timeComparison = compareDate( - sortedATasks[0].start, - sortedBTasks[0].start - ); - - if (timeComparison !== 0) { - return timeComparison; - } - - if (filters.alphabetical !== null) { - return filters.alphabetical === "asc" - ? a.name.localeCompare(b.name) - : b.name.localeCompare(a.name); - } - - return 0; - }); - return (
- {sortedEvents.map((event, index) => ( + {filter(events, filters).map((event, index) => ( ))}
diff --git a/src/utils/filter.js b/src/utils/filter.js new file mode 100644 index 0000000..93f126f --- /dev/null +++ b/src/utils/filter.js @@ -0,0 +1,42 @@ +function filter(elements, filters) { + const compareDate = (dateA, dateB) => { + const dA = new Date(dateA); + const dB = new Date(dateB); + + if (filters.yearOrder === "asc") { + return dB - dA; + } else { + return dA - dB; + } + }; + + + return [...elements].sort((a, b) => { + const sortedATasks = a.tasks.sort((taskA, taskB) => + compareDate(taskA.start, taskB.start) + ); + const sortedBTasks = b.tasks.sort((taskA, taskB) => + compareDate(taskA.start, taskB.start) + ); + + const timeComparison = compareDate( + sortedATasks[0].start, + sortedBTasks[0].start + ); + + if (timeComparison !== 0) { + return timeComparison; + } + + if (filters.alphabetical !== null) { + return filters.alphabetical === "asc" + ? a.name.localeCompare(b.name) + : b.name.localeCompare(a.name); + } + + return 0; + }); +} + + +export default filter; \ No newline at end of file