feat: reports, timeline toggles, and stock correction improvements (#236)
* refactor(frontend): modularize styles and polish modal/ui interactions * feat: add report workflow and timeline/settings improvements * fix: resolve CI failures for backend typing, lint, and playwright config
This commit is contained in:
+98
-13
@@ -76,7 +76,7 @@
|
||||
"emptyStock_other": "{{count}} Medikamente leer",
|
||||
"lowWarning": "{{count}} Medikament kritisch niedrig",
|
||||
"lowWarning_other": "{{count}} Medikamente kritisch niedrig",
|
||||
"waitingFirstCheck": "Warte auf erste Prüfung",
|
||||
"waitingFirstCheck": "Warte auf die erste Prüfung",
|
||||
"type": "Typ",
|
||||
"typeStock": "Bestand",
|
||||
"typeIntake": "Einnahme",
|
||||
@@ -152,14 +152,16 @@
|
||||
}
|
||||
},
|
||||
"form": {
|
||||
"editEntry": "Medikament bearbeiten",
|
||||
"viewEntry": "Medikament ansehen",
|
||||
"editEntry": "Bearbeiten",
|
||||
"viewEntry": "Ansehen",
|
||||
"newEntry": "Neues Medikament",
|
||||
"badge": "Packungen + lose Tabletten",
|
||||
"sections": {
|
||||
"general": "Allgemein",
|
||||
"stock": "Bestand & Dosis",
|
||||
"prescription": "Rezept"
|
||||
"stock": "Package",
|
||||
"prescription": "Rezept",
|
||||
"prescriptionAndRefill": "Rezept & Nachfüllen",
|
||||
"schedule": "Einnahme"
|
||||
},
|
||||
"commercialName": "Handelsname",
|
||||
"genericName": "Wirkstoff",
|
||||
@@ -175,7 +177,7 @@
|
||||
"loosePills": "Lose Tabletten",
|
||||
"pillWeight": "Dosis pro Tablette",
|
||||
"total": "Gesamt (Tabletten)",
|
||||
"medicationStartDate": "Medikations-Startdatum",
|
||||
"medicationStartDate": "Startdatum der Medikation",
|
||||
"expiryDate": "Ablaufdatum",
|
||||
"notes": "Notizen",
|
||||
"medicationImage": "Medikamentenbild",
|
||||
@@ -240,7 +242,7 @@
|
||||
"stockReminders": "Bestands-Erinnerungen",
|
||||
"intakeReminders": "Einnahme-Erinnerungen",
|
||||
"prescriptionReminders": "Rezept-Erinnerungen",
|
||||
"enableHint": "Aktivieren Sie mindestens einen Kanal, um Benachrichtigungen zu erhalten.",
|
||||
"enableHint": "Aktiviere mindestens einen Kanal, um Benachrichtigungen zu erhalten.",
|
||||
"skipTakenDoses": "Keine Erinnerungen für genommene Dosen",
|
||||
"skipTakenDosesTooltip": "Sende keine Einnahme-Erinnerungen für Dosen, die heute bereits als genommen markiert wurden",
|
||||
"repeatReminders": "Wiederholte Erinnerungen für verpasste Dosen",
|
||||
@@ -279,7 +281,7 @@
|
||||
"automatic": "Automatisch",
|
||||
"automaticDesc": "Bestand wird automatisch anhand des Einnahmeplans reduziert",
|
||||
"manual": "Manuell",
|
||||
"manualDesc": "Bestand wird nur reduziert wenn Dosen als genommen markiert werden",
|
||||
"manualDesc": "Bestand wird nur reduziert, wenn Dosen als genommen markiert werden",
|
||||
"thresholds": "Schwellenwerte",
|
||||
"criticalStockDays": "Kritisch (Tage)",
|
||||
"criticalStockTooltip": "Bestand unter diesem Wert ist kritisch und erfordert sofortige Aufmerksamkeit",
|
||||
@@ -287,10 +289,22 @@
|
||||
"lowStockTooltip": "Bestand unter diesem Wert bedeutet, dass bald nachbestellt werden sollte",
|
||||
"highStockDays": "Hoch (Tage)",
|
||||
"highStockTooltip": "Bestand über diesem Wert bedeutet, dass du gut versorgt bist",
|
||||
"thresholdValidation": "Werte müssen sein: Kritisch < Niedrig < Hoch",
|
||||
"thresholdValidation": "Werte müssen wie folgt sein: Kritisch < Niedrig < Hoch",
|
||||
"shareStockStatus": "Bestand auf geteilten Links anzeigen",
|
||||
"shareStockStatusDesc": "Bestandsstatus (Normal/Niedrig/Kritisch) und farbige Rahmen auf geteilten Zeitplan-Links für Einnahme-Nutzer anzeigen"
|
||||
},
|
||||
"timeline": {
|
||||
"title": "Allgemeine UI",
|
||||
"upcomingSection": "Bevorstehender Zeitplan",
|
||||
"upcomingTodayOnly": "Nur heute anzeigen",
|
||||
"upcomingTodayOnlyDesc": "Vergangene und zukünftige Tage ausblenden und im Dashboard nur den heutigen Zeitplan anzeigen.",
|
||||
"dashboardSectionOrder": "Dashboard-Layout",
|
||||
"swapDashboardSections": "Bevorstehenden Zeitplan vor Medikamentenübersicht anzeigen",
|
||||
"swapDashboardSectionsDesc": "Wenn aktiviert, wird der Bereich mit bevorstehenden Einnahmen über der Medikamentenübersicht angezeigt.",
|
||||
"sharedSection": "Geteilter Zeitplan",
|
||||
"shareScheduleTodayOnly": "Geteilte Links zeigen nur heute",
|
||||
"shareScheduleTodayOnlyDesc": "Vergangene und zukünftige Tage in geteilten Zeitplänen ausblenden und nur heutige Einträge zeigen."
|
||||
},
|
||||
"stockReminder": {
|
||||
"title": "Bestands-Erinnerung",
|
||||
"description": "Bestands-Erinnerungen aktivieren",
|
||||
@@ -349,7 +363,8 @@
|
||||
},
|
||||
"dose": {
|
||||
"takenBy": "eingenommen von",
|
||||
"markAsTaken": "Als eingenommen markieren"
|
||||
"markAsTaken": "Als eingenommen markieren",
|
||||
"take": "Nehmen"
|
||||
},
|
||||
"auth": {
|
||||
"login": "Anmelden",
|
||||
@@ -377,7 +392,7 @@
|
||||
"checkEmail": "E-Mail überprüfen",
|
||||
"resetEmailSent": "Falls ein Konto mit dieser E-Mail existiert, haben wir einen Link zum Zurücksetzen gesendet.",
|
||||
"passwordReset": "Passwort zurückgesetzt",
|
||||
"passwordResetSuccess": "Ihr Passwort wurde zurückgesetzt. Weiterleitung zur Anmeldung...",
|
||||
"passwordResetSuccess": "Dein Passwort wurde zurückgesetzt. Weiterleitung zur Anmeldung...",
|
||||
"profileUpdated": "Profil erfolgreich aktualisiert",
|
||||
"rememberMe": "Angemeldet bleiben",
|
||||
"localAccount": "Lokales Konto",
|
||||
@@ -414,7 +429,7 @@
|
||||
"maxLength": "Maximal {{max}} Zeichen ({{current}}/{{max}})",
|
||||
"tooLong": "{{current}}/{{max}} Zeichen"
|
||||
},
|
||||
"saved": "Gespeichert ✓",
|
||||
"saved": "Gespeichert",
|
||||
"save": "Speichern",
|
||||
"back": "Zurück",
|
||||
"cancel": "Abbrechen",
|
||||
@@ -476,7 +491,7 @@
|
||||
}
|
||||
},
|
||||
"exportImport": {
|
||||
"title": "Daten Export / Import",
|
||||
"title": "Datenexport / -import",
|
||||
"description": "Sichere deine Daten oder übertrage sie auf ein anderes Gerät.",
|
||||
"exportTitle": "Export",
|
||||
"exportDesc": "Lade alle deine Daten als JSON-Datei herunter.",
|
||||
@@ -540,11 +555,19 @@
|
||||
},
|
||||
"editStock": {
|
||||
"title": "Bestand korrigieren",
|
||||
"buttonLabel": "Bestand/Angebrochene Blister korrigieren",
|
||||
"hint": "Dies ist für die Korrektur von Bestandsabweichungen. Für normale Bestandsänderungen nutze 'Nachfüllen'.",
|
||||
"totalPills": "Gesamte Tabletten",
|
||||
"fullBlisters": "Volle Blister",
|
||||
"partialBlisterPills": "Angebrochener Blister",
|
||||
"loosePills": "Lose Tabletten",
|
||||
"pillsPerBlister": "(je {{count}} Tabletten)",
|
||||
"packageSize": "Packungsgröße: {{count}} Tabletten",
|
||||
"packageSizeBreakdown": "{{packCount}} x {{sizePerPack}} Tabletten Packung = {{total}} Tabletten",
|
||||
"currentComposition": "Aktueller Bestand: {{fullBlisters}} volle Blister + {{partialPills}} angebrochen + {{loosePills}} lose = {{total}} Tabletten",
|
||||
"maxExceeded": "Die maximale Packungsgröße beträgt {{count}} Tabletten. Werte wurden begrenzt.",
|
||||
"decreaseValue": "Wert verringern",
|
||||
"increaseValue": "Wert erhöhen",
|
||||
"currentTotal": "Aktueller Bestand",
|
||||
"newTotal": "Neuer Bestand",
|
||||
"difference": "Differenz",
|
||||
@@ -569,5 +592,67 @@
|
||||
"copyright": "© {{year}} Daniel Volz",
|
||||
"madeWith": "Mit ❤️ erstellt für besseres Gesundheitsmanagement",
|
||||
"techStack": "Entwickelt mit React, Fastify & SQLite"
|
||||
},
|
||||
"report": {
|
||||
"button": "Bericht",
|
||||
"title": "Medikamentenbericht",
|
||||
"description": "Erstelle ein Dokument mit detaillierten Medikamenteninformationen für deinen Arzt oder deine persönlichen Unterlagen.",
|
||||
"selectAll": "Alle auswählen",
|
||||
"deselectAll": "Alle abwählen",
|
||||
"activeMeds": "Aktive Medikamente",
|
||||
"obsoleteMeds": "Obsolete Medikamente",
|
||||
"format": "Format",
|
||||
"formatTxt": "Klartext (.txt)",
|
||||
"formatMd": "Markdown (.md)",
|
||||
"formatPdf": "PDF (Drucken)",
|
||||
"generate": "Erstellen",
|
||||
"generating": "Wird erstellt...",
|
||||
"noSelection": "Wähle mindestens ein Medikament aus",
|
||||
"filterByPerson": "Bericht für",
|
||||
"allPeople": "Alle Personen",
|
||||
"docTitle": "Medikamentenbericht",
|
||||
"docGenerated": "Erstellt am",
|
||||
"docGeneral": "Allgemein",
|
||||
"docCommercialName": "Handelsname",
|
||||
"docGenericName": "Wirkstoff",
|
||||
"docTakenBy": "Eingenommen von",
|
||||
"docStartDate": "Startdatum",
|
||||
"docObsoleteSince": "Obsolet seit",
|
||||
"docStatus": "Status",
|
||||
"docStatusActive": "Aktiv",
|
||||
"docStatusObsolete": "Obsolet",
|
||||
"docPackage": "Verpackung",
|
||||
"docPackageType": "Verpackungsart",
|
||||
"docBlister": "Blisterpackung",
|
||||
"docBottle": "Pillendose",
|
||||
"docPacks": "Packungen",
|
||||
"docBlistersPerPack": "Blister pro Packung",
|
||||
"docPillsPerBlister": "Tabletten pro Blister",
|
||||
"docTotalCapacity": "Gesamtkapazität",
|
||||
"docCurrentStock": "Aktueller Bestand",
|
||||
"docLoosePills": "Lose Tabletten",
|
||||
"docDose": "Dosis",
|
||||
"docDosePerPill": "Dosis pro Tablette",
|
||||
"docExpiryDate": "Ablaufdatum",
|
||||
"docNotes": "Notizen",
|
||||
"docIntakeSchedule": "Einnahmeplan",
|
||||
"docIntakeEntry": "{{usage}} Tablette(n) alle {{every}} Tag(e) ab {{start}}",
|
||||
"docIntakeTakenBy": "eingenommen von {{person}}",
|
||||
"docIntakeReminder": "Erinnerung aktiv",
|
||||
"docPrescription": "Rezept",
|
||||
"docAuthorizedRefills": "Genehmigte Nachfüllungen",
|
||||
"docRemainingRefills": "Verbleibende Nachfüllungen",
|
||||
"docPrescriptionExpiry": "Rezeptablauf",
|
||||
"docIntakeHistory": "Einnahme-Verlauf",
|
||||
"docDosesTaken": "Eingenommene Dosen",
|
||||
"docDosesDismissed": "Verworfene Dosen",
|
||||
"docFirstDose": "Erste Dosis",
|
||||
"docLastDose": "Letzte Dosis",
|
||||
"docRefillHistory": "Nachfüll-Verlauf",
|
||||
"docRefillEntry": "{{date}}: +{{packs}} Packungen, +{{loose}} Tabletten",
|
||||
"docRefillPrescription": "(Rezept-Nachfüllung)",
|
||||
"docNoRefills": "Keine Nachfüllungen erfasst",
|
||||
"docNoDoses": "Keine Dosen erfasst",
|
||||
"docPrintInstruction": "Nutze die Druckfunktion deines Browsers (Strg+P / ⌘P) um als PDF zu speichern."
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user