moving filter function within a dedicated file

This commit is contained in:
2025-12-07 15:49:03 +01:00
parent 22921f3da1
commit a3c62b6933
2 changed files with 45 additions and 38 deletions
+3 -38
View File
@@ -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 (
<div className={styles.eventsContainer}>
<ToolBar setFilters={setFilters} filters={filters}/>
<div className={styles.eventsList}>
{sortedEvents.map((event, index) => (
{filter(events, filters).map((event, index) => (
<Event key={index} event={event} />
))}
</div>
+42
View File
@@ -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;