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;