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:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user