41 lines
1.0 KiB
JavaScript
41 lines
1.0 KiB
JavaScript
function filter(elements, filters, type) {
|
|
const compareDate = (dateA, dateB) => {
|
|
const dA = new Date(dateA);
|
|
const dB = new Date(dateB);
|
|
|
|
if (filters.yearOrder === "asc") {
|
|
return dA - dB;
|
|
} else {
|
|
return dB - dA;
|
|
}
|
|
};
|
|
|
|
return [...elements].sort((a, b) => {
|
|
let timeComparison;
|
|
|
|
if (filters.yearOrder !== null) {
|
|
if (type === "event") {
|
|
timeComparison = compareDate(a.start, b.start);
|
|
}
|
|
|
|
else if (type === "user") {
|
|
timeComparison = compareDate(a.created_at, b.created_at);
|
|
}
|
|
|
|
if (timeComparison !== 0 && timeComparison !== undefined) {
|
|
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;
|