mdi-account-search
No members found
- {{ searchTerm || nationalityFilter || statusFilter
+ {{ searchTerm || statusFilter
? 'Try adjusting your filters to find members.'
: 'No members have been added yet.' }}
@@ -267,8 +254,8 @@ const error = ref('');
// Search and filtering
const searchTerm = ref('');
-const nationalityFilter = ref('');
const statusFilter = ref('');
+const sortOption = ref('name-asc');
// Dialogs
const showAddDialog = ref(false);
@@ -290,15 +277,15 @@ const statusOptions = [
{ title: 'Expired', value: 'Expired' }
];
-const nationalityOptions = computed(() => {
- const countries = getAllCountries();
- return countries.map(country => ({
- title: country.name,
- value: country.code,
- code: country.code,
- name: country.name
- }));
-});
+// Sort options
+const sortOptions = [
+ { title: 'Name (A-Z)', value: 'name-asc' },
+ { title: 'Name (Z-A)', value: 'name-desc' },
+ { title: 'Date Paid (Newest First)', value: 'date-desc' },
+ { title: 'Date Paid (Oldest First)', value: 'date-asc' },
+ { title: 'Nationality (A-Z)', value: 'nationality-asc' },
+ { title: 'Nationality (Z-A)', value: 'nationality-desc' }
+];
// Computed properties
const filteredMembers = computed(() => {
@@ -314,13 +301,6 @@ const filteredMembers = computed(() => {
);
}
- // Nationality filter
- if (nationalityFilter.value) {
- filtered = filtered.filter(member =>
- member.Nationality === nationalityFilter.value
- );
- }
-
// Status filter
if (statusFilter.value) {
filtered = filtered.filter(member =>
@@ -328,6 +308,32 @@ const filteredMembers = computed(() => {
);
}
+ // Sorting
+ if (sortOption.value) {
+ filtered.sort((a, b) => {
+ switch (sortOption.value) {
+ case 'name-asc':
+ return (a.FullName || '').localeCompare(b.FullName || '');
+ case 'name-desc':
+ return (b.FullName || '').localeCompare(a.FullName || '');
+ case 'date-desc':
+ const aDate = a['Membership Date Paid'] || '';
+ const bDate = b['Membership Date Paid'] || '';
+ return new Date(bDate).getTime() - new Date(aDate).getTime();
+ case 'date-asc':
+ const aDateAsc = a['Membership Date Paid'] || '';
+ const bDateAsc = b['Membership Date Paid'] || '';
+ return new Date(aDateAsc).getTime() - new Date(bDateAsc).getTime();
+ case 'nationality-asc':
+ return (a.Nationality || '').localeCompare(b.Nationality || '');
+ case 'nationality-desc':
+ return (b.Nationality || '').localeCompare(a.Nationality || '');
+ default:
+ return 0;
+ }
+ });
+ }
+
return filtered;
});