feat(frontend): add intake journal and shared note flows (#648)
* feat(backend): add intake journal APIs and share note support * feat(frontend): add intake journal and shared note flows
This commit is contained in:
+113
-1
@@ -102,6 +102,64 @@
|
||||
"needsRefill": "Nachfüllen nötig"
|
||||
}
|
||||
},
|
||||
"journal": {
|
||||
"actions": {
|
||||
"note": "Notiz",
|
||||
"noteTakenOnly": "Notizen funktionieren nur für genommene oder uebersprungene Dosen.",
|
||||
"history": "Journal-Verlauf",
|
||||
"historyShort": "Journal"
|
||||
},
|
||||
"editor": {
|
||||
"addTitle": "Journal-Notiz hinzufügen",
|
||||
"editTitle": "Journal-Notiz bearbeiten",
|
||||
"description": "Halte fest, was bei dieser Einnahme passiert ist, ohne den bestehenden Einnahme- oder Überspringen-Status zu ändern.",
|
||||
"loading": "Journal-Eintrag wird geladen...",
|
||||
"noteLabel": "Journal-Notiz",
|
||||
"notePlaceholder": "Was möchtest du zu dieser Einnahme festhalten?",
|
||||
"saving": "Speichern...",
|
||||
"deleting": "Löschen..."
|
||||
},
|
||||
"history": {
|
||||
"title": "Journal-Verlauf",
|
||||
"description": "Durchsuche gespeicherte Einnahme-Notizen nach Medikament oder Zeitraum und öffne einen Eintrag erneut im Bearbeitungsmodus.",
|
||||
"loading": "Journal-Verlauf wird geladen...",
|
||||
"empty": "Keine Journal-Einträge passen zu den aktuellen Filtern.",
|
||||
"noNote": "Keine Notiz gespeichert.",
|
||||
"reload": "Neu laden",
|
||||
"resetFilters": "Filter zurücksetzen",
|
||||
"reopen": "Notiz erneut öffnen",
|
||||
"updatedAt": "Aktualisiert {{date}}",
|
||||
"filters": {
|
||||
"medication": "Medikament",
|
||||
"allMedications": "Alle Medikamente",
|
||||
"from": "Von",
|
||||
"to": "Bis",
|
||||
"fromPlaceholder": "Startdatum",
|
||||
"toPlaceholder": "Enddatum"
|
||||
}
|
||||
},
|
||||
"context": {
|
||||
"scheduledFor": "Geplant für",
|
||||
"takenAt": "Eingenommen um",
|
||||
"markedBy": "Markiert von",
|
||||
"source": "Markiert ueber",
|
||||
"sourceOwnerApp": "Haupt-App",
|
||||
"sourceSharedLink": "Geteilter Einnahme-Link",
|
||||
"sourceAutomaticReminder": "Automatische Erinnerungslogik",
|
||||
"statusTaken": "Eingenommen",
|
||||
"statusSkipped": "Übersprungen",
|
||||
"notRecorded": "Nicht erfasst",
|
||||
"self": "Du"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Der Journal-Eintrag konnte nicht geladen werden.",
|
||||
"historyFailed": "Der Journal-Verlauf konnte nicht geladen werden.",
|
||||
"saveFailed": "Die Journal-Notiz konnte nicht gespeichert werden.",
|
||||
"deleteFailed": "Die Journal-Notiz konnte nicht gelöscht werden.",
|
||||
"emptySharedNote": "Geteilte Links koennen Journal-Notizen nicht leeren. Gib eine Notiz ein oder schliesse den Dialog.",
|
||||
"noEventSelected": "Es ist kein Journal-Eintrag ausgewählt."
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"name": "Name",
|
||||
"pills": "Tabletten",
|
||||
@@ -604,10 +662,16 @@
|
||||
"deleteAccount": "Konto löschen",
|
||||
"deleteAccountConfirmTitle": "Konto löschen?",
|
||||
"deleteAccountConfirmText": "Dadurch werden dein Konto und alle deine Daten (Medikamente, Einstellungen, Verlauf) dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.",
|
||||
"deleteAccountButton": "Ja, mein Konto löschen"
|
||||
"deleteAccountButton": "Ja, mein Konto löschen",
|
||||
"connectionErrorTitle": "Verbindungsfehler",
|
||||
"connectionErrorHelp": "Bitte prüfe, ob der Server läuft, und versuche es erneut.",
|
||||
"sessionExpiredTitle": "Sitzung abgelaufen",
|
||||
"sessionExpiredHelp": "Bitte melde dich erneut an, um mit deiner Besitzersitzung fortzufahren."
|
||||
},
|
||||
"common": {
|
||||
"loading": "Wird geladen...",
|
||||
"initializing": "Initialisierung...",
|
||||
"retry": "Erneut versuchen",
|
||||
"sending": "Wird gesendet...",
|
||||
"sent": "Gesendet!",
|
||||
"sendFailed": "Senden fehlgeschlagen",
|
||||
@@ -632,6 +696,7 @@
|
||||
"back": "Zurück",
|
||||
"cancel": "Abbrechen",
|
||||
"close": "Schließen",
|
||||
"hide": "Ausblenden",
|
||||
"edit": "Bearbeiten",
|
||||
"view": "Ansehen",
|
||||
"delete": "Löschen",
|
||||
@@ -676,6 +741,13 @@
|
||||
"allPeople": "Alle",
|
||||
"selectPerson": "Person auswählen",
|
||||
"selectPeriod": "Zeitraum auswählen",
|
||||
"selectExpiry": "Link-Ablauf",
|
||||
"allowJournalNotes": "Diesem geteilten Link das Anzeigen und Bearbeiten von Journal-Notizen erlauben",
|
||||
"journalNotesEnabled": "Journal anzeigen/bearbeiten erlaubt",
|
||||
"expiryNever": "Laeuft nicht ab",
|
||||
"expiry7Days": "Laeuft in 7 Tagen ab",
|
||||
"expiry30Days": "Laeuft in 30 Tagen ab",
|
||||
"expiry90Days": "Laeuft in 90 Tagen ab",
|
||||
"generateLink": "Link generieren",
|
||||
"generating": "Wird generiert...",
|
||||
"generateAnother": "Weiteren Link generieren",
|
||||
@@ -685,9 +757,21 @@
|
||||
"copyLink": "Link kopieren",
|
||||
"copyOverviewLink": "Übersichts-Link kopieren",
|
||||
"copied": "In Zwischenablage kopiert!",
|
||||
"activeLinksTitle": "Aktive Teilen-Links",
|
||||
"loadingActiveLinks": "Aktive Teilen-Links werden geladen...",
|
||||
"noActiveLinks": "Noch keine aktiven Teilen-Links.",
|
||||
"manageLinksSummary": "Aktive Teilen-Links verwalten",
|
||||
"generateFailed": "Freigabelink konnte nicht erstellt werden",
|
||||
"revokeFailed": "Freigabelink konnte nicht widerrufen werden",
|
||||
"activeLinkMeta": "{{days}} Tage, erstellt {{createdAt}}",
|
||||
"activeLinkMetaWithExpiry": "{{days}} Tage, erstellt {{createdAt}}, Ablauf {{expiresAt}}",
|
||||
"revoke": "Widerrufen",
|
||||
"revoking": "Wird widerrufen...",
|
||||
"revokeConfirm": "Den aktiven Teilen-Link fuer {{person}} widerrufen?",
|
||||
"noPeople": "Keine Medikamente mit 'Eingenommen von' zugewiesen. Füge zuerst eine Person zu einem Medikament hinzu.",
|
||||
"scheduleFor": "Zeitplan für",
|
||||
"period": "Zeitraum",
|
||||
"publicAccessHelp": "Dieser Teilen-Link zeigt nur den ausgewaehlten Zeitplan und geteilte Dosisaktionen. Einstellungen und voller Kontozugriff bleiben in der Haupt-App.",
|
||||
"noSchedule": "Keine geplanten Einnahmen gefunden.",
|
||||
"generatedBy": "Erstellt von",
|
||||
"notFound": "Teilen-Link nicht gefunden",
|
||||
@@ -755,6 +839,24 @@
|
||||
"confirmImportEmpty": "Daten importieren?",
|
||||
"confirmImportEmptyMessage": "Alle Medikamente, Einnahmehistorie, Einstellungen und Teilen-Links aus der ausgewählten Datei werden importiert.",
|
||||
"confirmButtonEmpty": "Importieren",
|
||||
"reviewDescription": "Prüfe den validierten Sicherungsinhalt, bevor deine aktuellen Installationsdaten ersetzt werden.",
|
||||
"reviewDescriptionEmpty": "Prüfe den validierten Sicherungsinhalt, bevor er in diese Installation importiert wird.",
|
||||
"incomingData": "Importdatei",
|
||||
"currentData": "Aktuelle Daten",
|
||||
"summaryCounts": "{{medications}} Medikamente, {{doses}} Dosen, {{refills}} Nachfüllungen, {{shares}} Teilen-Links",
|
||||
"formatVersion": "Formatversion: {{version}}",
|
||||
"exportedAt": "Exportiert am: {{date}}",
|
||||
"settingsIncluded": "Einstellungen enthalten",
|
||||
"settingsConfigured": "Einstellungen aktuell konfiguriert",
|
||||
"journalEntries": "{{count}} Journaleinträge",
|
||||
"imageCount": "{{count}} eingebettete Bilder",
|
||||
"warningListTitle": "Warnungen",
|
||||
"warningReplaceData": "Deine aktuellen Medikamente, die Einnahmehistorie, Einstellungen und Teilen-Links werden ersetzt.",
|
||||
"warningShareLinks": "Importierte Teilen-Links erhalten beim Wiederherstellen aus Sicherheitsgründen neue Tokens.",
|
||||
"warningImages": "Eingebettete Bilder vergrößern den Import und können die Wiederherstellung verlängern.",
|
||||
"warningSensitive": "Diese Sicherung enthält sensible Benachrichtigungsdaten.",
|
||||
"backupFirst": "Aktuelle Sicherung zuerst herunterladen",
|
||||
"backupHint": "Empfohlen: exportiere zuerst deine aktuellen Daten, bevor du den Import bestätigst.",
|
||||
"cancelButton": "Abbrechen",
|
||||
"exportSuccess": "Daten erfolgreich exportiert",
|
||||
"importSuccess": "Daten erfolgreich importiert",
|
||||
@@ -836,6 +938,9 @@
|
||||
"button": "Bericht",
|
||||
"title": "Medikamentenbericht",
|
||||
"description": "Erstelle ein Dokument mit detaillierten Medikamenteninformationen für deinen Arzt oder deine persönlichen Unterlagen.",
|
||||
"dateRange": "Zeitraum",
|
||||
"from": "Von",
|
||||
"until": "Bis",
|
||||
"selectAll": "Alle auswählen",
|
||||
"deselectAll": "Alle abwählen",
|
||||
"activeMeds": "Aktive Medikamente",
|
||||
@@ -845,12 +950,19 @@
|
||||
"formatMd": "Markdown (.md)",
|
||||
"formatPdf": "PDF (Drucken)",
|
||||
"generate": "Erstellen",
|
||||
"regenerate": "Vorschau aktualisieren",
|
||||
"generating": "Wird erstellt...",
|
||||
"download": "Herunterladen",
|
||||
"preview": "Vorschau",
|
||||
"previewDescription": "Prüfe den generierten Bericht vor dem Export.",
|
||||
"invalidDateRange": "Wähle einen gültigen Zeitraum.",
|
||||
"error": "Der Bericht konnte nicht erstellt werden. Bitte versuche es erneut.",
|
||||
"noSelection": "Wähle mindestens ein Medikament aus",
|
||||
"filterByPerson": "Bericht für",
|
||||
"allPeople": "Alle Personen",
|
||||
"docTitle": "Medikamentenbericht",
|
||||
"docGenerated": "Erstellt am",
|
||||
"docRange": "Berichtszeitraum",
|
||||
"docGeneral": "Allgemein",
|
||||
"docCommercialName": "Handelsname",
|
||||
"docGenericName": "Wirkstoff",
|
||||
|
||||
+113
-1
@@ -102,6 +102,64 @@
|
||||
"needsRefill": "Needs refill"
|
||||
}
|
||||
},
|
||||
"journal": {
|
||||
"actions": {
|
||||
"note": "Note",
|
||||
"noteTakenOnly": "Notes are only available for taken or skipped doses.",
|
||||
"history": "Journal history",
|
||||
"historyShort": "Journal"
|
||||
},
|
||||
"editor": {
|
||||
"addTitle": "Add journal note",
|
||||
"editTitle": "Edit journal note",
|
||||
"description": "Capture what happened for this intake without changing the existing take or skip status.",
|
||||
"loading": "Loading journal entry...",
|
||||
"noteLabel": "Journal note",
|
||||
"notePlaceholder": "What should you remember about this intake?",
|
||||
"saving": "Saving...",
|
||||
"deleting": "Deleting..."
|
||||
},
|
||||
"history": {
|
||||
"title": "Journal history",
|
||||
"description": "Browse saved intake notes by medication or date, then reopen an entry in edit mode.",
|
||||
"loading": "Loading journal history...",
|
||||
"empty": "No journal entries match the current filters.",
|
||||
"noNote": "No note saved.",
|
||||
"reload": "Reload",
|
||||
"resetFilters": "Reset filters",
|
||||
"reopen": "Reopen note",
|
||||
"updatedAt": "Updated {{date}}",
|
||||
"filters": {
|
||||
"medication": "Medication",
|
||||
"allMedications": "All medications",
|
||||
"from": "From",
|
||||
"to": "To",
|
||||
"fromPlaceholder": "Start date",
|
||||
"toPlaceholder": "End date"
|
||||
}
|
||||
},
|
||||
"context": {
|
||||
"scheduledFor": "Scheduled for",
|
||||
"takenAt": "Taken at",
|
||||
"markedBy": "Marked by",
|
||||
"source": "Marked via",
|
||||
"sourceOwnerApp": "Main app",
|
||||
"sourceSharedLink": "Shared intake link",
|
||||
"sourceAutomaticReminder": "Automatic reminder logic",
|
||||
"statusTaken": "Taken",
|
||||
"statusSkipped": "Skipped",
|
||||
"notRecorded": "Not recorded",
|
||||
"self": "You"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Journal entry could not be loaded.",
|
||||
"historyFailed": "Journal history could not be loaded.",
|
||||
"saveFailed": "Journal note could not be saved.",
|
||||
"deleteFailed": "Journal note could not be deleted.",
|
||||
"emptySharedNote": "Shared links cannot clear journal notes. Enter a note or close the dialog.",
|
||||
"noEventSelected": "No journal entry is selected."
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"name": "Name",
|
||||
"pills": "Pills",
|
||||
@@ -604,10 +662,16 @@
|
||||
"deleteAccount": "Delete Account",
|
||||
"deleteAccountConfirmTitle": "Delete Account?",
|
||||
"deleteAccountConfirmText": "This will permanently delete your account and all your data (medications, settings, history). This action cannot be undone.",
|
||||
"deleteAccountButton": "Yes, delete my account"
|
||||
"deleteAccountButton": "Yes, delete my account",
|
||||
"connectionErrorTitle": "Connection Error",
|
||||
"connectionErrorHelp": "Please check if the server is running and try again.",
|
||||
"sessionExpiredTitle": "Session expired",
|
||||
"sessionExpiredHelp": "Please sign in again to continue your owner session."
|
||||
},
|
||||
"common": {
|
||||
"loading": "Loading...",
|
||||
"initializing": "Initializing...",
|
||||
"retry": "Retry",
|
||||
"sending": "Sending...",
|
||||
"sent": "Sent!",
|
||||
"sendFailed": "Failed to send",
|
||||
@@ -632,6 +696,7 @@
|
||||
"back": "Back",
|
||||
"cancel": "Cancel",
|
||||
"close": "Close",
|
||||
"hide": "Hide",
|
||||
"edit": "Edit",
|
||||
"view": "View",
|
||||
"delete": "Delete",
|
||||
@@ -676,6 +741,13 @@
|
||||
"allPeople": "Everyone",
|
||||
"selectPerson": "Select person",
|
||||
"selectPeriod": "Select time period",
|
||||
"selectExpiry": "Link expiry",
|
||||
"allowJournalNotes": "Allow this shared link to view and edit journal notes",
|
||||
"journalNotesEnabled": "Journal view/edit enabled",
|
||||
"expiryNever": "Never expires",
|
||||
"expiry7Days": "Expires in 7 days",
|
||||
"expiry30Days": "Expires in 30 days",
|
||||
"expiry90Days": "Expires in 90 days",
|
||||
"generateLink": "Generate Link",
|
||||
"generating": "Generating...",
|
||||
"generateAnother": "Generate another link",
|
||||
@@ -685,9 +757,21 @@
|
||||
"copyLink": "Copy Link",
|
||||
"copyOverviewLink": "Copy Overview Link",
|
||||
"copied": "Copied to clipboard!",
|
||||
"activeLinksTitle": "Active share links",
|
||||
"loadingActiveLinks": "Loading active share links...",
|
||||
"noActiveLinks": "No active share links yet.",
|
||||
"manageLinksSummary": "Manage active share links",
|
||||
"generateFailed": "Failed to generate share link",
|
||||
"revokeFailed": "Failed to revoke share link",
|
||||
"activeLinkMeta": "{{days}} days, created {{createdAt}}",
|
||||
"activeLinkMetaWithExpiry": "{{days}} days, created {{createdAt}}, expires {{expiresAt}}",
|
||||
"revoke": "Revoke",
|
||||
"revoking": "Revoking...",
|
||||
"revokeConfirm": "Revoke the active share link for {{person}}?",
|
||||
"noPeople": "No medications with 'Taken by' assigned. Add a person to a medication first.",
|
||||
"scheduleFor": "Schedule for",
|
||||
"period": "Period",
|
||||
"publicAccessHelp": "This shared link only exposes the selected schedule and shared dose actions. Owner settings and full account access stay in the main app.",
|
||||
"noSchedule": "No scheduled doses found.",
|
||||
"generatedBy": "Generated by",
|
||||
"notFound": "Share link not found",
|
||||
@@ -755,6 +839,24 @@
|
||||
"confirmImportEmpty": "Import Data?",
|
||||
"confirmImportEmptyMessage": "This will import all medications, dose history, settings, and share links from the selected file.",
|
||||
"confirmButtonEmpty": "Import",
|
||||
"reviewDescription": "Review the validated backup contents before replacing your current installation data.",
|
||||
"reviewDescriptionEmpty": "Review the validated backup contents before importing them into this installation.",
|
||||
"incomingData": "Import file",
|
||||
"currentData": "Current data",
|
||||
"summaryCounts": "{{medications}} medications, {{doses}} doses, {{refills}} refills, {{shares}} share links",
|
||||
"formatVersion": "Format version: {{version}}",
|
||||
"exportedAt": "Exported at: {{date}}",
|
||||
"settingsIncluded": "Settings included",
|
||||
"settingsConfigured": "Settings currently configured",
|
||||
"journalEntries": "{{count}} journal entries",
|
||||
"imageCount": "{{count}} embedded images",
|
||||
"warningListTitle": "Warnings",
|
||||
"warningReplaceData": "Your current medications, dose history, settings, and share links will be replaced.",
|
||||
"warningShareLinks": "Imported share links will get new tokens during restore for security.",
|
||||
"warningImages": "Embedded images increase import size and may take longer to restore.",
|
||||
"warningSensitive": "This backup includes sensitive notification data.",
|
||||
"backupFirst": "Download current backup first",
|
||||
"backupHint": "Recommended: export your current data before confirming the import.",
|
||||
"cancelButton": "Cancel",
|
||||
"exportSuccess": "Data exported successfully",
|
||||
"importSuccess": "Data imported successfully",
|
||||
@@ -836,6 +938,9 @@
|
||||
"button": "Report",
|
||||
"title": "Medication Report",
|
||||
"description": "Generate a document with detailed medication information for your doctor or personal records.",
|
||||
"dateRange": "Date range",
|
||||
"from": "From",
|
||||
"until": "Until",
|
||||
"selectAll": "Select all",
|
||||
"deselectAll": "Deselect all",
|
||||
"activeMeds": "Active Medications",
|
||||
@@ -845,12 +950,19 @@
|
||||
"formatMd": "Markdown (.md)",
|
||||
"formatPdf": "PDF (Print)",
|
||||
"generate": "Generate",
|
||||
"regenerate": "Refresh preview",
|
||||
"generating": "Generating...",
|
||||
"download": "Download",
|
||||
"preview": "Preview",
|
||||
"previewDescription": "Review the generated report before exporting it.",
|
||||
"invalidDateRange": "Choose a valid date range.",
|
||||
"error": "Could not generate the report. Please try again.",
|
||||
"noSelection": "Select at least one medication",
|
||||
"filterByPerson": "Report for",
|
||||
"allPeople": "Everyone",
|
||||
"docTitle": "Medication Report",
|
||||
"docGenerated": "Generated on",
|
||||
"docRange": "Report range",
|
||||
"docGeneral": "General",
|
||||
"docCommercialName": "Commercial Name",
|
||||
"docGenericName": "Generic Name",
|
||||
|
||||
Reference in New Issue
Block a user