diff --git a/frontend/src/views/ClubView.vue b/frontend/src/views/ClubView.vue
index ef2691a..867b5b8 100644
--- a/frontend/src/views/ClubView.vue
+++ b/frontend/src/views/ClubView.vue
@@ -8,8 +8,13 @@
Mitglieder
-
- - {{ member.lastName }}, {{ member.firstName }}
+
+ -
+ {{ genderSymbol(member.gender) }}
+
+ {{ member.lastName }}, {{ member.firstName }}
+
+
@@ -64,6 +69,40 @@ export default {
if (response.status === 200) {
alert('Zugriff wurde angefragt');
}
+ },
+ labelGender(g) {
+ const v = (g || 'unknown');
+ if (v === 'male') return 'Männlich';
+ if (v === 'female') return 'Weiblich';
+ if (v === 'diverse') return 'Divers';
+ return 'Unbekannt';
+ },
+ genderSymbol(g) {
+ const v = (g || 'unknown');
+ if (v === 'male') return '♂';
+ if (v === 'female') return '♀';
+ if (v === 'diverse') return '⚧';
+ return '';
+ }
+ },
+ computed: {
+ ...mapGetters(['isAuthenticated', 'currentClub', 'clubs']),
+ displayedMembers() {
+ const members = Array.isArray(this.club.members) ? this.club.members : [];
+ const onlyActive = members.filter(m => m && (m.active === true));
+ return onlyActive.sort((a, b) => {
+ const lnA = (a.lastName || '').toLowerCase();
+ const lnB = (b.lastName || '').toLowerCase();
+ if (lnA && !lnB) return -1;
+ if (!lnA && lnB) return 1;
+ if (lnA && lnB) {
+ const cmp = lnA.localeCompare(lnB, 'de-DE');
+ if (cmp !== 0) return cmp;
+ }
+ const fnA = (a.firstName || '').toLowerCase();
+ const fnB = (b.firstName || '').toLowerCase();
+ return fnA.localeCompare(fnB, 'de-DE');
+ });
}
},
async mounted() {
@@ -83,4 +122,18 @@ ul {
padding: 0;
margin: 0;
}
+
+.members { margin-top: .25rem; }
+.member-item { padding: .15rem 0; }
+.gender-symbol, .gender-name { background: transparent; border: none; }
+.gender-name.gender-male { color: #1a73e8; }
+.gender-name.gender-female { color: #d81b60; }
+.gender-name.gender-diverse { color: #6a1b9a; }
+.gender-name.gender-unknown { color: #444; }
+.gender-symbol.gender-male { color: #1a73e8; }
+.gender-symbol.gender-female { color: #d81b60; }
+.gender-symbol.gender-diverse { color: #6a1b9a; }
+.gender-symbol.gender-unknown { color: #444; }
+.gender-symbol { margin-right: .35rem; opacity: .9; font-size: 1.05em; display: inline-block; width: 1.1em; text-align: center; }
+.is-test { font-style: italic; }