Verbessere die Auswahl von liturgischen Tagen im Worship Management: Filtere nur zukünftige Tage, formatiere die Anzeige mit Datum und Namen und aktualisiere die Logik zur Auswahl und Speicherung des liturgischen Tages. Optimiere die Handhabung von Tags und deren Zuordnung im Formular.
This commit is contained in:
@@ -244,9 +244,33 @@ export default {
|
|||||||
const response = await axios.get('/liturgical-days');
|
const response = await axios.get('/liturgical-days');
|
||||||
this.liturgicalDays = response.data;
|
this.liturgicalDays = response.data;
|
||||||
|
|
||||||
// Erstelle Optionen für Multiselect
|
// Nur zukünftige Tage anzeigen
|
||||||
const uniqueNames = [...new Set(response.data.map(day => day.dayName))];
|
const today = new Date();
|
||||||
this.dayNameOptions = uniqueNames.sort().map(name => ({ name }));
|
today.setHours(0, 0, 0, 0);
|
||||||
|
|
||||||
|
const futureDays = response.data.filter(day => {
|
||||||
|
const dayDate = new Date(day.date);
|
||||||
|
dayDate.setHours(0, 0, 0, 0);
|
||||||
|
return dayDate >= today;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Sortiere nach Datum
|
||||||
|
futureDays.sort((a, b) => new Date(a.date) - new Date(b.date));
|
||||||
|
|
||||||
|
// Erstelle Optionen mit Datum und Name: "30.11.2025 - 1. Advent"
|
||||||
|
this.dayNameOptions = futureDays.map(day => {
|
||||||
|
const date = new Date(day.date);
|
||||||
|
const formattedDate = date.toLocaleDateString('de-DE', {
|
||||||
|
day: '2-digit',
|
||||||
|
month: '2-digit',
|
||||||
|
year: 'numeric'
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
name: `${formattedDate} - ${day.dayName}`,
|
||||||
|
dayName: day.dayName,
|
||||||
|
date: day.date
|
||||||
|
};
|
||||||
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Fehler beim Abrufen der liturgischen Tage:', error);
|
console.error('Fehler beim Abrufen der liturgischen Tage:', error);
|
||||||
}
|
}
|
||||||
@@ -294,7 +318,11 @@ export default {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (liturgicalDay) {
|
if (liturgicalDay) {
|
||||||
this.selectedDayName = { name: liturgicalDay.dayName };
|
// Finde die passende Option mit formatiertem Datum
|
||||||
|
const option = this.dayNameOptions.find(opt => opt.date === selectedDate);
|
||||||
|
if (option) {
|
||||||
|
this.selectedDayName = option;
|
||||||
|
}
|
||||||
this.worshipData.dayName = liturgicalDay.dayName;
|
this.worshipData.dayName = liturgicalDay.dayName;
|
||||||
console.log('Liturgischer Tag gefunden:', liturgicalDay.dayName);
|
console.log('Liturgischer Tag gefunden:', liturgicalDay.dayName);
|
||||||
} else {
|
} else {
|
||||||
@@ -307,46 +335,14 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
updateDateFromDayName() {
|
updateDateFromDayName() {
|
||||||
if (!this.selectedDayName || !this.selectedDayName.name) {
|
if (!this.selectedDayName || !this.selectedDayName.date) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finde liturgischen Tag mit diesem Namen
|
// Das Datum ist bereits in der Option enthalten
|
||||||
// Wenn es mehrere gibt (z.B. mehrere Sonntage), nimm den nächsten in der Zukunft
|
this.worshipData.date = this.selectedDayName.date;
|
||||||
const today = new Date();
|
this.worshipData.dayName = this.selectedDayName.dayName;
|
||||||
today.setHours(0, 0, 0, 0);
|
console.log('Datum gesetzt auf:', this.selectedDayName.date, 'für', this.selectedDayName.dayName);
|
||||||
|
|
||||||
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() {
|
async saveWorship() {
|
||||||
try {
|
try {
|
||||||
@@ -355,7 +351,7 @@ export default {
|
|||||||
eventPlaceId: this.selectedEventPlace ? this.selectedEventPlace.id : null,
|
eventPlaceId: this.selectedEventPlace ? this.selectedEventPlace.id : null,
|
||||||
organizer: this.selectedOrganizers.map(org => org.name).join(', '),
|
organizer: this.selectedOrganizers.map(org => org.name).join(', '),
|
||||||
sacristanService: this.selectedSacristans.map(sac => sac.name).join(', '),
|
sacristanService: this.selectedSacristans.map(sac => sac.name).join(', '),
|
||||||
dayName: this.selectedDayName ? this.selectedDayName.name : ''
|
dayName: this.selectedDayName ? this.selectedDayName.dayName : ''
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.editMode) {
|
if (this.editMode) {
|
||||||
@@ -386,8 +382,15 @@ export default {
|
|||||||
? worship.sacristanService.split(',').map(sac => ({ name: sac.trim() }))
|
? worship.sacristanService.split(',').map(sac => ({ name: sac.trim() }))
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
// Setze dayName
|
// Setze dayName - finde die passende Option
|
||||||
this.selectedDayName = worship.dayName ? { name: worship.dayName } : null;
|
if (worship.dayName) {
|
||||||
|
const option = this.dayNameOptions.find(opt =>
|
||||||
|
opt.dayName === worship.dayName && opt.date === this.worshipData.date
|
||||||
|
);
|
||||||
|
this.selectedDayName = option || null;
|
||||||
|
} else {
|
||||||
|
this.selectedDayName = null;
|
||||||
|
}
|
||||||
|
|
||||||
this.editMode = true;
|
this.editMode = true;
|
||||||
this.editId = worship.id;
|
this.editId = worship.id;
|
||||||
@@ -445,9 +448,15 @@ export default {
|
|||||||
this.selectedSacristans.push(tag);
|
this.selectedSacristans.push(tag);
|
||||||
},
|
},
|
||||||
addDayNameTag(newTag) {
|
addDayNameTag(newTag) {
|
||||||
const tag = { name: newTag };
|
// Wenn manuell ein Tag eingegeben wird, ohne Datum
|
||||||
|
const tag = {
|
||||||
|
name: newTag,
|
||||||
|
dayName: newTag,
|
||||||
|
date: this.worshipData.date || null
|
||||||
|
};
|
||||||
this.dayNameOptions.push(tag);
|
this.dayNameOptions.push(tag);
|
||||||
this.selectedDayName = tag;
|
this.selectedDayName = tag;
|
||||||
|
this.worshipData.dayName = newTag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user