From c1b2bcf76ce8affa607aa81422d04eb9022ce437 Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Thu, 19 Feb 2026 20:54:52 +0000 Subject: [PATCH] Correct alphabetical sort of names in Org Admin panel. Supports Last, First and First Last + variatioons. --- frontend/src/admin/AdminOrgDetail.vue | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/frontend/src/admin/AdminOrgDetail.vue b/frontend/src/admin/AdminOrgDetail.vue index 080d598..8943519 100644 --- a/frontend/src/admin/AdminOrgDetail.vue +++ b/frontend/src/admin/AdminOrgDetail.vue @@ -36,14 +36,26 @@ const orgPermissions = computed(() => { }) // Get users for a role as sorted array of { uuid, ...user } +function getNormalizedName(name) { + let cleaned = name.replace(/\([^)]*\)/g, '').trim(); + if (cleaned.includes(',')) { + return cleaned.toLowerCase(); + } else { + const parts = cleaned.split(/\s+/); + const last = parts.pop(); + const first = parts.join(' '); + return `${last}, ${first}`.toLowerCase(); + } +} + function roleUsers(roleUuid) { return Object.entries(props.selectedOrg.users) .filter(([_, u]) => u.role === roleUuid) .map(([uuid, u]) => ({ uuid, ...u })) .sort((a, b) => { - const nameA = a.display_name.toLowerCase() - const nameB = b.display_name.toLowerCase() - return nameA.localeCompare(nameB) + const normA = getNormalizedName(a.display_name); + const normB = getNormalizedName(b.display_name); + return normA.localeCompare(normB); }) }