Füge Logik zur Aktualisierung des Datums basierend auf dem ausgewählten liturgischen Tag hinzu: Implementiere einen Watcher für die Änderung des Tagesnamens und vermeide Endlosschleifen durch ein Flag. Protokolliere das gesetzte Datum und den entsprechenden liturgischen Tag in der Konsole.

This commit is contained in:
Torsten Schulz (local)
2025-10-07 17:16:42 +02:00
parent bf0b7f1dad
commit 156d89a45d

View File

@@ -136,6 +136,7 @@ export default {
selectedYear: currentYear,
availableYears: [currentYear, currentYear + 1, currentYear + 2],
isLoading: false,
isUpdatingFromDate: false,
worshipData: {
eventPlaceId: null,
date: '',
@@ -196,6 +197,14 @@ export default {
return filtered;
}
},
watch: {
selectedDayName(newValue, oldValue) {
// Nur wenn sich der Wert wirklich ändert und nicht beim initialen Laden
if (newValue && newValue !== oldValue && !this.isUpdatingFromDate) {
this.updateDateFromDayName();
}
}
},
async created() {
await this.fetchEventPlaces();
await this.fetchWorships();
@@ -271,6 +280,9 @@ export default {
return;
}
// Setze Flag, um Endlosschleife zu vermeiden
this.isUpdatingFromDate = true;
// Normalisiere das Datum (HTML input gibt YYYY-MM-DD zurück)
const selectedDate = this.worshipData.date;
@@ -288,6 +300,53 @@ export default {
} else {
console.log('Kein liturgischer Tag gefunden für:', selectedDate);
}
// Reset Flag nach kurzer Verzögerung
this.$nextTick(() => {
this.isUpdatingFromDate = false;
});
},
updateDateFromDayName() {
if (!this.selectedDayName || !this.selectedDayName.name) {
return;
}
// Finde liturgischen Tag mit diesem Namen
// Wenn es mehrere gibt (z.B. mehrere Sonntage), nimm den nächsten in der Zukunft
const today = new Date();
today.setHours(0, 0, 0, 0);
const matchingDays = this.liturgicalDays.filter(day =>
day.dayName === this.selectedDayName.name
);
if (matchingDays.length > 0) {
// Sortiere nach Datum
matchingDays.sort((a, b) => new Date(a.date) - new Date(b.date));
// Finde den nächsten Tag in der Zukunft oder heute
let selectedDay = matchingDays.find(day => {
const dayDate = new Date(day.date);
dayDate.setHours(0, 0, 0, 0);
return dayDate >= today;
});
// Wenn keiner in der Zukunft, nimm den letzten vergangenen
if (!selectedDay) {
selectedDay = matchingDays[matchingDays.length - 1];
}
// Setze das Datum
const dayDate = typeof selectedDay.date === 'string'
? selectedDay.date
: selectedDay.date.split('T')[0];
this.worshipData.date = dayDate;
this.worshipData.dayName = selectedDay.dayName;
console.log('Datum gesetzt auf:', dayDate, 'für', selectedDay.dayName);
} else {
console.log('Kein Datum gefunden für Tag:', this.selectedDayName.name);
}
},
async saveWorship() {
try {