feat: Sort members alphabetically by first and last name in player selection and friendly match dialogs
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 47s

This commit is contained in:
Torsten Schulz (local)
2026-05-28 17:59:53 +02:00
parent 390d1a8897
commit 7ba25b2572
2 changed files with 24 additions and 3 deletions

View File

@@ -903,7 +903,7 @@ export default {
const eligibleMemberIds = match.isFriendly ? [] : await this.getEligibleMemberIdsForSelectedTeam(lineupHalf);
const activeMembers = match.isFriendly ? allMembers : allMembers.filter(member => member.active);
const allowedIds = new Set(
[...eligibleMemberIds, ...preselectedIds]
[...eligibleMemberIds]
.map((id) => Number(id))
.filter((id) => Number.isFinite(id))
);
@@ -911,7 +911,18 @@ export default {
? activeMembers.filter((member) => allowedIds.has(Number(member.id)))
: activeMembers;
this.playerSelectionDialog.members = visibleMembers.map(m => ({
// Sort members alphabetically by firstName then lastName (case-insensitive)
const sortedVisibleMembers = (visibleMembers || []).slice().sort((a, b) => {
const fa = (a.firstName || '').toString().toLowerCase();
const fb = (b.firstName || '').toString().toLowerCase();
if (fa < fb) return -1;
if (fa > fb) return 1;
const la = (a.lastName || '').toString().toLowerCase();
const lb = (b.lastName || '').toString().toLowerCase();
return la.localeCompare(lb);
});
this.playerSelectionDialog.members = sortedVisibleMembers.map(m => ({
...m,
isReady: readyIds.includes(m.id) || false,
isPlanned: plannedIds.includes(m.id) || false,
@@ -1172,7 +1183,17 @@ export default {
},
async loadFriendlyMembers() {
const response = await apiClient.get(`/friendly-matches/${this.currentClub}/members/list`);
this.friendlyMatchDialog.members = response.data || [];
const members = response.data || [];
// Sort members alphabetically by firstName then lastName
this.friendlyMatchDialog.members = members.slice().sort((a, b) => {
const fa = (a.firstName || '').toString().toLowerCase();
const fb = (b.firstName || '').toString().toLowerCase();
if (fa < fb) return -1;
if (fa > fb) return 1;
const la = (a.lastName || '').toString().toLowerCase();
const lb = (b.lastName || '').toString().toLowerCase();
return la.localeCompare(lb);
});
},
async openFriendlyMatchDialog(match = null) {
await this.loadFriendlyMembers();