refactor(tournament): streamline participant filtering logic in TournamentParticipantsTab and TournamentTab

- Simplified the filtering logic for club members in TournamentParticipantsTab by removing redundant checks, as the parent component already handles class-based filtering.
- Updated the clubMembersForParticipantAdd method in TournamentTab to clarify conditions for returning all members, ensuring consistency in participant eligibility checks.
This commit is contained in:
Torsten Schulz (local)
2026-01-30 23:23:31 +01:00
parent 3e05bdab51
commit b1e184c4c2
2 changed files with 12 additions and 49 deletions

View File

@@ -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: {

View File

@@ -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);