diff --git a/apps/web/app/[locale]/home/[account]/members-cms/statistics/page.tsx b/apps/web/app/[locale]/home/[account]/members-cms/statistics/page.tsx index 94f0855ed..61f748bfe 100644 --- a/apps/web/app/[locale]/home/[account]/members-cms/statistics/page.tsx +++ b/apps/web/app/[locale]/home/[account]/members-cms/statistics/page.tsx @@ -35,7 +35,11 @@ export default async function MemberStatisticsPage({ params }: PageProps) { if (!acct) return ; const { query } = createMemberServices(client); - const stats = await query.getStatistics(acct.id); + const statsRaw = await query.getStatistics(acct.id); + + // Compute total from individual status counts + const total = Object.values(statsRaw).reduce((a, b) => a + b, 0); + const stats = { ...statsRaw, total }; const statusChartData = [ { name: t('status.active'), value: stats.active ?? 0 }, diff --git a/apps/web/i18n/messages/de/common.json b/apps/web/i18n/messages/de/common.json index a3a82ef41..f92b38b50 100644 --- a/apps/web/i18n/messages/de/common.json +++ b/apps/web/i18n/messages/de/common.json @@ -139,7 +139,58 @@ "administration": "Administration", "accountSettings": "Kontoeinstellungen", "application": "Anwendung", - "home": "Startseite" + "home": "Startseite", + "courses": "Kurse", + "calendar": "Kalender", + "instructors": "Kursleiter", + "locations": "Standorte", + "categories": "Kategorien", + "statistics": "Statistiken", + "events": "Veranstaltungen", + "registrations": "Anmeldungen", + "holiday passes": "Ferienpässe", + "bookings": "Buchungen", + "rooms": "Zimmer", + "guests": "Gäste", + "finance": "Finanzen", + "invoices": "Rechnungen", + "sepa": "SEPA-Einzüge", + "payments": "Zahlungen", + "documents": "Dokumente", + "generate": "Generieren", + "templates": "Vorlagen", + "newsletter": "Newsletter", + "new": "Neu", + "edit": "Bearbeiten", + "members": "Mitglieder", + "members cms": "Vereinsmitglieder", + "site builder": "Website", + "posts": "Beiträge", + "fischerei": "Fischerei", + "waters": "Gewässer", + "species": "Fischarten", + "stocking": "Besatz", + "leases": "Pachten", + "catch books": "Fangbücher", + "permits": "Erlaubnisscheine", + "competitions": "Wettbewerbe", + "meetings": "Sitzungen", + "protocols": "Protokolle", + "tasks": "Aufgaben", + "verband": "Verband", + "clubs": "Vereine", + "hierarchy": "Organisationsstruktur", + "reporting": "Berichte", + "modules": "Module", + "import": "Import", + "applications": "Aufnahmeanträge", + "departments": "Abteilungen", + "dues": "Beiträge", + "tags": "Tags", + "cards": "Mitgliedsausweise", + "invitations": "Einladungen", + "attendance": "Anwesenheit", + "participants": "Teilnehmer" }, "roles": { "owner": { @@ -223,4 +274,4 @@ "action": "Zum Dashboard" }, "confirm": "Bestätigen" -} +} \ No newline at end of file diff --git a/apps/web/i18n/messages/en/common.json b/apps/web/i18n/messages/en/common.json index 402d85136..51368d9d5 100644 --- a/apps/web/i18n/messages/en/common.json +++ b/apps/web/i18n/messages/en/common.json @@ -139,7 +139,58 @@ "associationTemplates": "Shared Templates", "administration": "Administration", "accountSettings": "Account Settings", - "application": "Application" + "application": "Application", + "courses": "Courses", + "calendar": "Calendar", + "instructors": "Instructors", + "locations": "Locations", + "categories": "Categories", + "statistics": "Statistics", + "events": "Events", + "registrations": "Registrations", + "holiday passes": "Holiday Passes", + "bookings": "Bookings", + "rooms": "Rooms", + "guests": "Guests", + "finance": "Finance", + "invoices": "Invoices", + "sepa": "SEPA", + "payments": "Payments", + "documents": "Documents", + "generate": "Generate", + "templates": "Templates", + "newsletter": "Newsletter", + "new": "New", + "edit": "Edit", + "members": "Members", + "members cms": "Members", + "site builder": "Site Builder", + "posts": "Posts", + "fischerei": "Fisheries", + "waters": "Waters", + "species": "Species", + "stocking": "Stocking", + "leases": "Leases", + "catch books": "Catch Books", + "permits": "Permits", + "competitions": "Competitions", + "meetings": "Meetings", + "protocols": "Protocols", + "tasks": "Tasks", + "verband": "Federation", + "clubs": "Clubs", + "hierarchy": "Hierarchy", + "reporting": "Reporting", + "modules": "Modules", + "import": "Import", + "applications": "Applications", + "departments": "Departments", + "dues": "Dues", + "tags": "Tags", + "cards": "Cards", + "invitations": "Invitations", + "attendance": "Attendance", + "participants": "Participants" }, "roles": { "owner": { @@ -223,4 +274,4 @@ "action": "Go to Dashboard" }, "confirm": "Confirm" -} +} \ No newline at end of file diff --git a/packages/features/member-management/src/components/member-detail-tabs.tsx b/packages/features/member-management/src/components/member-detail-tabs.tsx index 7d731cd99..0558156a9 100644 --- a/packages/features/member-management/src/components/member-detail-tabs.tsx +++ b/packages/features/member-management/src/components/member-detail-tabs.tsx @@ -158,7 +158,11 @@ export function MemberDetailTabs({ /> @@ -211,7 +215,18 @@ export function MemberDetailTabs({ /> { + const code = String(member.country ?? 'DE'); + const countries: Record = { + DE: 'Deutschland', AT: 'Österreich', CH: 'Schweiz', + LI: 'Liechtenstein', LU: 'Luxemburg', IT: 'Italien', + FR: 'Frankreich', NL: 'Niederlande', BE: 'Belgien', + PL: 'Polen', CZ: 'Tschechien', DK: 'Dänemark', + }; + return countries[code] ?? code; + })() + } />