diff --git a/frontend/src/components/tournament/TournamentParticipantsTab.vue b/frontend/src/components/tournament/TournamentParticipantsTab.vue index 2162995..55a92c3 100644 --- a/frontend/src/components/tournament/TournamentParticipantsTab.vue +++ b/frontend/src/components/tournament/TournamentParticipantsTab.vue @@ -447,51 +447,9 @@ export default { ], computed: { filteredClubMembers() { - // Wenn keine Klasse ausgewählt ist, zeige alle Mitglieder - if (!this.selectedViewClass || this.selectedViewClass === '__none__' || this.selectedViewClass === null) { - return this.clubMembers; - } - - // Finde die ausgewählte Klasse - const selectedClassId = Number(this.selectedViewClass); - const selectedClass = this.tournamentClasses.find(c => c.id === selectedClassId); - - // Wenn keine Klasse gefunden, zeige alle Mitglieder - if (!selectedClass) { - return this.clubMembers; - } - - // Filtere basierend auf Geschlecht und Geburtsjahr (minBirthYear/maxBirthYear) - const classGender = selectedClass.gender; - const minBirthYear = selectedClass.minBirthYear; - const maxBirthYear = selectedClass.maxBirthYear; - - return this.clubMembers.filter(member => { - const memberGender = (member.gender || 'unknown').toLowerCase(); - let genderMatch = true; - if (classGender && classGender !== 'mixed') { - if (classGender === 'male') genderMatch = memberGender === 'male'; - else if (classGender === 'female') genderMatch = memberGender === 'female'; - } - - let birthYearMatch = true; - if (member.birthDate) { - let birthYear = null; - const bd = String(member.birthDate); - if (bd.includes('-')) { - birthYear = parseInt(bd.split('-')[0], 10); - } else if (bd.includes('.')) { - const parts = bd.split('.'); - if (parts.length >= 3) birthYear = parseInt(parts[2], 10); - } - if (birthYear != null && !isNaN(birthYear)) { - if (minBirthYear != null && birthYear < minBirthYear) birthYearMatch = false; - if (maxBirthYear != null && birthYear > maxBirthYear) birthYearMatch = false; - } - } - - return genderMatch && birthYearMatch; - }); + // Parent (TournamentTab) filtert bereits nach Klasse (Geschlecht, min/maxBirthYear) + // Wir geben die Liste direkt zurück + return this.clubMembers; } }, methods: { diff --git a/frontend/src/views/TournamentTab.vue b/frontend/src/views/TournamentTab.vue index 46675b7..e36c7cb 100644 --- a/frontend/src/views/TournamentTab.vue +++ b/frontend/src/views/TournamentTab.vue @@ -535,14 +535,17 @@ export default { return `${groupId}-${classId ?? 'null'}`; }, clubMembersForParticipantAdd() { - if (!this.isMiniChampionship || !this.selectedViewClass || this.selectedViewClass === '__none__' || !this.tournamentClasses?.length) { + // Keine Klasse ausgewählt oder keine Klassen vorhanden: alle Mitglieder + if (!this.selectedViewClass || this.selectedViewClass === '__none__' || !this.tournamentClasses?.length) { return this.clubMembers; } const classItem = this.tournamentClasses.find(c => String(c.id) === String(this.selectedViewClass)); + // Klasse nicht gefunden oder keine Filter gesetzt: alle Mitglieder if (!classItem || (classItem.minBirthYear == null && classItem.maxBirthYear == null && !classItem.gender)) { return this.clubMembers; } - return this.clubMembers.filter(m => this.memberEligibleForMiniClass(m, classItem)); + // Filtere nach Geschlecht und Geburtsjahr (min/max) + return this.clubMembers.filter(m => this.memberEligibleForClass(m, classItem)); }, // Mapping von groupId zu groupNumber für die Teilnehmer-Auswahl @@ -1657,14 +1660,16 @@ export default { } }, - memberEligibleForMiniClass(member, classItem) { + memberEligibleForClass(member, classItem) { + // Geschlechtsfilter if (classItem.gender && classItem.gender !== 'mixed') { const g = (member.gender || 'unknown').toLowerCase(); if (classItem.gender === 'male' && g !== 'male') return false; if (classItem.gender === 'female' && g !== 'female') return false; } + // Geburtsjahr-Filter const bd = member.birthDate; - if (!bd) return true; + if (!bd) return true; // Kein Geburtsdatum = erlaubt let birthYear = null; if (typeof bd === 'string' && bd.includes('-')) { birthYear = parseInt(bd.split('-')[0], 10);