diff --git a/frontend/src/views/TeamManagementView.vue b/frontend/src/views/TeamManagementView.vue index bb24ece6..dc133cb3 100644 --- a/frontend/src/views/TeamManagementView.vue +++ b/frontend/src/views/TeamManagementView.vue @@ -979,7 +979,7 @@ export default { if (memberIndex < 0 || teamIndex < 0) { return false; } - return memberIndex >= teamIndex; + return memberIndex <= teamIndex; }; const getMemberEligibilityLabel = (member, teamAgeGroup) => { @@ -1212,6 +1212,7 @@ export default { teamAgeGroup: team.teamAgeGroup || 'adult', leagueId: team.leagueId || null })); + removeAllIneligiblePlanningAssignments(); }; const onPlanningDragMember = (member) => { @@ -1228,6 +1229,33 @@ export default { return isEligibleForTeam(member, teamAgeGroup, teamGender); }; + const removeIneligibleAssignmentsForTeam = (teamId) => { + const before = planningAssignments.value.length; + planningAssignments.value = planningAssignments.value.filter((entry) => ( + Number(entry.teamId) !== Number(teamId) || isEligibleForPlanningTeam(entry.memberId, entry.teamId) + )); + if (planningAssignments.value.length !== before) { + normalizePlanningTeamAssignments(); + schedulePlanningTeamAutosave(Number(teamId), 300); + } + }; + + const removeAllIneligiblePlanningAssignments = () => { + const allEntries = [...planningAssignments.value]; + const affectedTeamIds = new Set( + allEntries + .filter((entry) => !isEligibleForPlanningTeam(entry.memberId, entry.teamId)) + .map((entry) => Number(entry.teamId)) + ); + if (!affectedTeamIds.size) return; + + planningAssignments.value = allEntries.filter((entry) => ( + isEligibleForPlanningTeam(entry.memberId, entry.teamId) + )); + normalizePlanningTeamAssignments(); + affectedTeamIds.forEach((teamId) => schedulePlanningTeamAutosave(teamId, 300)); + }; + const setPlanningTeamStatus = (teamId, state) => { const key = String(teamId); planningTeamSaveStatus.value = { @@ -1421,6 +1449,9 @@ export default { planningLocalTeams.value = planningLocalTeams.value.map((team) => ( Number(team.id) === Number(teamId) ? { ...team, [field]: value } : team )); + if (field === 'teamAgeGroup' || field === 'teamGender') { + removeIneligibleAssignmentsForTeam(teamId); + } schedulePlanningTeamAutosave(Number(teamId)); };