fix(TeamManagement): refine eligibility checks and streamline assignment removal
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 37s
- Adjusted member eligibility comparison logic to ensure correct validation. - Implemented functions to remove ineligible planning assignments for teams, enhancing data integrity. - Integrated automatic cleanup of ineligible assignments upon team updates, improving user experience.
This commit is contained in:
@@ -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));
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user