From 2492f410b140adaf4ed4b6b621d20df291e6dc75 Mon Sep 17 00:00:00 2001
From: Alex <$(pass /github/email)>
Date: Tue, 11 Feb 2025 13:27:14 +0100
Subject: [PATCH] frontend:locale & subscription handling
---
frontend/src/app.d.ts | 13 +-
.../components/SubscriptionEditForm.svelte | 180 ++++++++++++++++++
.../src/lib/components/UserEditForm.svelte | 22 ++-
frontend/src/lib/locales/de.js | 28 ++-
frontend/src/lib/utils/processing.js | 10 +-
.../src/routes/auth/admin/users/+layout.js | 11 +-
.../src/routes/auth/admin/users/+page.svelte | 99 +++++++---
.../routes/auth/admin/users/old+page.svelte | 94 ---------
8 files changed, 307 insertions(+), 150 deletions(-)
create mode 100644 frontend/src/lib/components/SubscriptionEditForm.svelte
delete mode 100644 frontend/src/routes/auth/admin/users/old+page.svelte
diff --git a/frontend/src/app.d.ts b/frontend/src/app.d.ts
index 8163770..09c7e91 100644
--- a/frontend/src/app.d.ts
+++ b/frontend/src/app.d.ts
@@ -3,12 +3,12 @@
interface Subscription {
id: number | -1;
name: string | '';
- details?: string | '';
- conditions?: string | '';
- monthly_fee?: number | -1;
- hourly_rate?: number | -1;
- included_hours_per_year?: number | 0;
- included_hours_per_month?: number | 0;
+ details: string | '';
+ conditions: string | '';
+ monthly_fee: number | 0;
+ hourly_rate: number | 0;
+ included_hours_per_year: number | 0;
+ included_hours_per_month: number | 0;
}
interface Membership {
@@ -79,6 +79,7 @@ declare global {
}
interface Types {
licenceCategory: LicenceCategory;
+ subscription: Subscription;
}
// interface PageData {}
// interface Platform {}
diff --git a/frontend/src/lib/components/SubscriptionEditForm.svelte b/frontend/src/lib/components/SubscriptionEditForm.svelte
new file mode 100644
index 0000000..11c9d01
--- /dev/null
+++ b/frontend/src/lib/components/SubscriptionEditForm.svelte
@@ -0,0 +1,180 @@
+
+
+{#if isLoading}
+
- {$t('monthly_fee')}: + {$t('subscription.monthly_fee')}: {selectedSubscriptionModel?.monthly_fee || '-'} €
- {$t('hourly_rate')}: + {$t('subscription.hourly_rate')}: {selectedSubscriptionModel?.hourly_rate || '-'} €
{#if selectedSubscriptionModel?.included_hours_per_year}- {$t('included_hours_per_year')}: + {$t('subscription.included_hours_per_year')}: {selectedSubscriptionModel?.included_hours_per_year}
{/if} {#if selectedSubscriptionModel?.included_hours_per_month}- {$t('included_hours_per_month')}: + {$t('subscription.included_hours_per_month')}: {selectedSubscriptionModel?.included_hours_per_month}
{/if} @@ -437,7 +443,7 @@ {#if selectedSubscriptionModel?.conditions}- {$t('conditions')}: + {$t('subscription.conditions')}: {selectedSubscriptionModel?.conditions}
{/if} diff --git a/frontend/src/lib/locales/de.js b/frontend/src/lib/locales/de.js index b2b9cdb..04dd386 100644 --- a/frontend/src/lib/locales/de.js +++ b/frontend/src/lib/locales/de.js @@ -32,7 +32,10 @@ export default { licence_number: 'Auf dem Führerschein unter Feld 5', issued_date: 'Ausgabedatum unter Feld 4a', expiration_date: 'Ablaufdatum unter Feld 4b', - issuing_country: 'Ausstellendes Land' + issuing_country: 'Ausstellendes Land', + subscription_name: 'Name des Tarifmodells', + subscription_details: 'Beschreibe das Tarifmodell...', + subscription_conditions: 'Beschreibe die Bedingungen zur Nutzung...' }, validation: { required: 'Eingabe benötigt', @@ -107,6 +110,21 @@ export default { status: 'Status', role: 'Nutzerrolle' }, + subscription: { + name: 'Modellname', + edit: 'Modell bearbeiten', + subscription: 'Tarifmodell', + subscriptions: 'Tarifmodelle', + conditions: 'Bedingungen', + monthly_fee: 'Monatliche Gebühr', + hourly_rate: 'Stundensatz', + included_hours_per_year: 'Inkludierte Stunden pro Jahr', + included_hours_per_month: 'Inkludierte Stunden pro Monat' + }, + loading: { + user_data: 'Lade Nutzerdaten', + subscription_data: 'Lade Modelldaten' + }, cancel: 'Abbrechen', confirm: 'Bestätigen', actions: 'Aktionen', @@ -120,10 +138,7 @@ export default { issued_date: 'Ausgabedatum', expiration_date: 'Ablaufdatum', country: 'Land', - monthly_fee: 'Monatliche Gebühr', - hourly_rate: 'Stundensatz', details: 'Details', - conditions: 'Bedingungen', unknown: 'Unbekannt', notes: 'Notizen', address: 'Straße & Hausnummer', @@ -132,7 +147,6 @@ export default { forgot_password: 'Passwort vergessen?', password: 'Passwort', password_repeat: 'Passwort wiederholen', - email: 'Email', company: 'Firma', login: 'Anmeldung', profile: 'Profil', @@ -140,7 +154,6 @@ export default { bankaccount: 'Kontodaten', first_name: 'Vorname', last_name: 'Nachname', - name: 'Name', phone: 'Telefonnummer', dateofbirth: 'Geburtstag', status: 'Status', @@ -152,11 +165,8 @@ export default { iban: 'IBAN', bic: 'BIC', mandate_reference: 'SEPA Mandat', - subscriptions: 'Tarifmodelle', payments: 'Zahlungen', add_new: 'Neu', - included_hours_per_year: 'Inkludierte Stunden pro Jahr', - included_hours_per_month: 'Inkludierte Stunden pro Monat', // For payments section payment: { diff --git a/frontend/src/lib/utils/processing.js b/frontend/src/lib/utils/processing.js index 5f1bb11..451d4f5 100644 --- a/frontend/src/lib/utils/processing.js +++ b/frontend/src/lib/utils/processing.js @@ -91,7 +91,15 @@ export function processFormData(rawData) { parent_member_id: Number(rawData.user.membership?.parent_member_id) || 0, subscription_model: { id: Number(rawData.user.membership?.subscription_model?.id) || 0, - name: String(rawData.user.membership?.subscription_model?.name) || '' + name: String(rawData.user.membership?.subscription_model?.name) || '', + details: String(rawData.user.membership?.subscription_model?.details) || '', + conditions: String(rawData.user.membership?.subscription_model?.conditions) || '', + hourly_rate: Number(rawData.user.membership?.subscription_model?.hourly_rate) || 0, + monthly_fee: Number(rawData.user.membership?.subscription_model?.monthly_fee) || 0, + included_hours_per_month: + Number(rawData.user.membership?.subscription_model?.included_hours_per_month) || 0, + included_hours_per_year: + Number(rawData.user.membership?.subscription_model?.included_hours_per_year) || 0 } }, diff --git a/frontend/src/routes/auth/admin/users/+layout.js b/frontend/src/routes/auth/admin/users/+layout.js index 58465b7..767c933 100644 --- a/frontend/src/routes/auth/admin/users/+layout.js +++ b/frontend/src/routes/auth/admin/users/+layout.js @@ -1,8 +1,7 @@ /** @type {import('./$types').LayoutLoad} */ -export async function load({ fetch, url, data }) { - const { users } = data; - return { - users: data.users, - user: data.user, - }; +export async function load({ data }) { + return { + users: data.users, + user: data.user + }; } diff --git a/frontend/src/routes/auth/admin/users/+page.svelte b/frontend/src/routes/auth/admin/users/+page.svelte index f76c4e8..8080875 100644 --- a/frontend/src/routes/auth/admin/users/+page.svelte +++ b/frontend/src/routes/auth/admin/users/+page.svelte @@ -1,32 +1,50 @@ - -| {$t("user.id")} | -{$t("name")} | -{$t("email")} | -{$t("status")} | -{$t("actions")} | -
|---|---|---|---|---|
| {user.id} | -{user.first_name} {user.last_name} | -{user.email} | -{$t("userStatus." + user.status)} | -- - - | -