Sort member lists by last name instead of first name
All checks were successful
Build And Push Image / docker (push) Successful in 2m11s
All checks were successful
Build And Push Image / docker (push) Successful in 2m11s
- Updated member-list.vue to sort by last name with new sort options - Changed default sort to lastname-asc - Added Last Name and First Name sort options in dropdown - Updated board/members/index.vue to include name field and sort by last name - Updated admin/members/index.vue to include name field and sort by last name - All member lists now consistently sort alphabetically by last name
This commit is contained in:
@@ -285,7 +285,7 @@ const error = ref('');
|
||||
const searchTerm = ref('');
|
||||
const activeFilter = ref('');
|
||||
const duesFilter = ref('');
|
||||
const sortOption = ref('name-asc');
|
||||
const sortOption = ref('lastname-asc');
|
||||
|
||||
// Dialogs
|
||||
const showAddDialog = ref(false);
|
||||
@@ -329,8 +329,10 @@ const duesFilterOptions = [
|
||||
|
||||
// Sort options
|
||||
const sortOptions = [
|
||||
{ title: 'Name (A-Z)', value: 'name-asc' },
|
||||
{ title: 'Name (Z-A)', value: 'name-desc' },
|
||||
{ title: 'Last Name (A-Z)', value: 'lastname-asc' },
|
||||
{ title: 'Last Name (Z-A)', value: 'lastname-desc' },
|
||||
{ title: 'First Name (A-Z)', value: 'firstname-asc' },
|
||||
{ title: 'First Name (Z-A)', value: 'firstname-desc' },
|
||||
{ title: 'Nationality (A-Z)', value: 'nationality-asc' },
|
||||
{ title: 'Nationality (Z-A)', value: 'nationality-desc' }
|
||||
];
|
||||
@@ -373,11 +375,23 @@ const filteredMembers = computed(() => {
|
||||
// Sorting
|
||||
if (sortOption.value) {
|
||||
filtered.sort((a, b) => {
|
||||
// Extract first and last names properly
|
||||
const getLastName = (member: any) => member.last_name || '';
|
||||
const getFirstName = (member: any) => member.first_name || '';
|
||||
|
||||
switch (sortOption.value) {
|
||||
case 'name-asc':
|
||||
return (a.FullName || '').localeCompare(b.FullName || '');
|
||||
case 'name-desc':
|
||||
return (b.FullName || '').localeCompare(a.FullName || '');
|
||||
case 'lastname-asc': {
|
||||
const lastNameCompare = getLastName(a).localeCompare(getLastName(b));
|
||||
return lastNameCompare !== 0 ? lastNameCompare : getFirstName(a).localeCompare(getFirstName(b));
|
||||
}
|
||||
case 'lastname-desc': {
|
||||
const lastNameCompare = getLastName(b).localeCompare(getLastName(a));
|
||||
return lastNameCompare !== 0 ? lastNameCompare : getFirstName(b).localeCompare(getFirstName(a));
|
||||
}
|
||||
case 'firstname-asc':
|
||||
return getFirstName(a).localeCompare(getFirstName(b));
|
||||
case 'firstname-desc':
|
||||
return getFirstName(b).localeCompare(getFirstName(a));
|
||||
case 'nationality-asc':
|
||||
return (a.nationality || '').localeCompare(b.nationality || '');
|
||||
case 'nationality-desc':
|
||||
|
||||
Reference in New Issue
Block a user