Refactor event retrieval logic: Implement server-side filtering for past events based on user preference, enhancing performance and simplifying client-side code. Update API call in EventManagement component to include past events parameter.
All checks were successful
Deploy miriamgemeinde / deploy (push) Successful in 7s
All checks were successful
Deploy miriamgemeinde / deploy (push) Successful in 7s
This commit is contained in:
@@ -83,26 +83,7 @@ export default {
|
||||
filteredEvents() {
|
||||
let filtered = this.events;
|
||||
|
||||
// Filter vergangene Events aus
|
||||
if (!this.showPastEvents) {
|
||||
const today = new Date();
|
||||
today.setHours(0, 0, 0, 0);
|
||||
|
||||
filtered = filtered.filter(event => {
|
||||
// Events mit Wochentag (ohne festes Datum) immer anzeigen
|
||||
if (event.dayOfWeek !== null && event.dayOfWeek !== undefined && !event.date) {
|
||||
return true;
|
||||
}
|
||||
// Events mit Datum: nur zukünftige oder heutige anzeigen
|
||||
if (event.date) {
|
||||
const eventDate = new Date(event.date);
|
||||
eventDate.setHours(0, 0, 0, 0);
|
||||
return eventDate >= today;
|
||||
}
|
||||
// Events ohne Datum und ohne Wochentag anzeigen
|
||||
return true;
|
||||
});
|
||||
}
|
||||
// Vergangenheitsfilter erfolgt serverseitig (GET /events?includePast=1)
|
||||
|
||||
// Suchfilter anwenden
|
||||
if (this.searchQuery.trim()) {
|
||||
@@ -121,6 +102,11 @@ export default {
|
||||
return filtered;
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
showPastEvents() {
|
||||
this.fetchData();
|
||||
}
|
||||
},
|
||||
async created() {
|
||||
await this.fetchData();
|
||||
this.hasNewsletterPreview = !!localStorage.getItem('newsletter_import_last_result');
|
||||
@@ -176,7 +162,7 @@ export default {
|
||||
async fetchData() {
|
||||
try {
|
||||
const [eventResponse, institutionResponse, eventPlaceResponse, contactPersonResponse, eventTypeResponse] = await Promise.all([
|
||||
axios.get('/events'),
|
||||
axios.get('/events', { params: { includePast: this.showPastEvents ? 1 : 0 } }),
|
||||
axios.get('/institutions'),
|
||||
axios.get('/event-places'),
|
||||
axios.get('/contact-persons'),
|
||||
|
||||
Reference in New Issue
Block a user