From 17c40093ca024735faeccf9d10b08756842bd50e Mon Sep 17 00:00:00 2001 From: Torsten Schulz Date: Mon, 21 Oct 2024 18:28:02 +0200 Subject: [PATCH] Optimized members sort --- frontend/src/views/MembersView.vue | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/frontend/src/views/MembersView.vue b/frontend/src/views/MembersView.vue index 2433c0e..4fca14d 100644 --- a/frontend/src/views/MembersView.vue +++ b/frontend/src/views/MembersView.vue @@ -129,14 +129,18 @@ export default { }, async loadMembers() { const response = await apiClient.get(`/clubmembers/get/${this.currentClub}/true`); - this.members = response.data.sort(function(a, b) { - if (!a.lastName) return -1; - if (!b.lastName) return 1; - if (a.lastName < b.lastName) return -1; - if (a.lastName > b.lastName) return 1; - if (a.firstName < b.firstName) return -1; - if (a.firstName > b.firstName) return 1; - return 0; + this.members = response.data.sort((a, b) => { + const lastNameA = a.lastName ? a.lastName.toLowerCase() : ''; + const lastNameB = b.lastName ? b.lastName.toLowerCase() : ''; + if (lastNameA && !lastNameB) return -1; + if (!lastNameA && lastNameB) return 1; + if (lastNameA && lastNameB) { + const lastNameCompare = lastNameA.localeCompare(lastNameB, 'de-DE'); + if (lastNameCompare !== 0) return lastNameCompare; + } + const firstNameA = a.firstName ? a.firstName.toLowerCase() : ''; + const firstNameB = b.firstName ? b.firstName.toLowerCase() : ''; + return firstNameA.localeCompare(firstNameB, 'de-DE'); }); this.members.forEach(member => { this.loadMemberImage(member);