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
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 47s
This commit is contained in:
@@ -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();
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user