From d3d042e53944f0bd5a7d010147270eccca54a43c Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Tue, 28 May 2024 14:24:22 +0300 Subject: [PATCH 01/14] RED-9208 - Rule editor: Display of error disappears when saving before checking for warnings (dry run) --- .../admin/screens/rules/rules-screen/rules-screen.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts index 2d5fa0dfb..1e2396d05 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.ts @@ -131,6 +131,7 @@ export class RulesScreenComponent implements OnInit, ComponentCanDeactivate { async save(): Promise { this._loadingService.start(); this.#removeErrorMarkers(); + clearTimeout(this.#ruleValidationTimeout); await this.#uploadRules(); } From b6491f9d6a07e99f071054aa7eefb05302a1a77f Mon Sep 17 00:00:00 2001 From: project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1 Date: Wed, 29 May 2024 01:04:14 +0000 Subject: [PATCH 02/14] push back localazy update --- apps/red-ui/src/assets/i18n/redact/de.json | 168 ++++++++++----------- apps/red-ui/src/assets/i18n/redact/en.json | 40 ++--- apps/red-ui/src/assets/i18n/scm/de.json | 148 +++++++++--------- apps/red-ui/src/assets/i18n/scm/en.json | 2 +- 4 files changed, 179 insertions(+), 179 deletions(-) diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 90fedd7ab..67efc99c7 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -254,6 +254,9 @@ "watermarks": "Watermarks" }, "analysis-disabled": "", + "annotation": { + "pending": "(Pending analysis)" + }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -294,7 +297,7 @@ }, "force-hint": { "error": "Failed to save hint: {error}", - "success": "Hint added!" + "success": "Hint added" }, "force-redaction": { "error": "Die Schwärzung konnte nicht gespeichert werden!", @@ -308,14 +311,14 @@ "error": "Rekategorisierung des Bildes gescheitert: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove-hint": { - "error": "Failed to remove hint: {error}", - "success": "Hint removed!" - }, "remove": { "error": "Fehler beim Entfernen der Schwärzung: {error}", "success": "Schwärzung entfernt!" }, + "remove-hint": { + "error": "Failed to remove hint: {error}", + "success": "Hint removed" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "erfolgreich Rückgängig gemacht" @@ -328,15 +331,15 @@ "remove-highlights": { "label": "Remove selected earmarks" }, + "resize": { + "label": "Größe ändern" + }, "resize-accept": { "label": "Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, - "resize": { - "label": "Größe ändern" - }, "see-references": { "label": "See references" }, @@ -368,9 +371,6 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, - "annotation": { - "pending": "(Pending analysis)" - }, "archived-dossiers-listing": { "no-data": { "title": "No archived dossiers." @@ -562,7 +562,7 @@ "state-placeholder": "Select another state" }, "question": "Select another state to replace the current {count, plural, one{dossier} other{dossier}} state", - "success": "Successfully deleted state!", + "success": "Successfully deleted state", "title": "Delete dossier state", "warning": "The {name} state is assigned to {count} {count, plural, one{dossier} other{dossiers}}." }, @@ -576,14 +576,18 @@ "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!" }, "confirmation-dialog": { + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", + "title": "Warnung!" + }, "approve-file-without-analysis": { "confirmationText": "Approve without analysis", "denyText": "Cancel", "question": "Analysis required to detect new redactions.", "title": "Warning!" }, - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -592,10 +596,6 @@ "question": "Analysis required to detect new redactions for at least one file.", "title": "Warning" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", - "title": "Warnung!" - }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?", @@ -730,11 +730,11 @@ "actions": { "back": "Back", "cancel": "Cancel", - "certificate-not-valid-error": "Uploaded certificate is not valid!", + "certificate-not-valid-error": "Uploaded certificate is invalid.", "continue": "Continue", "save": "Save configurations", - "save-error": "Failed to save digital signature!", - "save-success": "Digital signature certificate successfully saved!" + "save-error": "Failed to save digital signature", + "save-success": "Digital signature certificate saved successfully" }, "forms": { "kms": { @@ -777,8 +777,8 @@ "delete-success": "Die digitale Signatur wurde gelöscht. Geschwärzte Dateien werden nicht länger mit einer Signatur versehen!", "remove": "Remove", "save": "Digitale Signatur speichern", - "save-error": "Failed to save digital signature!", - "save-success": "Digital signature certificate successfully saved!" + "save-error": "Failed to save digital signature", + "save-success": "Digital signature certificate saved successfully" }, "no-data": { "action": "Zertifikat hochladen", @@ -836,7 +836,7 @@ "add-new": "Neues Dossier", "archive": { "action": "Archive dossier", - "archive-failed": "Failed to archive dossier {dossierName}!", + "archive-failed": "Failed to archive dossier {dossierName}", "archive-succeeded": "Successfully archived dossier {dossierName}." }, "delete": { @@ -959,13 +959,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Niemandem zugewiesen" }, + "reanalyse": { + "action": "Datei analysieren" + }, "reanalyse-dossier": { "error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.", "success": "Dateien für Reanalyse vorgesehen." }, - "reanalyse": { - "action": "Datei analysieren" - }, "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", "table-col-names": { @@ -998,7 +998,7 @@ "dossier-states": "{count, plural, one{Dossier state} other{Dossier states}}" }, "error": { - "conflict": "Dossier state with this name already exists!", + "conflict": "Dossier state with this name already exists", "generic": "Failed to save dossier state!" }, "no-data": { @@ -1035,6 +1035,14 @@ "total-documents": "Anzahl der Dokumente", "total-people": "{count} {count, plural, one{user} other {users}}" }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Active", + "inactive": "Inactive", + "incomplete": "Incomplete" + } + }, "dossier-templates-listing": { "action": { "clone": "Clone template", @@ -1070,14 +1078,6 @@ "title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}" } }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Active", - "inactive": "Inactive", - "incomplete": "Incomplete" - } - }, "dossier-watermark-selector": { "heading": "Watermarks on documents", "no-watermark": "There is no watermark defined for the dossier template.
Contact your app admin to define one.", @@ -1273,9 +1273,18 @@ "title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}" } }, + "entity": { + "info": { + "actions": { + "revert": "Revert", + "save": "Save changes" + }, + "heading": "Edit entity" + } + }, "entity-rules-screen": { "error": { - "generic": "Something went wrong... Entity rules update failed!" + "generic": "An error ocurred... Entity rules update failed!" }, "errors-found": "{errors, plural, one{An error} other{{errors} errors}} found in rules", "revert-changes": "Revert", @@ -1287,28 +1296,19 @@ "warning-text": "Warning: experimental feature!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules" }, - "entity": { - "info": { - "actions": { - "revert": "Revert", - "save": "Save changes" - }, - "heading": "Edit entity" - } - }, "error": { "deleted-entity": { "dossier": { "action": "Zurück zur Übersicht", "label": "Dieses Dossier wurde gelöscht!" }, - "file-dossier": { - "action": "Zurück zur Übersicht", - "label": "Das Dossier dieser Datei wurde gelöscht!" - }, "file": { "action": "Zurück zum Dossier", "label": "Diese Datei wurde gelöscht!" + }, + "file-dossier": { + "action": "Zurück zur Übersicht", + "label": "Das Dossier dieser Datei wurde gelöscht!" } }, "file-preview": { @@ -1326,6 +1326,12 @@ }, "exact-date": "{day} {month} {year} um {hour}:{minute} Uhr", "file": "Datei", + "file-attribute": { + "update": { + "error": "Failed to update file attribute value!", + "success": "File attribute value has been updated successfully!" + } + }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1336,12 +1342,6 @@ "number": "Nummer", "text": "Freier Text" }, - "file-attribute": { - "update": { - "error": "Failed to update file attribute value!", - "success": "File attribute value has been updated successfully!" - } - }, "file-attributes-configurations": { "cancel": "Cancel", "form": { @@ -1560,15 +1560,6 @@ "csv": "File attributes were imported successfully from uploaded CSV file." } }, - "filter-menu": { - "filter-options": "Filteroptionen", - "filter-types": "Filter", - "label": "Filter", - "pages-without-annotations": "Only pages without annotations", - "redaction-changes": "Nur Anmerkungen mit Schwärzungsänderungen", - "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", - "with-comments": "Nur Anmerkungen mit Kommentaren" - }, "filter": { "analysis": "Analyse erforderlich", "comment": "Kommentare", @@ -1578,6 +1569,15 @@ "redaction": "Geschwärzt", "updated": "Aktualisiert" }, + "filter-menu": { + "filter-options": "Filteroptionen", + "filter-types": "Filter", + "label": "Filter", + "pages-without-annotations": "Only pages without annotations", + "redaction-changes": "Nur Anmerkungen mit Schwärzungsänderungen", + "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", + "with-comments": "Nur Anmerkungen mit Kommentaren" + }, "filters": { "assigned-people": "Beauftragt", "documents-status": "Documents state", @@ -1850,6 +1850,13 @@ "user-promoted-to-approver": "{user} wurde im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} zum Genehmiger ernannt!", "user-removed-as-dossier-member": "{user} wurde als Mitglied von: {dossierHref, select, null{{dossierName}} other{{dossierName}}} entfernt!" }, + "notifications": { + "button-text": "Notifications", + "deleted-dossier": "Deleted dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" + }, "notifications-screen": { "category": { "email-notifications": "E-Mail Benachrichtigungen", @@ -1863,7 +1870,6 @@ "dossier": "Dossierbezogene Benachrichtigungen", "other": "Andere Benachrichtigungen" }, - "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin", @@ -1881,6 +1887,7 @@ "USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde", "USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere" }, + "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofortig", @@ -1888,13 +1895,6 @@ }, "title": "Benachrichtigungseinstellungen" }, - "notifications": { - "button-text": "Notifications", - "deleted-dossier": "Deleted dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" - }, "ocr": { "confirmation-dialog": { "cancel": "Cancel", @@ -1986,16 +1986,16 @@ "warnings-label": "Prompts and dialogs", "warnings-subtitle": "Do not show again options" }, + "processing": { + "basic": "Processing", + "ocr": "OCR" + }, "processing-status": { "ocr": "OCR", "pending": "Pending", "processed": "processed", "processing": "Processing" }, - "processing": { - "basic": "Processing", - "ocr": "OCR" - }, "readonly": "Lesemodus", "readonly-archived": "Read only (archived)", "redact-text": { @@ -2219,6 +2219,12 @@ "red-user-admin": "Benutzer-Admin", "regular": "Regulär" }, + "search": { + "active-dossiers": "ganze Plattform", + "all-dossiers": "all documents", + "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", + "this-dossier": "in diesem Dossier" + }, "search-screen": { "cols": { "assignee": "Bevollmächtigter", @@ -2242,12 +2248,6 @@ "no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.", "table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}" }, - "search": { - "active-dossiers": "ganze Plattform", - "all-dossiers": "all documents", - "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", - "this-dossier": "in diesem Dossier" - }, "seconds": "seconds", "size": "Size", "smtp-auth-config": { @@ -2502,4 +2502,4 @@ } }, "yesterday": "Gestern" -} +} \ No newline at end of file diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index d32325645..860fd294f 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -280,7 +280,7 @@ }, "remove": { "error": "Failed to remove dictionary entry: {error}", - "success": "Dictionary entry removed!" + "success": "Dictionary entry removed" }, "undo": { "error": "Failed to undo: {error}", @@ -290,15 +290,15 @@ "manual-redaction": { "add": { "error": "Failed to save redaction: {error}", - "success": "Redaction added!" + "success": "Redaction added" }, "force-hint": { "error": "Failed to save hint: {error}", - "success": "Hint added!" + "success": "Hint added" }, "force-redaction": { "error": "Failed to save redaction: {error}", - "success": "Redaction added!" + "success": "Redaction added" }, "recategorize-annotation": { "error": "Failed to edit type: {error}", @@ -310,11 +310,11 @@ }, "remove-hint": { "error": "Failed to remove hint: {error}", - "success": "Hint removed!" + "success": "Hint removed" }, "remove": { "error": "Failed to remove redaction: {error}", - "success": "Redaction removed!" + "success": "Redaction removed" }, "undo": { "error": "Failed to undo: {error}", @@ -455,7 +455,7 @@ }, "auth-error": { "heading": "Your user is successfully logged in but has no role assigned yet. Please contact your RedactManager administrator to assign appropriate roles.", - "heading-with-link": "Your user is successfully logged in but has no role assigned yet. Please contact your RedactManager administrator to assign appropriate roles!", + "heading-with-link": "Your user is successfully logged in but has no role assigned yet. Please ask your RedactManager administrator to assign a role to you.", "heading-with-name": "Your user is successfully logged in but has no role assigned yet. Please contact {adminName} to assign appropriate roles.", "heading-with-name-and-link": "Your user is successfully logged in but has no role assigned yet. Please contact {adminName} to assign appropriate roles.", "logout": "Logout" @@ -562,7 +562,7 @@ "state-placeholder": "Select another state" }, "question": "Select another state to replace the current {count, plural, one{dossier} other{dossier}} state", - "success": "Successfully deleted state!", + "success": "Successfully deleted state", "title": "Delete dossier state", "warning": "The {name} state is assigned to {count} {count, plural, one{dossier} other{dossiers}}." }, @@ -715,14 +715,14 @@ "download": "Download current entries", "error": { "400": "Cannot update dictionary because at least one of the newly added words where recognized as a general term that appear too often in texts.", - "generic": "Something went wrong... Dictionary update failed!" + "generic": "An error occurred... Dictionary update failed!" }, "revert-changes": "Revert", "save-changes": "Save changes", "search": "Search entries...", "select-dictionary": "Select a dictionary above to compare with the current one.", "success": { - "generic": "Dictionary updated!" + "generic": "Dictionary updated" } }, "digital-signature": "Digital signature", @@ -730,11 +730,11 @@ "actions": { "back": "Back", "cancel": "Cancel", - "certificate-not-valid-error": "Uploaded certificate is not valid!", + "certificate-not-valid-error": "Uploaded certificate is invalid.", "continue": "Continue", "save": "Save configurations", - "save-error": "Failed to save digital signature!", - "save-success": "Digital signature certificate successfully saved!" + "save-error": "Failed to save digital signature", + "save-success": "Digital signature certificate saved successfully" }, "forms": { "kms": { @@ -774,11 +774,11 @@ "digital-signature-screen": { "action": { "delete-error": "Failed to remove digital signature, please try again.", - "delete-success": "Digital signature removed. Redacted files will no longer be signed!", + "delete-success": "Digital signature removed. Redacted files will no longer be signed.", "remove": "Remove", "save": "Save changes", - "save-error": "Failed to save digital signature!", - "save-success": "Digital signature certificate successfully saved!" + "save-error": "Failed to save digital signature", + "save-success": "Digital signature certificate saved successfully" }, "no-data": { "action": "Configure certificate", @@ -836,7 +836,7 @@ "add-new": "New dossier", "archive": { "action": "Archive dossier", - "archive-failed": "Failed to archive dossier {dossierName}!", + "archive-failed": "Failed to archive dossier {dossierName}", "archive-succeeded": "Successfully archived dossier {dossierName}." }, "delete": { @@ -998,7 +998,7 @@ "dossier-states": "{count, plural, one{Dossier state} other{Dossier states}}" }, "error": { - "conflict": "Dossier state with this name already exists!", + "conflict": "Dossier state with this name already exists", "generic": "Failed to save dossier state!" }, "no-data": { @@ -1275,7 +1275,7 @@ }, "entity-rules-screen": { "error": { - "generic": "Something went wrong... Entity rules update failed!" + "generic": "An error ocurred... Entity rules update failed!" }, "errors-found": "{errors, plural, one{An error} other{{errors} errors}} found in rules", "revert-changes": "Revert", @@ -2502,4 +2502,4 @@ } }, "yesterday": "Yesterday" -} +} \ No newline at end of file diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json index 167bac680..f04ac163a 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -254,6 +254,9 @@ "watermarks": "Watermarks" }, "analysis-disabled": "Analysis disabled", + "annotation": { + "pending": "(Pending analysis)" + }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -308,14 +311,14 @@ "error": "Rekategorisierung des Bildes gescheitert: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove-hint": { - "error": "Failed to remove hint: {error}", - "success": "Hint removed!" - }, "remove": { "error": "Fehler beim Entfernen der Schwärzung: {error}", "success": "Schwärzung entfernt!" }, + "remove-hint": { + "error": "Failed to remove hint: {error}", + "success": "Hint removed!" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "erfolgreich Rückgängig gemacht" @@ -328,15 +331,15 @@ "remove-highlights": { "label": "Remove selected earmarks" }, + "resize": { + "label": "Größe ändern" + }, "resize-accept": { "label": "Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, - "resize": { - "label": "Größe ändern" - }, "see-references": { "label": "See references" }, @@ -368,9 +371,6 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, - "annotation": { - "pending": "(Pending analysis)" - }, "archived-dossiers-listing": { "no-data": { "title": "No archived dossiers." @@ -576,14 +576,18 @@ "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!" }, "confirmation-dialog": { + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", + "title": "Warnung!" + }, "approve-file-without-analysis": { "confirmationText": "Approve without analysis", "denyText": "Cancel", "question": "Analysis required to detect new components.", "title": "Warning!" }, - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -592,10 +596,6 @@ "question": "Analysis required to detect new components for at least one file.", "title": "Warning" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", - "title": "Warnung!" - }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?", @@ -959,13 +959,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Niemandem zugewiesen" }, + "reanalyse": { + "action": "Datei analysieren" + }, "reanalyse-dossier": { "error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.", "success": "Dateien für Reanalyse vorgesehen." }, - "reanalyse": { - "action": "Datei analysieren" - }, "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", "table-col-names": { @@ -1035,6 +1035,14 @@ "total-documents": "Anzahl der Dokumente", "total-people": "{count} {count, plural, one{user} other {users}}" }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Active", + "inactive": "Inactive", + "incomplete": "Incomplete" + } + }, "dossier-templates-listing": { "action": { "clone": "Clone template", @@ -1070,14 +1078,6 @@ "title": "{length} dossier {length, plural, one{template} other{templates}}" } }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Active", - "inactive": "Inactive", - "incomplete": "Incomplete" - } - }, "dossier-watermark-selector": { "heading": "Watermarks on documents", "no-watermark": "There is no watermark defined for the dossier template.
Contact your app admin to define one.", @@ -1273,6 +1273,15 @@ "title": "{length} {length, plural, one{entity} other{entities}}" } }, + "entity": { + "info": { + "actions": { + "revert": "Revert", + "save": "Save changes" + }, + "heading": "Edit entity" + } + }, "entity-rules-screen": { "error": { "generic": "Something went wrong... Entity rules update failed!" @@ -1287,28 +1296,19 @@ "warning-text": "Warning: experimental feature!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules" }, - "entity": { - "info": { - "actions": { - "revert": "Revert", - "save": "Save changes" - }, - "heading": "Edit entity" - } - }, "error": { "deleted-entity": { "dossier": { "action": "Zurück zur Übersicht", "label": "Dieses Dossier wurde gelöscht!" }, - "file-dossier": { - "action": "Zurück zur Übersicht", - "label": "Das Dossier dieser Datei wurde gelöscht!" - }, "file": { "action": "Zurück zum Dossier", "label": "Diese Datei wurde gelöscht!" + }, + "file-dossier": { + "action": "Zurück zur Übersicht", + "label": "Das Dossier dieser Datei wurde gelöscht!" } }, "file-preview": { @@ -1326,6 +1326,12 @@ }, "exact-date": "{day} {month} {year} um {hour}:{minute} Uhr", "file": "Datei", + "file-attribute": { + "update": { + "error": "Failed to update file attribute value!", + "success": "File attribute value has been updated successfully!" + } + }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1336,12 +1342,6 @@ "number": "Nummer", "text": "Freier Text" }, - "file-attribute": { - "update": { - "error": "Failed to update file attribute value!", - "success": "File attribute value has been updated successfully!" - } - }, "file-attributes-configurations": { "cancel": "Cancel", "form": { @@ -1560,15 +1560,6 @@ "csv": "File attributes were imported successfully from uploaded CSV file." } }, - "filter-menu": { - "filter-options": "Filteroptionen", - "filter-types": "Filter", - "label": "Filter", - "pages-without-annotations": "Only pages without annotations", - "redaction-changes": "Nur Anmerkungen mit Schwärzungsänderungen", - "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", - "with-comments": "Nur Anmerkungen mit Kommentaren" - }, "filter": { "analysis": "Analyse erforderlich", "comment": "Kommentare", @@ -1578,6 +1569,15 @@ "redaction": "Geschwärzt", "updated": "Aktualisiert" }, + "filter-menu": { + "filter-options": "Filteroptionen", + "filter-types": "Filter", + "label": "Filter", + "pages-without-annotations": "Only pages without annotations", + "redaction-changes": "Nur Anmerkungen mit Schwärzungsänderungen", + "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", + "with-comments": "Nur Anmerkungen mit Kommentaren" + }, "filters": { "assigned-people": "Beauftragt", "documents-status": "Documents state", @@ -1850,6 +1850,13 @@ "user-promoted-to-approver": "{user} wurde im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} zum Genehmiger ernannt!", "user-removed-as-dossier-member": "{user} wurde als Mitglied von: {dossierHref, select, null{{dossierName}} other{{dossierName}}} entfernt!" }, + "notifications": { + "button-text": "Notifications", + "deleted-dossier": "Deleted dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" + }, "notifications-screen": { "category": { "email-notifications": "E-Mail Benachrichtigungen", @@ -1863,7 +1870,6 @@ "dossier": "Dossierbezogene Benachrichtigungen", "other": "Andere Benachrichtigungen" }, - "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin", @@ -1881,6 +1887,7 @@ "USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde", "USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere" }, + "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofortig", @@ -1888,13 +1895,6 @@ }, "title": "Benachrichtigungseinstellungen" }, - "notifications": { - "button-text": "Notifications", - "deleted-dossier": "Deleted dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" - }, "ocr": { "confirmation-dialog": { "cancel": "Cancel", @@ -1986,16 +1986,16 @@ "warnings-label": "Prompts and dialogs", "warnings-subtitle": "Do not show again options" }, + "processing": { + "basic": "Processing", + "ocr": "OCR" + }, "processing-status": { "ocr": "OCR", "pending": "Pending", "processed": "Processed", "processing": "Processing" }, - "processing": { - "basic": "Processing", - "ocr": "OCR" - }, "readonly": "Lesemodus", "readonly-archived": "Read only (archived)", "redact-text": { @@ -2219,6 +2219,12 @@ "red-user-admin": "Benutzer-Admin", "regular": "Regulär" }, + "search": { + "active-dossiers": "ganze Plattform", + "all-dossiers": "all documents", + "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", + "this-dossier": "in diesem Dossier" + }, "search-screen": { "cols": { "assignee": "Bevollmächtigter", @@ -2242,12 +2248,6 @@ "no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.", "table-header": "{length} search {length, plural, one{result} other{results}}" }, - "search": { - "active-dossiers": "ganze Plattform", - "all-dossiers": "all documents", - "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", - "this-dossier": "in diesem Dossier" - }, "seconds": "seconds", "size": "Size", "smtp-auth-config": { @@ -2502,4 +2502,4 @@ } }, "yesterday": "Gestern" -} +} \ No newline at end of file diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index c0df22d62..b005ac747 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -2502,4 +2502,4 @@ } }, "yesterday": "Yesterday" -} +} \ No newline at end of file From cfe897c3a3e51119fed3ecc8344e9125657efcec Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Wed, 29 May 2024 10:53:33 +0300 Subject: [PATCH 03/14] RED-8882 - Help Mode design improvements --- libs/common-ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/common-ui b/libs/common-ui index e7fca876b..3a9f36e71 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit e7fca876bb0064ebceb6d18d721260c078a9a556 +Subproject commit 3a9f36e71b184e66eb791af19deeb258f8ec333d From 9922526fc6262eb87220b556eedd43d690a2d959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Wed, 29 May 2024 15:04:12 +0300 Subject: [PATCH 04/14] RED-6143: Updates according to comment --- .../admin/screens/info/dossier-template-info.module.ts | 9 ++++++++- .../dossier-template-actions.component.html | 1 + .../dossier-template-actions.component.ts | 1 + apps/red-ui/src/assets/i18n/redact/en.json | 4 ++-- apps/red-ui/src/assets/i18n/scm/en.json | 4 ++-- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts index adb906247..b7d6deb4e 100644 --- a/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts +++ b/apps/red-ui/src/app/modules/admin/screens/info/dossier-template-info.module.ts @@ -8,8 +8,15 @@ import { TranslateModule } from '@ngx-translate/core'; import { IqserUsersModule } from '@iqser/common-ui/lib/users'; import { SelectComponent } from '@shared/components/select/select.component'; import { DossierTemplateDetailsComponent } from './dossier-template-details/dossier-template-details.component'; +import { PendingChangesGuard } from '@guards/can-deactivate.guard'; -const routes = [{ path: '', component: DossierTemplateInfoScreenComponent }]; +const routes = [ + { + path: '', + component: DossierTemplateInfoScreenComponent, + canDeactivate: [PendingChangesGuard], + }, +]; @NgModule({ declarations: [DossierTemplateInfoScreenComponent, DossierTemplateDetailsComponent], diff --git a/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.html b/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.html index c20f6e637..77b4d562d 100644 --- a/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.html +++ b/apps/red-ui/src/app/modules/admin/shared/components/dossier-template-actions/dossier-template-actions.component.html @@ -15,6 +15,7 @@ > (); + readonly enableEdit = this._route.routeConfig?.path !== 'info'; dossierTemplate: DossierTemplate; constructor( diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index 860fd294f..9829f211f 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -28,7 +28,7 @@ }, "add-clone-dossier-template": { "save": "{type, select, clone{Clone} other{Save}}", - "save-and-edit": "{type, select, clone{Clone} other{Save}} and edit", + "save-and-edit": "{type, select, clone{Clone} other{Clone}} and edit", "title": "{type, select, clone{Clone {dossierTemplateName}} other{Create dossier template}}" }, "add-dossier-dialog": { @@ -2502,4 +2502,4 @@ } }, "yesterday": "Yesterday" -} \ No newline at end of file +} diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index b005ac747..ea0dbb2f0 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -28,7 +28,7 @@ }, "add-clone-dossier-template": { "save": "{type, select, clone{Clone} other{Save}}", - "save-and-edit": "{type, select, clone{Clone} other{Save}} and edit", + "save-and-edit": "{type, select, clone{Clone} other{Clone}} and edit", "title": "{type, select, clone{Clone {dossierTemplateName}} other{Create dossier template}}" }, "add-dossier-dialog": { @@ -2502,4 +2502,4 @@ } }, "yesterday": "Yesterday" -} \ No newline at end of file +} From 85560cc438611e7c38ba7392ba491fd76a037266 Mon Sep 17 00:00:00 2001 From: project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1 Date: Thu, 30 May 2024 01:03:52 +0000 Subject: [PATCH 05/14] push back localazy update --- apps/red-ui/src/assets/i18n/redact/de.json | 2 +- apps/red-ui/src/assets/i18n/redact/en.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 67efc99c7..671433770 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -116,7 +116,7 @@ "rank": "Rank" }, "save": "Save state", - "success": "Dossier state {type, select, edit{has been updated} creation successful{created} other{}}.", + "success": "Dossier state {type, select, edit{has been updated} create{creation successful} other{}}.", "title": "{type, select, edit{Edit {name}} create{Create} other{}} dossier state" }, "add-edit-entity": { diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index 860fd294f..520ecc613 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -116,7 +116,7 @@ "rank": "Rank" }, "save": "Save state", - "success": "Dossier state {type, select, edit{has been updated} creation successful{created} other{}}.", + "success": "Dossier state {type, select, edit{has been updated} create{creation successful} other{}}.", "title": "{type, select, edit{Edit {name}} create{Create} other{}} dossier state" }, "add-edit-entity": { From 668dff462028396f5f63fa048b8fbfaa5783200b Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Thu, 30 May 2024 17:14:47 +0300 Subject: [PATCH 06/14] RED-9191: toggle icons design fine-tuning. --- .../pdf-viewer/services/tooltips.service.ts | 27 ++++++------ .../services/viewer-header.service.ts | 43 +++++++++++-------- .../general/pdftron-action-close-compare.svg | 18 -------- .../icons/general/pdftron-action-compare.svg | 2 +- .../general/pdftron-action-disable-layers.svg | 27 +++++++----- .../pdftron-action-disable-tooltips.svg | 10 ----- .../general/pdftron-action-enable-layers.svg | 38 +++++++++------- .../pdftron-action-enable-tooltips.svg | 2 +- .../assets/icons/general/pdftron-cursor.svg | 2 +- .../icons/general/pdftron-rectangle.svg | 2 +- apps/red-ui/src/assets/pdftron/stylesheet.css | 8 ++++ 11 files changed, 89 insertions(+), 90 deletions(-) delete mode 100644 apps/red-ui/src/assets/icons/general/pdftron-action-close-compare.svg delete mode 100644 apps/red-ui/src/assets/icons/general/pdftron-action-disable-tooltips.svg diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/tooltips.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/tooltips.service.ts index e29c09630..0282bbf72 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/tooltips.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/tooltips.service.ts @@ -1,18 +1,13 @@ -import { inject, Injectable } from '@angular/core'; +import { Injectable } from '@angular/core'; import { UserPreferenceService } from '@users/user-preference.service'; -import { HeaderElements } from '../../file-preview/utils/constants'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { TranslateService } from '@ngx-translate/core'; import { PdfViewer } from './pdf-viewer.service'; import { REDDocumentViewer } from './document-viewer.service'; -import { UI_ROOT_PATH_FN } from '@common-ui/utils'; +import { HeaderElements } from '../../file-preview/utils/constants'; @Injectable() export class TooltipsService { - readonly #convertPath = inject(UI_ROOT_PATH_FN); - readonly #enableIcon = this.#convertPath('/assets/icons/general/pdftron-action-enable-tooltips.svg'); - readonly #disableIcon = this.#convertPath('/assets/icons/general/pdftron-action-disable-tooltips.svg'); - constructor( private readonly _pdf: PdfViewer, private readonly _documentViewer: REDDocumentViewer, @@ -26,17 +21,23 @@ export class TooltipsService { }); } - get toggleTooltipsBtnIcon(): string { - const tooltipsDisabled = this._userPreferenceService.getFilePreviewTooltipsPreference(); - return tooltipsDisabled ? this.#enableIcon : this.#disableIcon; - } - async toggleTooltips(): Promise { await this._userPreferenceService.toggleFilePreviewTooltipsPreference(); this._documentViewer.updateTooltipsVisibility(); + + this.updateIconState(); + this._pdf.instance.UI.updateElement(HeaderElements.TOGGLE_TOOLTIPS, { title: this.toggleTooltipsBtnTitle, - img: this.toggleTooltipsBtnIcon, }); } + + updateIconState() { + const element = this._pdf.instance.UI.iframeWindow.document.querySelector(`[data-element=${HeaderElements.TOGGLE_TOOLTIPS}]`); + if (this._userPreferenceService.getFilePreviewTooltipsPreference()) { + element.classList.add('active'); + } else { + element.classList.remove('active'); + } + } } diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/viewer-header.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/viewer-header.service.ts index 78b7dee74..1a97af173 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/viewer-header.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/viewer-header.service.ts @@ -100,7 +100,7 @@ export class ViewerHeaderService { element: HeaderElements.TOGGLE_TOOLTIPS, dataElement: HeaderElements.TOGGLE_TOOLTIPS, title: this._tooltipsService.toggleTooltipsBtnTitle, - img: this._tooltipsService.toggleTooltipsBtnIcon, + img: this.#convertPath('/assets/icons/general/pdftron-action-enable-tooltips.svg'), onClick: () => this._ngZone.run(() => this._tooltipsService.toggleTooltips()), }; } @@ -137,17 +137,6 @@ export class ViewerHeaderService { }; } - get #closeCompare(): IHeaderElement { - return { - type: 'actionButton', - element: HeaderElements.CLOSE_COMPARE_BUTTON, - dataElement: HeaderElements.CLOSE_COMPARE_BUTTON, - img: this.#convertPath('/assets/icons/general/pdftron-action-close-compare.svg'), - title: 'Leave Compare Mode', - onClick: () => this._ngZone.run(() => this.#closeCompareMode()), - }; - } - get #rotateLeft(): IHeaderElement { return { type: 'actionButton', @@ -238,6 +227,17 @@ export class ViewerHeaderService { }; } + get #closeCompare(): IHeaderElement { + return { + type: 'actionButton', + element: HeaderElements.CLOSE_COMPARE_BUTTON, + dataElement: HeaderElements.CLOSE_COMPARE_BUTTON, + img: this.#convertPath('/assets/icons/general/pdftron-action-compare.svg'), + title: 'Leave Compare Mode', + onClick: () => this._ngZone.run(() => this.#closeCompareMode()), + }; + } + get #toggleLoadAnnotations$() { return merge(this.expandedPanelEvent$, this._helpModeService.isHelpModeActive$).pipe( tap(enable => @@ -281,7 +281,6 @@ export class ViewerHeaderService { [HeaderElements.TOGGLE_TOOLTIPS], [HeaderElements.TOGGLE_LAYERS], [HeaderElements.TOGGLE_READABLE_REDACTIONS], - [HeaderElements.SHAPE_TOOL_GROUP_BUTTON], [ HeaderElements.ROTATE_LEFT_BUTTON, HeaderElements.ROTATE_RIGHT_BUTTON, @@ -290,18 +289,19 @@ export class ViewerHeaderService { ], ]; - const loadAllAnnotationsButton = this.#buttons.get(HeaderElements.LOAD_ALL_ANNOTATIONS); - let startButtons = 10; - let deleteCount = 14; - + header.get('selectToolButton').insertAfter(this.#buttons.get(HeaderElements.SHAPE_TOOL_GROUP_BUTTON)); groups.forEach(group => this.#pushGroup(enabledItems, group)); + const loadAllAnnotationsButton = this.#buttons.get(HeaderElements.LOAD_ALL_ANNOTATIONS); + let startButtons = 11; + let deleteCount = 15; + if (this.#isEnabled(HeaderElements.LOAD_ALL_ANNOTATIONS)) { if (!header.getItems().includes(loadAllAnnotationsButton)) { header.get('leftPanelButton').insertAfter(loadAllAnnotationsButton); } - startButtons = 11; - deleteCount = 15; + startButtons = 12; + deleteCount = 16; } else { header.delete(HeaderElements.LOAD_ALL_ANNOTATIONS); } @@ -311,6 +311,11 @@ export class ViewerHeaderService { this._pdf.instance?.UI.updateElement('selectToolButton', { img: this.#convertPath('/assets/icons/general/pdftron-cursor.svg'), }); + this._tooltipsService.updateIconState(); + const closeCompareButton = this._pdf.instance.UI.iframeWindow.document.querySelector( + `[data-element=${HeaderElements.CLOSE_COMPARE_BUTTON}]`, + ); + closeCompareButton?.classList.add('active'); } disableLoadAllAnnotations(): void { diff --git a/apps/red-ui/src/assets/icons/general/pdftron-action-close-compare.svg b/apps/red-ui/src/assets/icons/general/pdftron-action-close-compare.svg deleted file mode 100644 index 82ddb11d8..000000000 --- a/apps/red-ui/src/assets/icons/general/pdftron-action-close-compare.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - diff --git a/apps/red-ui/src/assets/icons/general/pdftron-action-compare.svg b/apps/red-ui/src/assets/icons/general/pdftron-action-compare.svg index 6765155b5..eebcf0634 100644 --- a/apps/red-ui/src/assets/icons/general/pdftron-action-compare.svg +++ b/apps/red-ui/src/assets/icons/general/pdftron-action-compare.svg @@ -2,7 +2,7 @@ - + - - - - + + + + + + + + + + + + diff --git a/apps/red-ui/src/assets/icons/general/pdftron-action-disable-tooltips.svg b/apps/red-ui/src/assets/icons/general/pdftron-action-disable-tooltips.svg deleted file mode 100644 index 2bd50bda8..000000000 --- a/apps/red-ui/src/assets/icons/general/pdftron-action-disable-tooltips.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - disable-tooltip - - - - - - - diff --git a/apps/red-ui/src/assets/icons/general/pdftron-action-enable-layers.svg b/apps/red-ui/src/assets/icons/general/pdftron-action-enable-layers.svg index 779e9a93d..7e67cf9f7 100644 --- a/apps/red-ui/src/assets/icons/general/pdftron-action-enable-layers.svg +++ b/apps/red-ui/src/assets/icons/general/pdftron-action-enable-layers.svg @@ -1,15 +1,23 @@ - - - - - - - + + + + + + + + + + + diff --git a/apps/red-ui/src/assets/icons/general/pdftron-action-enable-tooltips.svg b/apps/red-ui/src/assets/icons/general/pdftron-action-enable-tooltips.svg index 468a0936e..b2db10b9c 100644 --- a/apps/red-ui/src/assets/icons/general/pdftron-action-enable-tooltips.svg +++ b/apps/red-ui/src/assets/icons/general/pdftron-action-enable-tooltips.svg @@ -4,7 +4,7 @@ - + diff --git a/apps/red-ui/src/assets/icons/general/pdftron-cursor.svg b/apps/red-ui/src/assets/icons/general/pdftron-cursor.svg index 1d74faca4..8f0b33281 100644 --- a/apps/red-ui/src/assets/icons/general/pdftron-cursor.svg +++ b/apps/red-ui/src/assets/icons/general/pdftron-cursor.svg @@ -5,7 +5,7 @@ - + diff --git a/apps/red-ui/src/assets/icons/general/pdftron-rectangle.svg b/apps/red-ui/src/assets/icons/general/pdftron-rectangle.svg index 274fec468..e93409203 100644 --- a/apps/red-ui/src/assets/icons/general/pdftron-rectangle.svg +++ b/apps/red-ui/src/assets/icons/general/pdftron-rectangle.svg @@ -1,6 +1,6 @@ - + diff --git a/apps/red-ui/src/assets/pdftron/stylesheet.css b/apps/red-ui/src/assets/pdftron/stylesheet.css index f441d75fc..e62137e5a 100644 --- a/apps/red-ui/src/assets/pdftron/stylesheet.css +++ b/apps/red-ui/src/assets/pdftron/stylesheet.css @@ -47,3 +47,11 @@ button.Button[data-element='LOAD_ALL_ANNOTATIONS'] > img[src='/ui/assets/icons/g opacity: 0.5; cursor: default; } + +.HeaderItems .Button:not(.active):not([data-element='TOGGLE_LAYERS']) > img { + filter: brightness(0) saturate(100%) invert(60%) sepia(11%) saturate(294%) hue-rotate(169deg) brightness(91%) contrast(85%); +} + +.HeaderItems .Button.active > img { + filter: invert(19%) sepia(100%) saturate(791%) hue-rotate(175deg) brightness(89%) contrast(85%); +} From 050b0bc55accd6cc50958d348b209fbac8e131f2 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Mon, 3 Jun 2024 13:07:14 +0300 Subject: [PATCH 07/14] RED-5108: added redact functionality for hint images. --- .../src/app/models/file/annotation-permissions.utils.ts | 5 ++++- .../annotation-actions/annotation-actions.component.html | 2 +- .../annotation-actions/annotation-actions.component.ts | 4 ++++ .../force-annotation-dialog.component.html | 1 + .../force-annotation-dialog.component.ts | 4 ++++ .../services/pdf-annotation-actions.service.ts | 7 +++++-- apps/red-ui/src/app/modules/icons/icons.module.ts | 1 + libs/red-domain/src/lib/files/super-types.ts | 2 +- 8 files changed, 21 insertions(+), 5 deletions(-) diff --git a/apps/red-ui/src/app/models/file/annotation-permissions.utils.ts b/apps/red-ui/src/app/models/file/annotation-permissions.utils.ts index dfb735ba7..0fa2a9a88 100644 --- a/apps/red-ui/src/app/models/file/annotation-permissions.utils.ts +++ b/apps/red-ui/src/app/models/file/annotation-permissions.utils.ts @@ -8,7 +8,10 @@ export const canForceHint = (annotation: AnnotationWrapper, canAddRedaction: boo canAddRedaction && annotation.isIgnoredHint && !annotation.pending; export const canForceRedaction = (annotation: AnnotationWrapper, canAddRedaction: boolean) => - canAddRedaction && annotation.isSkipped && !annotation.isFalsePositive && !annotation.pending; + canAddRedaction && + (annotation.isSkipped || (annotation.IMAGE_HINT && !annotation.hasBeenForcedRedaction)) && + !annotation.isFalsePositive && + !annotation.pending; export const canAcceptRecommendation = (annotation: AnnotationWrapper) => annotation.isRecommendation && !annotation.pending; diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.html b/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.html index 61017a470..ae90408c4 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.html +++ b/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.html @@ -108,7 +108,7 @@ [tooltip]="'annotation-actions.force-redaction.label' | translate" [type]="buttonType" [buttonId]="annotations.length === 1 ? 'annotation-' + annotations[0].id + '-force_redaction' : 'annotations-force_redaction'" - icon="iqser:thumb-up" + [icon]="isImageHint ? 'red:pdftron-action-add-redaction' : 'iqser:thumb-up'" > annotation.IMAGE_HINT); + } + @Input() set annotations(annotations: AnnotationWrapper[]) { this.#annotations = annotations.filter(a => a !== undefined); diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.html b/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.html index 3c4c15b55..775c89566 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.html +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.html @@ -8,6 +8,7 @@ [columns]="tableColumns" [data]="tableData" [staticColumns]="true" + *ngIf="!isImageHint" >
diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.ts index 3925d5752..7a151a4f6 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/force-redaction-dialog/force-annotation-dialog.component.ts @@ -53,6 +53,10 @@ export class ForceAnnotationDialogComponent extends BaseDialogComponent implemen this.form = this.#getForm(); } + get isImageHint() { + return this._data.annotations.every(annotation => annotation.IMAGE_HINT); + } + get isHintDialog() { return this._data.hint; } diff --git a/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts b/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts index c2086fa7f..deac10928 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts @@ -81,8 +81,11 @@ export class PdfAnnotationActionsService { } if (permissions.canForceRedaction && annotationChangesAllowed) { - const forceRedactionButton = this.#getButton('thumb-up', _('annotation-actions.force-redaction.label'), () => - this.#annotationActionsService.forceAnnotation(annotations), + const isImageHint = annotations.every(annotation => annotation.IMAGE_HINT); + const forceRedactionButton = this.#getButton( + isImageHint ? 'general/pdftron-action-add-redaction' : 'thumb-up', + _('annotation-actions.force-redaction.label'), + () => this.#annotationActionsService.forceAnnotation(annotations), ); availableActions.push(forceRedactionButton); } diff --git a/apps/red-ui/src/app/modules/icons/icons.module.ts b/apps/red-ui/src/app/modules/icons/icons.module.ts index a2b7a8376..dab2ac28d 100644 --- a/apps/red-ui/src/app/modules/icons/icons.module.ts +++ b/apps/red-ui/src/app/modules/icons/icons.module.ts @@ -86,6 +86,7 @@ export class IconsModule { 'visibility', 'visibility-off', 'warning', + 'pdftron-action-add-redaction', ]; for (const icon of icons) { diff --git a/libs/red-domain/src/lib/files/super-types.ts b/libs/red-domain/src/lib/files/super-types.ts index c673fc945..027b4eecc 100644 --- a/libs/red-domain/src/lib/files/super-types.ts +++ b/libs/red-domain/src/lib/files/super-types.ts @@ -88,7 +88,7 @@ export const SuperTypeMapper: Record resolveRedactionType(entry), }, [EntityTypes.IMAGE_HINT]: { - [EntryStates.APPLIED]: wrongSuperTypeHandler, + [EntryStates.APPLIED]: entry => resolveRedactionType(entry), [EntryStates.SKIPPED]: () => SuperTypes.Hint, [EntryStates.IGNORED]: () => SuperTypes.IgnoredHint, [EntryStates.REMOVED]: wrongSuperTypeHandler, From 1ea03ac01526d4748d5a59a0fe1356ac5eb6db6c Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Fri, 31 May 2024 11:33:14 +0300 Subject: [PATCH 08/14] RED-9175: prevent search re-trigger upon navigating the file pages. --- .../page-exclusion/page-exclusion.component.ts | 13 +++++++++++++ .../file-preview-screen.component.ts | 18 +++++++++++------- .../services/file-preview-state.service.ts | 14 ++++++++++---- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/components/page-exclusion/page-exclusion.component.ts b/apps/red-ui/src/app/modules/file-preview/components/page-exclusion/page-exclusion.component.ts index 14dbef330..261994079 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/page-exclusion/page-exclusion.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/page-exclusion/page-exclusion.component.ts @@ -36,6 +36,7 @@ export class PageExclusionComponent { try { const pageRanges = extractPageRanges(inputValue, file); await this._reanalysisService.excludePages({ pageRanges }, file); + this._state.excludedPages.update(value => [...value, ...this.flattenPageRanges(pageRanges)]); this._inputComponent.reset(); } catch (e) { this._toaster.error(_('file-preview.tabs.exclude-pages.error')); @@ -46,6 +47,7 @@ export class PageExclusionComponent { async includePagesRange(range: IPageRange): Promise { this._loadingService.start(); await this._reanalysisService.includePages({ pageRanges: [range] }, this._state.file()); + this._state.excludedPages.update(value => value.filter(page => !this.flattenPageRanges([range]).includes(page))); this._inputComponent.reset(); this._loadingService.stop(); } @@ -64,4 +66,15 @@ export class PageExclusionComponent { return ranges; }, []); } + + flattenPageRanges(ranges: IPageRange[]) { + const flattenedPages = []; + ranges.forEach(range => { + for (let page = range.startPage; page <= range.endPage; page++) { + flattenedPages.push(page); + } + }); + + return flattenedPages; + } } diff --git a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts index 436f34efb..e6ba71edf 100644 --- a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts @@ -32,7 +32,7 @@ import { Toaster, } from '@iqser/common-ui'; import { copyLocalStorageFiltersValues, FilterService, NestedFilter, processFilters } from '@iqser/common-ui/lib/filtering'; -import { AutoUnsubscribe, Bind, bool, Debounce, List, OnAttach, OnDetach } from '@iqser/common-ui/lib/utils'; +import { AutoUnsubscribe, Bind, bool, Debounce, List, log, OnAttach, OnDetach } from '@iqser/common-ui/lib/utils'; import { AnnotationWrapper } from '@models/file/annotation.wrapper'; import { ManualRedactionEntryTypes, ManualRedactionEntryWrapper } from '@models/file/manual-redaction-entry.wrapper'; import { Dictionary, File, ViewModes } from '@red/domain'; @@ -173,14 +173,17 @@ export class FilePreviewScreenComponent } }); + effect(() => { + this._viewModeService.viewMode(); + this.updateViewMode().then(); + }); + effect(() => { this.state.updateExcludedPagesStyle(); - if (this._viewModeService.viewMode()) { - this.updateViewMode().then(); - if (_documentViewer.loaded()) { - this._logger.info('[PDF] Stamp pdf'); - this._stampService.stampPDF().then(); - } + this._viewModeService.viewMode(); + if (_documentViewer.loaded()) { + this._logger.info('[PDF] Stamp pdf'); + this._stampService.stampPDF().then(); } }); } @@ -810,6 +813,7 @@ export class FilePreviewScreenComponent _('error.deleted-entity.file-dossier.label'), _('error.deleted-entity.file-dossier.action'), 'iqser:expand', + null, ); this._errorService.set(error); } diff --git a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts index 11d386628..12e4bfc3a 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts @@ -1,10 +1,10 @@ import { HttpEvent, HttpEventType, HttpProgressEvent, HttpResponse } from '@angular/common/http'; -import { computed, effect, inject, Injectable, signal, Signal } from '@angular/core'; +import { computed, effect, inject, Injectable, signal, Signal, WritableSignal } from '@angular/core'; import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop'; import { LoadingService, wipeCache } from '@iqser/common-ui'; import { getParam } from '@iqser/common-ui/lib/utils'; import { TranslateService } from '@ngx-translate/core'; -import { Dictionary, Dossier, DOSSIER_ID, DOSSIER_TEMPLATE_ID, File, FILE_ID } from '@red/domain'; +import { Dictionary, Dossier, DOSSIER_ID, DOSSIER_TEMPLATE_ID, File, FILE_ID, ViewModes } from '@red/domain'; import { DossiersService } from '@services/dossiers/dossiers.service'; import { DictionariesMapService } from '@services/entity-services/dictionaries-map.service'; import { DossierDictionariesMapService } from '@services/entity-services/dossier-dictionaries-map.service'; @@ -44,7 +44,10 @@ export class FilePreviewStateService { readonly dossierId = getParam(DOSSIER_ID); readonly dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID); readonly fileId = getParam(FILE_ID); - readonly updateExcludedPagesStyle = computed(() => this.file().excludedPages); + readonly excludedPages: WritableSignal; + readonly updateExcludedPagesStyle = computed(() => { + return this.excludedPages(); + }); readonly isEditingReviewer = signal(false); constructor( @@ -61,6 +64,7 @@ export class FilePreviewStateService { this.dossier = toSignal(dossiersServiceResolver().getEntityChanged$(this.dossierId)); this.file$ = inject(FilesMapService).watch$(this.dossierId, this.fileId); this.file = toSignal(this.file$); + this.excludedPages = signal(this.file().excludedPages); this.isWritable = computed(() => { const isWritable = this._permissionsService.canPerformAnnotationActions(this.file(), this.dossier()); this._logger.info('[FILE] Is writeable:', isWritable); @@ -80,7 +84,9 @@ export class FilePreviewStateService { effect( () => { if (this._viewModeService.isEarmarks() && !this.file().hasHighlights) { - this._viewModeService.switchToStandard(); + if (this._viewModeService.viewMode() !== ViewModes.STANDARD) { + this._viewModeService.switchToStandard(); + } } }, { allowSignalWrites: true }, From 129f2d97d6fb8ba59f0fa3c71f41dc75d6bad8b8 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Fri, 31 May 2024 11:34:25 +0300 Subject: [PATCH 09/14] RED-9175: remove unused import. --- .../app/modules/file-preview/file-preview-screen.component.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts index e6ba71edf..ea41e52b8 100644 --- a/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/file-preview-screen.component.ts @@ -32,7 +32,7 @@ import { Toaster, } from '@iqser/common-ui'; import { copyLocalStorageFiltersValues, FilterService, NestedFilter, processFilters } from '@iqser/common-ui/lib/filtering'; -import { AutoUnsubscribe, Bind, bool, Debounce, List, log, OnAttach, OnDetach } from '@iqser/common-ui/lib/utils'; +import { AutoUnsubscribe, Bind, bool, Debounce, List, OnAttach, OnDetach } from '@iqser/common-ui/lib/utils'; import { AnnotationWrapper } from '@models/file/annotation.wrapper'; import { ManualRedactionEntryTypes, ManualRedactionEntryWrapper } from '@models/file/manual-redaction-entry.wrapper'; import { Dictionary, File, ViewModes } from '@red/domain'; @@ -813,7 +813,6 @@ export class FilePreviewScreenComponent _('error.deleted-entity.file-dossier.label'), _('error.deleted-entity.file-dossier.action'), 'iqser:expand', - null, ); this._errorService.set(error); } From 8220f502e6b68ee63c9680b00859d6c283eb60fc Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Mon, 3 Jun 2024 16:10:10 +0300 Subject: [PATCH 10/14] RED-9175: removed unnecessary brackets. --- .../file-preview/services/file-preview-state.service.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts index 12e4bfc3a..6f584dd5d 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/file-preview-state.service.ts @@ -45,9 +45,7 @@ export class FilePreviewStateService { readonly dossierTemplateId = getParam(DOSSIER_TEMPLATE_ID); readonly fileId = getParam(FILE_ID); readonly excludedPages: WritableSignal; - readonly updateExcludedPagesStyle = computed(() => { - return this.excludedPages(); - }); + readonly updateExcludedPagesStyle = computed(() => this.excludedPages()); readonly isEditingReviewer = signal(false); constructor( From 51c4dd05ae5a1933c40c7181a706886b901b2b8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 3 Jun 2024 21:37:13 +0300 Subject: [PATCH 11/14] RED-9237: Added placeholders in reports page --- .../placeholders-descriptions-translations.ts | 2 + apps/red-ui/src/assets/config/config.json | 4 +- apps/red-ui/src/assets/i18n/redact/de.json | 150 +++++++++--------- apps/red-ui/src/assets/i18n/redact/en.json | 2 + apps/red-ui/src/assets/i18n/scm/de.json | 150 +++++++++--------- apps/red-ui/src/assets/i18n/scm/en.json | 2 + 6 files changed, 160 insertions(+), 150 deletions(-) diff --git a/apps/red-ui/src/app/translations/placeholders-descriptions-translations.ts b/apps/red-ui/src/app/translations/placeholders-descriptions-translations.ts index 876acfb02..13f59a0f9 100644 --- a/apps/red-ui/src/app/translations/placeholders-descriptions-translations.ts +++ b/apps/red-ui/src/app/translations/placeholders-descriptions-translations.ts @@ -22,4 +22,6 @@ export const generalPlaceholdersDescriptionsTranslations = { 'redaction.justificationLegalBasis': _('reports-screen.descriptions.general.redaction.justification-legal-basis'), 'redaction.justificationText': _('reports-screen.descriptions.general.redaction.justification-text'), 'redaction.entity.displayName': _('reports-screen.descriptions.general.redaction.entity.display-name'), + 'redaction.isSkipped': _('reports-screen.descriptions.general.redaction.is-skipped'), + 'redaction.paragraphIdx': _('reports-screen.descriptions.general.redaction.paragraph-idx'), } as const; diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 42bf5941f..deb14e6da 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,7 +1,7 @@ { "ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_URL": null, - "API_URL": "https://dan.iqser.cloud", + "API_URL": "https://dan1.iqser.cloud", "APP_NAME": "RedactManager", "IS_DOCUMINE": false, "RULE_EDITOR_DEV_ONLY": false, @@ -13,7 +13,7 @@ "MAX_RETRIES_ON_SERVER_ERROR": 3, "OAUTH_CLIENT_ID": "redaction", "OAUTH_IDP_HINT": null, - "OAUTH_URL": "https://dan.iqser.cloud/auth", + "OAUTH_URL": "https://dan1.iqser.cloud/auth", "RECENT_PERIOD_IN_HOURS": 24, "SELECTION_MODE": "structural", "MANUAL_BASE_URL": "https://docs.redactmanager.com/preview", diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 671433770..9710d328d 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -254,9 +254,6 @@ "watermarks": "Watermarks" }, "analysis-disabled": "", - "annotation": { - "pending": "(Pending analysis)" - }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -311,14 +308,14 @@ "error": "Rekategorisierung des Bildes gescheitert: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove": { - "error": "Fehler beim Entfernen der Schwärzung: {error}", - "success": "Schwärzung entfernt!" - }, "remove-hint": { "error": "Failed to remove hint: {error}", "success": "Hint removed" }, + "remove": { + "error": "Fehler beim Entfernen der Schwärzung: {error}", + "success": "Schwärzung entfernt!" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "erfolgreich Rückgängig gemacht" @@ -331,15 +328,15 @@ "remove-highlights": { "label": "Remove selected earmarks" }, - "resize": { - "label": "Größe ändern" - }, "resize-accept": { "label": "Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, + "resize": { + "label": "Größe ändern" + }, "see-references": { "label": "See references" }, @@ -371,6 +368,9 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, + "annotation": { + "pending": "(Pending analysis)" + }, "archived-dossiers-listing": { "no-data": { "title": "No archived dossiers." @@ -576,18 +576,14 @@ "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!" }, "confirmation-dialog": { - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", - "title": "Warnung!" - }, "approve-file-without-analysis": { "confirmationText": "Approve without analysis", "denyText": "Cancel", "question": "Analysis required to detect new redactions.", "title": "Warning!" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -596,6 +592,10 @@ "question": "Analysis required to detect new redactions for at least one file.", "title": "Warning" }, + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", + "title": "Warnung!" + }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?", @@ -959,13 +959,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Niemandem zugewiesen" }, - "reanalyse": { - "action": "Datei analysieren" - }, "reanalyse-dossier": { "error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.", "success": "Dateien für Reanalyse vorgesehen." }, + "reanalyse": { + "action": "Datei analysieren" + }, "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", "table-col-names": { @@ -1035,14 +1035,6 @@ "total-documents": "Anzahl der Dokumente", "total-people": "{count} {count, plural, one{user} other {users}}" }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Active", - "inactive": "Inactive", - "incomplete": "Incomplete" - } - }, "dossier-templates-listing": { "action": { "clone": "Clone template", @@ -1078,6 +1070,14 @@ "title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}" } }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Active", + "inactive": "Inactive", + "incomplete": "Incomplete" + } + }, "dossier-watermark-selector": { "heading": "Watermarks on documents", "no-watermark": "There is no watermark defined for the dossier template.
Contact your app admin to define one.", @@ -1273,15 +1273,6 @@ "title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}" } }, - "entity": { - "info": { - "actions": { - "revert": "Revert", - "save": "Save changes" - }, - "heading": "Edit entity" - } - }, "entity-rules-screen": { "error": { "generic": "An error ocurred... Entity rules update failed!" @@ -1296,19 +1287,28 @@ "warning-text": "Warning: experimental feature!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules" }, + "entity": { + "info": { + "actions": { + "revert": "Revert", + "save": "Save changes" + }, + "heading": "Edit entity" + } + }, "error": { "deleted-entity": { "dossier": { "action": "Zurück zur Übersicht", "label": "Dieses Dossier wurde gelöscht!" }, - "file": { - "action": "Zurück zum Dossier", - "label": "Diese Datei wurde gelöscht!" - }, "file-dossier": { "action": "Zurück zur Übersicht", "label": "Das Dossier dieser Datei wurde gelöscht!" + }, + "file": { + "action": "Zurück zum Dossier", + "label": "Diese Datei wurde gelöscht!" } }, "file-preview": { @@ -1326,12 +1326,6 @@ }, "exact-date": "{day} {month} {year} um {hour}:{minute} Uhr", "file": "Datei", - "file-attribute": { - "update": { - "error": "Failed to update file attribute value!", - "success": "File attribute value has been updated successfully!" - } - }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1342,6 +1336,12 @@ "number": "Nummer", "text": "Freier Text" }, + "file-attribute": { + "update": { + "error": "Failed to update file attribute value!", + "success": "File attribute value has been updated successfully!" + } + }, "file-attributes-configurations": { "cancel": "Cancel", "form": { @@ -1560,15 +1560,6 @@ "csv": "File attributes were imported successfully from uploaded CSV file." } }, - "filter": { - "analysis": "Analyse erforderlich", - "comment": "Kommentare", - "hint": "Nut Hinweise", - "image": "Bilder", - "none": "Keine Anmerkungen", - "redaction": "Geschwärzt", - "updated": "Aktualisiert" - }, "filter-menu": { "filter-options": "Filteroptionen", "filter-types": "Filter", @@ -1578,6 +1569,15 @@ "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", "with-comments": "Nur Anmerkungen mit Kommentaren" }, + "filter": { + "analysis": "Analyse erforderlich", + "comment": "Kommentare", + "hint": "Nut Hinweise", + "image": "Bilder", + "none": "Keine Anmerkungen", + "redaction": "Geschwärzt", + "updated": "Aktualisiert" + }, "filters": { "assigned-people": "Beauftragt", "documents-status": "Documents state", @@ -1850,13 +1850,6 @@ "user-promoted-to-approver": "{user} wurde im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} zum Genehmiger ernannt!", "user-removed-as-dossier-member": "{user} wurde als Mitglied von: {dossierHref, select, null{{dossierName}} other{{dossierName}}} entfernt!" }, - "notifications": { - "button-text": "Notifications", - "deleted-dossier": "Deleted dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" - }, "notifications-screen": { "category": { "email-notifications": "E-Mail Benachrichtigungen", @@ -1870,6 +1863,7 @@ "dossier": "Dossierbezogene Benachrichtigungen", "other": "Andere Benachrichtigungen" }, + "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin", @@ -1887,7 +1881,6 @@ "USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde", "USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere" }, - "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofortig", @@ -1895,6 +1888,13 @@ }, "title": "Benachrichtigungseinstellungen" }, + "notifications": { + "button-text": "Notifications", + "deleted-dossier": "Deleted dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" + }, "ocr": { "confirmation-dialog": { "cancel": "Cancel", @@ -1986,16 +1986,16 @@ "warnings-label": "Prompts and dialogs", "warnings-subtitle": "Do not show again options" }, - "processing": { - "basic": "Processing", - "ocr": "OCR" - }, "processing-status": { "ocr": "OCR", "pending": "Pending", "processed": "processed", "processing": "Processing" }, + "processing": { + "basic": "Processing", + "ocr": "OCR" + }, "readonly": "Lesemodus", "readonly-archived": "Read only (archived)", "redact-text": { @@ -2132,6 +2132,7 @@ "display-name": "This placeholder is replaced by the name of the entity the redaction is based on." }, "excerpt": "Dieser Platzhalter wird durch einen Textausschnitt ersetzt, der die Schwärzung enthält.", + "is-skipped": "", "justification": "Dieser Platzhalter wird durch die Begründung der Schwärzung ersetzt. Es ist eine Kombination aus dem Rechtsverweis (justificationParagraph) und dem Begründungstext (justificationReason).", "justification-legal-basis": "This placeholder is replaced by the legal basis for the redaction.", "justification-paragraph": "Dieser Platzhalter wird durch den Rechtshinweis der Begründung der Redaktion ersetzt.", @@ -2139,6 +2140,7 @@ "justification-text": "This placeholder is replaced by the justification text.", "page": "Dieser Platzhalter wird durch die Seitenzahl der Redaktion ersetzt.", "paragraph": "Dieser Platzhalter wird durch den Absatz ersetzt, der die Schwärzung enthält.", + "paragraph-idx": "", "value": "This placeholder is replaced by the value that was redacted." }, "time": { @@ -2219,12 +2221,6 @@ "red-user-admin": "Benutzer-Admin", "regular": "Regulär" }, - "search": { - "active-dossiers": "ganze Plattform", - "all-dossiers": "all documents", - "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", - "this-dossier": "in diesem Dossier" - }, "search-screen": { "cols": { "assignee": "Bevollmächtigter", @@ -2248,6 +2244,12 @@ "no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.", "table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}" }, + "search": { + "active-dossiers": "ganze Plattform", + "all-dossiers": "all documents", + "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", + "this-dossier": "in diesem Dossier" + }, "seconds": "seconds", "size": "Size", "smtp-auth-config": { @@ -2502,4 +2504,4 @@ } }, "yesterday": "Gestern" -} \ No newline at end of file +} diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index 1830833c1..2667b6bee 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -2132,6 +2132,7 @@ "display-name": "This placeholder is replaced by the name of the entity the redaction is based on." }, "excerpt": "This placeholder is replaced by a text snippet that contains the redaction.", + "is-skipped": "The skipped redaction placeholder indicates whether a redaction is skipped or not. It can be included in a separate column of a template that also contains the {{redaction.value}} placeholder. The placeholder is replaced by “true” if the respective redaction is skipped, and by “false” if it is redacted (i. e., not skipped).", "justification": "This placeholder is replaced by the justification of the redaction. It is a combination of the legal reference (justificationParagraph) and the justification text (justificationReason).", "justification-legal-basis": "This placeholder is replaced by the legal basis for the redaction.", "justification-paragraph": "This placeholder is replaced by the legal reference of the justification of the redaction.", @@ -2139,6 +2140,7 @@ "justification-text": "This placeholder is replaced by the justification text.", "page": "This placeholder is replaced by the page number of the redaction.", "paragraph": "This placeholder is replaced by the paragraph that contains the redaction.", + "paragraph-idx": "The placeholder is replaced by the number of the paragraph containing the redaction. Paragraphs are numbered on a per-page basis.", "value": "This placeholder is replaced by the value that was redacted." }, "time": { diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json index f04ac163a..745ec016c 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -254,9 +254,6 @@ "watermarks": "Watermarks" }, "analysis-disabled": "Analysis disabled", - "annotation": { - "pending": "(Pending analysis)" - }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -311,14 +308,14 @@ "error": "Rekategorisierung des Bildes gescheitert: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove": { - "error": "Fehler beim Entfernen der Schwärzung: {error}", - "success": "Schwärzung entfernt!" - }, "remove-hint": { "error": "Failed to remove hint: {error}", "success": "Hint removed!" }, + "remove": { + "error": "Fehler beim Entfernen der Schwärzung: {error}", + "success": "Schwärzung entfernt!" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "erfolgreich Rückgängig gemacht" @@ -331,15 +328,15 @@ "remove-highlights": { "label": "Remove selected earmarks" }, - "resize": { - "label": "Größe ändern" - }, "resize-accept": { "label": "Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, + "resize": { + "label": "Größe ändern" + }, "see-references": { "label": "See references" }, @@ -371,6 +368,9 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, + "annotation": { + "pending": "(Pending analysis)" + }, "archived-dossiers-listing": { "no-data": { "title": "No archived dossiers." @@ -576,18 +576,14 @@ "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!" }, "confirmation-dialog": { - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", - "title": "Warnung!" - }, "approve-file-without-analysis": { "confirmationText": "Approve without analysis", "denyText": "Cancel", "question": "Analysis required to detect new components.", "title": "Warning!" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -596,6 +592,10 @@ "question": "Analysis required to detect new components for at least one file.", "title": "Warning" }, + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", + "title": "Warnung!" + }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?", @@ -959,13 +959,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Niemandem zugewiesen" }, - "reanalyse": { - "action": "Datei analysieren" - }, "reanalyse-dossier": { "error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.", "success": "Dateien für Reanalyse vorgesehen." }, + "reanalyse": { + "action": "Datei analysieren" + }, "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", "table-col-names": { @@ -1035,14 +1035,6 @@ "total-documents": "Anzahl der Dokumente", "total-people": "{count} {count, plural, one{user} other {users}}" }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Active", - "inactive": "Inactive", - "incomplete": "Incomplete" - } - }, "dossier-templates-listing": { "action": { "clone": "Clone template", @@ -1078,6 +1070,14 @@ "title": "{length} dossier {length, plural, one{template} other{templates}}" } }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Active", + "inactive": "Inactive", + "incomplete": "Incomplete" + } + }, "dossier-watermark-selector": { "heading": "Watermarks on documents", "no-watermark": "There is no watermark defined for the dossier template.
Contact your app admin to define one.", @@ -1273,15 +1273,6 @@ "title": "{length} {length, plural, one{entity} other{entities}}" } }, - "entity": { - "info": { - "actions": { - "revert": "Revert", - "save": "Save changes" - }, - "heading": "Edit entity" - } - }, "entity-rules-screen": { "error": { "generic": "Something went wrong... Entity rules update failed!" @@ -1296,19 +1287,28 @@ "warning-text": "Warning: experimental feature!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules" }, + "entity": { + "info": { + "actions": { + "revert": "Revert", + "save": "Save changes" + }, + "heading": "Edit entity" + } + }, "error": { "deleted-entity": { "dossier": { "action": "Zurück zur Übersicht", "label": "Dieses Dossier wurde gelöscht!" }, - "file": { - "action": "Zurück zum Dossier", - "label": "Diese Datei wurde gelöscht!" - }, "file-dossier": { "action": "Zurück zur Übersicht", "label": "Das Dossier dieser Datei wurde gelöscht!" + }, + "file": { + "action": "Zurück zum Dossier", + "label": "Diese Datei wurde gelöscht!" } }, "file-preview": { @@ -1326,12 +1326,6 @@ }, "exact-date": "{day} {month} {year} um {hour}:{minute} Uhr", "file": "Datei", - "file-attribute": { - "update": { - "error": "Failed to update file attribute value!", - "success": "File attribute value has been updated successfully!" - } - }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1342,6 +1336,12 @@ "number": "Nummer", "text": "Freier Text" }, + "file-attribute": { + "update": { + "error": "Failed to update file attribute value!", + "success": "File attribute value has been updated successfully!" + } + }, "file-attributes-configurations": { "cancel": "Cancel", "form": { @@ -1560,15 +1560,6 @@ "csv": "File attributes were imported successfully from uploaded CSV file." } }, - "filter": { - "analysis": "Analyse erforderlich", - "comment": "Kommentare", - "hint": "Nut Hinweise", - "image": "Bilder", - "none": "Keine Anmerkungen", - "redaction": "Geschwärzt", - "updated": "Aktualisiert" - }, "filter-menu": { "filter-options": "Filteroptionen", "filter-types": "Filter", @@ -1578,6 +1569,15 @@ "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", "with-comments": "Nur Anmerkungen mit Kommentaren" }, + "filter": { + "analysis": "Analyse erforderlich", + "comment": "Kommentare", + "hint": "Nut Hinweise", + "image": "Bilder", + "none": "Keine Anmerkungen", + "redaction": "Geschwärzt", + "updated": "Aktualisiert" + }, "filters": { "assigned-people": "Beauftragt", "documents-status": "Documents state", @@ -1850,13 +1850,6 @@ "user-promoted-to-approver": "{user} wurde im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} zum Genehmiger ernannt!", "user-removed-as-dossier-member": "{user} wurde als Mitglied von: {dossierHref, select, null{{dossierName}} other{{dossierName}}} entfernt!" }, - "notifications": { - "button-text": "Notifications", - "deleted-dossier": "Deleted dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" - }, "notifications-screen": { "category": { "email-notifications": "E-Mail Benachrichtigungen", @@ -1870,6 +1863,7 @@ "dossier": "Dossierbezogene Benachrichtigungen", "other": "Andere Benachrichtigungen" }, + "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin", @@ -1887,7 +1881,6 @@ "USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde", "USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere" }, - "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofortig", @@ -1895,6 +1888,13 @@ }, "title": "Benachrichtigungseinstellungen" }, + "notifications": { + "button-text": "Notifications", + "deleted-dossier": "Deleted dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" + }, "ocr": { "confirmation-dialog": { "cancel": "Cancel", @@ -1986,16 +1986,16 @@ "warnings-label": "Prompts and dialogs", "warnings-subtitle": "Do not show again options" }, - "processing": { - "basic": "Processing", - "ocr": "OCR" - }, "processing-status": { "ocr": "OCR", "pending": "Pending", "processed": "Processed", "processing": "Processing" }, + "processing": { + "basic": "Processing", + "ocr": "OCR" + }, "readonly": "Lesemodus", "readonly-archived": "Read only (archived)", "redact-text": { @@ -2132,6 +2132,7 @@ "display-name": "This placeholder is replaced by the name of the entity the component is based on." }, "excerpt": "Dieser Platzhalter wird durch einen Textausschnitt ersetzt, der die Schwärzung enthält.", + "is-skipped": "", "justification": "Dieser Platzhalter wird durch die Begründung der Schwärzung ersetzt. Es ist eine Kombination aus dem Rechtsverweis (justificationParagraph) und dem Begründungstext (justificationReason).", "justification-legal-basis": "This placeholder is replaced by the legal basis for the component.", "justification-paragraph": "Dieser Platzhalter wird durch den Rechtshinweis der Begründung der Redaktion ersetzt.", @@ -2139,6 +2140,7 @@ "justification-text": "This placeholder is replaced by the justification text.", "page": "Dieser Platzhalter wird durch die Seitenzahl der Redaktion ersetzt.", "paragraph": "Dieser Platzhalter wird durch den Absatz ersetzt, der die Schwärzung enthält.", + "paragraph-idx": "", "value": "This placeholder is replaced by the value that was extracted." }, "time": { @@ -2219,12 +2221,6 @@ "red-user-admin": "Benutzer-Admin", "regular": "Regulär" }, - "search": { - "active-dossiers": "ganze Plattform", - "all-dossiers": "all documents", - "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", - "this-dossier": "in diesem Dossier" - }, "search-screen": { "cols": { "assignee": "Bevollmächtigter", @@ -2248,6 +2244,12 @@ "no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.", "table-header": "{length} search {length, plural, one{result} other{results}}" }, + "search": { + "active-dossiers": "ganze Plattform", + "all-dossiers": "all documents", + "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", + "this-dossier": "in diesem Dossier" + }, "seconds": "seconds", "size": "Size", "smtp-auth-config": { @@ -2502,4 +2504,4 @@ } }, "yesterday": "Gestern" -} \ No newline at end of file +} diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index ea0dbb2f0..5d4c0487b 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -2132,6 +2132,7 @@ "display-name": "This placeholder is replaced by the name of the entity the component is based on." }, "excerpt": "This placeholder is replaced by a text snippet that contains the component.", + "is-skipped": "The skipped redaction placeholder indicates whether a redaction is skipped or not. It can be included in a separate column of a template that also contains the {{redaction.value}} placeholder. The placeholder is replaced by “true” if the respective redaction is skipped, and by “false” if it is redacted (i. e., not skipped).", "justification": "This placeholder is replaced by the justification of the component. It is a combination of the legal reference (justificationParagraph) and the justification text (justificationReason).", "justification-legal-basis": "This placeholder is replaced by the legal basis for the component.", "justification-paragraph": "This placeholder is replaced by the legal reference of the justification of the component.", @@ -2139,6 +2140,7 @@ "justification-text": "This placeholder is replaced by the justification text.", "page": "This placeholder is replaced by the page number of the component.", "paragraph": "This placeholder is replaced by the paragraph that contains the component.", + "paragraph-idx": "The placeholder is replaced by the number of the paragraph containing the redaction. Paragraphs are numbered on a per-page basis.", "value": "This placeholder is replaced by the value that was extracted." }, "time": { From 8a329100842c2bad6fcfb9a7737222d5a65bd040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 3 Jun 2024 20:43:56 +0300 Subject: [PATCH 12/14] RED-8979: Indicate dossier dictionary-based annotations in workload --- .../annotation-details.component.ts | 32 ++++++++----------- .../services/annotation-processing.service.ts | 5 ++- apps/red-ui/src/assets/i18n/redact/de.json | 1 + apps/red-ui/src/assets/i18n/redact/en.json | 1 + apps/red-ui/src/assets/i18n/scm/de.json | 1 + apps/red-ui/src/assets/i18n/scm/en.json | 1 + .../red-domain/src/lib/redaction-log/types.ts | 1 + 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-details/annotation-details.component.ts b/apps/red-ui/src/app/modules/file-preview/components/annotation-details/annotation-details.component.ts index 1e3c5fd86..d06824982 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/annotation-details/annotation-details.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/annotation-details/annotation-details.component.ts @@ -6,6 +6,7 @@ import { ListItem } from '@models/file/list-item'; import { TranslateService } from '@ngx-translate/core'; import { annotationChangesTranslations } from '@translations/annotation-changes-translations'; import { MultiSelectService } from '../../services/multi-select.service'; +import { LogEntryEngine, LogEntryEngines } from '@red/domain'; interface Engine { readonly icon: string; @@ -14,17 +15,7 @@ interface Engine { readonly translateParams?: Record; } -export const Engines = { - DICTIONARY: 'DICTIONARY', - NER: 'NER', - RULE: 'RULE', - IMPORTED: 'IMPORTED', - MANUAL: 'MANUAL', -} as const; - -type EngineName = keyof typeof Engines; - -function isBasedOn(annotation: AnnotationWrapper, engineName: EngineName) { +function isBasedOn(annotation: AnnotationWrapper, engineName: LogEntryEngine) { return !!annotation.engines?.includes(engineName); } @@ -43,18 +34,18 @@ const changesProperties: KeysOf[] = [ styleUrls: ['./annotation-details.component.scss'], }) export class AnnotationDetailsComponent implements OnChanges { - private readonly _translateService = inject(TranslateService); - private readonly _multiSelectService = inject(MultiSelectService); @Input() annotation: ListItem; isPopoverOpen = false; engines: Engine[]; changesTooltip: string; noSelection: boolean; + private readonly _translateService = inject(TranslateService); + private readonly _multiSelectService = inject(MultiSelectService); getChangesTooltip(): string | undefined { const changes = changesProperties.filter(key => this.annotation.item[key]); - if (!changes.length || !this.annotation.item.engines?.includes(Engines.MANUAL)) { + if (!changes.length || !this.annotation.item.engines?.includes(LogEntryEngines.MANUAL)) { return; } @@ -74,24 +65,29 @@ export class AnnotationDetailsComponent implements OnChanges { { icon: 'red:dictionary', description: _('annotation-engines.dictionary'), - show: isBasedOn(annotation, Engines.DICTIONARY), + show: isBasedOn(annotation, LogEntryEngines.DICTIONARY), translateParams: { isHint: annotation.HINT }, }, + { + icon: 'red:folder', + description: _('annotation-engines.dossier-dictionary'), + show: isBasedOn(annotation, LogEntryEngines.DOSSIER_DICTIONARY), + }, { icon: 'red:ai', description: _('annotation-engines.ner'), - show: isBasedOn(annotation, Engines.NER), + show: isBasedOn(annotation, LogEntryEngines.NER), }, { icon: 'red:rule', description: _('annotation-engines.rule'), - show: isBasedOn(annotation, Engines.RULE), + show: isBasedOn(annotation, LogEntryEngines.RULE), translateParams: { rule: annotation.legalBasisValue || '' }, }, { icon: 'red:import_redactions', description: _('annotation-engines.imported'), - show: isBasedOn(annotation, Engines.IMPORTED), + show: isBasedOn(annotation, LogEntryEngines.IMPORTED), }, ]; } diff --git a/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts b/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts index 42d467dd9..3941d297d 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/annotation-processing.service.ts @@ -3,7 +3,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { getConfig } from '@iqser/common-ui'; import { Filter, handleCheckedValue, IFilter, INestedFilter, NestedFilter } from '@iqser/common-ui/lib/filtering'; import { AnnotationWrapper } from '@models/file/annotation.wrapper'; -import { annotationDefaultColorConfig } from '@red/domain'; +import { annotationDefaultColorConfig, LogEntryEngines } from '@red/domain'; import { DefaultColorsService } from '@services/entity-services/default-colors.service'; import { ViewedPagesMapService } from '@services/files/viewed-pages-map.service'; import { annotationTypesTranslations } from '@translations/annotation-types-translations'; @@ -19,7 +19,6 @@ import { } from '../utils/sort-by-page-rotation.utils'; import { FileDataService } from './file-data.service'; import { FilePreviewStateService } from './file-preview-state.service'; -import { Engines } from '../components/annotation-details/annotation-details.component'; @Injectable() export class AnnotationProcessingService { @@ -52,7 +51,7 @@ export class AnnotationProcessingService { checked: false, topLevelFilter: true, checker: (annotation: AnnotationWrapper) => - annotation?.hasRedactionChanges && annotation?.engines?.includes(Engines.MANUAL), + annotation?.hasRedactionChanges && annotation?.engines?.includes(LogEntryEngines.MANUAL), }, { id: 'unseen-pages', diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 9710d328d..93f906d01 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -354,6 +354,7 @@ }, "annotation-engines": { "dictionary": "{isHint, select, true{Hint} other{Redaction}} basierend auf Wörterbuch", + "dossier-dictionary": "", "imported": "Imported", "ner": "Redaktion basierend auf KI", "rule": "Schwärzung basierend auf Regel {rule}" diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index 2667b6bee..90605613e 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -354,6 +354,7 @@ }, "annotation-engines": { "dictionary": "Based on dictionary", + "dossier-dictionary": "Based on dossier dictionary", "imported": "Imported", "ner": "Based on AI", "rule": "Based on rule" diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json index 745ec016c..3fec888e4 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -354,6 +354,7 @@ }, "annotation-engines": { "dictionary": "{isHint, select, true{Hint} other{Redaction}} basierend auf Wörterbuch", + "dossier-dictionary": "", "imported": "Annotation is imported", "ner": "Redaktion basierend auf KI", "rule": "Schwärzung basierend auf Regel {rule}" diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index 5d4c0487b..552193a45 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -354,6 +354,7 @@ }, "annotation-engines": { "dictionary": "{isHint, select, true{Hint} other{Annotation}} based on dictionary", + "dossier-dictionary": "Annotation based on dossier dictionary", "imported": "Annotation is imported", "ner": "Annotation based on AI", "rule": "Annotation based on rule {rule}" diff --git a/libs/red-domain/src/lib/redaction-log/types.ts b/libs/red-domain/src/lib/redaction-log/types.ts index c35068387..2586dd09c 100644 --- a/libs/red-domain/src/lib/redaction-log/types.ts +++ b/libs/red-domain/src/lib/redaction-log/types.ts @@ -6,6 +6,7 @@ export const LogEntryEngines = { RULE: 'RULE', IMPORTED: 'IMPORTED', MANUAL: 'MANUAL', + DOSSIER_DICTIONARY: 'DOSSIER_DICTIONARY', } as const; export type LogEntryEngine = ValuesOf; From 7f51609b72fcb6800f59e7f07771660d5b014742 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 3 Jun 2024 22:01:32 +0300 Subject: [PATCH 13/14] RED-9237: Escape "{" in translation string --- apps/red-ui/src/assets/i18n/redact/en.json | 2 +- apps/red-ui/src/assets/i18n/scm/en.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index 90605613e..7f28b3c7d 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -2133,7 +2133,7 @@ "display-name": "This placeholder is replaced by the name of the entity the redaction is based on." }, "excerpt": "This placeholder is replaced by a text snippet that contains the redaction.", - "is-skipped": "The skipped redaction placeholder indicates whether a redaction is skipped or not. It can be included in a separate column of a template that also contains the {{redaction.value}} placeholder. The placeholder is replaced by “true” if the respective redaction is skipped, and by “false” if it is redacted (i. e., not skipped).", + "is-skipped": "The skipped redaction placeholder indicates whether a redaction is skipped or not. It can be included in a separate column of a template that also contains the '{{redaction.value'}} placeholder. The placeholder is replaced by “true” if the respective redaction is skipped, and by “false” if it is redacted (i. e., not skipped).", "justification": "This placeholder is replaced by the justification of the redaction. It is a combination of the legal reference (justificationParagraph) and the justification text (justificationReason).", "justification-legal-basis": "This placeholder is replaced by the legal basis for the redaction.", "justification-paragraph": "This placeholder is replaced by the legal reference of the justification of the redaction.", diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index 552193a45..684a5f00d 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -2133,7 +2133,7 @@ "display-name": "This placeholder is replaced by the name of the entity the component is based on." }, "excerpt": "This placeholder is replaced by a text snippet that contains the component.", - "is-skipped": "The skipped redaction placeholder indicates whether a redaction is skipped or not. It can be included in a separate column of a template that also contains the {{redaction.value}} placeholder. The placeholder is replaced by “true” if the respective redaction is skipped, and by “false” if it is redacted (i. e., not skipped).", + "is-skipped": "The skipped redaction placeholder indicates whether a redaction is skipped or not. It can be included in a separate column of a template that also contains the '{{redaction.value'}} placeholder. The placeholder is replaced by “true” if the respective redaction is skipped, and by “false” if it is redacted (i. e., not skipped).", "justification": "This placeholder is replaced by the justification of the component. It is a combination of the legal reference (justificationParagraph) and the justification text (justificationReason).", "justification-legal-basis": "This placeholder is replaced by the legal basis for the component.", "justification-paragraph": "This placeholder is replaced by the legal reference of the justification of the component.", From 435c4e0ed4e1e0ee5a608e7093591dc1764bcb98 Mon Sep 17 00:00:00 2001 From: project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1 Date: Tue, 4 Jun 2024 01:03:52 +0000 Subject: [PATCH 14/14] push back localazy update --- apps/red-ui/src/assets/i18n/redact/de.json | 151 ++++++++++----------- apps/red-ui/src/assets/i18n/redact/en.json | 10 +- apps/red-ui/src/assets/i18n/scm/de.json | 151 ++++++++++----------- apps/red-ui/src/assets/i18n/scm/en.json | 6 +- 4 files changed, 156 insertions(+), 162 deletions(-) diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 93f906d01..671433770 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -254,6 +254,9 @@ "watermarks": "Watermarks" }, "analysis-disabled": "", + "annotation": { + "pending": "(Pending analysis)" + }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -308,14 +311,14 @@ "error": "Rekategorisierung des Bildes gescheitert: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove-hint": { - "error": "Failed to remove hint: {error}", - "success": "Hint removed" - }, "remove": { "error": "Fehler beim Entfernen der Schwärzung: {error}", "success": "Schwärzung entfernt!" }, + "remove-hint": { + "error": "Failed to remove hint: {error}", + "success": "Hint removed" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "erfolgreich Rückgängig gemacht" @@ -328,15 +331,15 @@ "remove-highlights": { "label": "Remove selected earmarks" }, + "resize": { + "label": "Größe ändern" + }, "resize-accept": { "label": "Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, - "resize": { - "label": "Größe ändern" - }, "see-references": { "label": "See references" }, @@ -354,7 +357,6 @@ }, "annotation-engines": { "dictionary": "{isHint, select, true{Hint} other{Redaction}} basierend auf Wörterbuch", - "dossier-dictionary": "", "imported": "Imported", "ner": "Redaktion basierend auf KI", "rule": "Schwärzung basierend auf Regel {rule}" @@ -369,9 +371,6 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, - "annotation": { - "pending": "(Pending analysis)" - }, "archived-dossiers-listing": { "no-data": { "title": "No archived dossiers." @@ -577,14 +576,18 @@ "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!" }, "confirmation-dialog": { + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", + "title": "Warnung!" + }, "approve-file-without-analysis": { "confirmationText": "Approve without analysis", "denyText": "Cancel", "question": "Analysis required to detect new redactions.", "title": "Warning!" }, - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -593,10 +596,6 @@ "question": "Analysis required to detect new redactions for at least one file.", "title": "Warning" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", - "title": "Warnung!" - }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?", @@ -960,13 +959,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Niemandem zugewiesen" }, + "reanalyse": { + "action": "Datei analysieren" + }, "reanalyse-dossier": { "error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.", "success": "Dateien für Reanalyse vorgesehen." }, - "reanalyse": { - "action": "Datei analysieren" - }, "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", "table-col-names": { @@ -1036,6 +1035,14 @@ "total-documents": "Anzahl der Dokumente", "total-people": "{count} {count, plural, one{user} other {users}}" }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Active", + "inactive": "Inactive", + "incomplete": "Incomplete" + } + }, "dossier-templates-listing": { "action": { "clone": "Clone template", @@ -1071,14 +1078,6 @@ "title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}" } }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Active", - "inactive": "Inactive", - "incomplete": "Incomplete" - } - }, "dossier-watermark-selector": { "heading": "Watermarks on documents", "no-watermark": "There is no watermark defined for the dossier template.
Contact your app admin to define one.", @@ -1274,6 +1273,15 @@ "title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}" } }, + "entity": { + "info": { + "actions": { + "revert": "Revert", + "save": "Save changes" + }, + "heading": "Edit entity" + } + }, "entity-rules-screen": { "error": { "generic": "An error ocurred... Entity rules update failed!" @@ -1288,28 +1296,19 @@ "warning-text": "Warning: experimental feature!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules" }, - "entity": { - "info": { - "actions": { - "revert": "Revert", - "save": "Save changes" - }, - "heading": "Edit entity" - } - }, "error": { "deleted-entity": { "dossier": { "action": "Zurück zur Übersicht", "label": "Dieses Dossier wurde gelöscht!" }, - "file-dossier": { - "action": "Zurück zur Übersicht", - "label": "Das Dossier dieser Datei wurde gelöscht!" - }, "file": { "action": "Zurück zum Dossier", "label": "Diese Datei wurde gelöscht!" + }, + "file-dossier": { + "action": "Zurück zur Übersicht", + "label": "Das Dossier dieser Datei wurde gelöscht!" } }, "file-preview": { @@ -1327,6 +1326,12 @@ }, "exact-date": "{day} {month} {year} um {hour}:{minute} Uhr", "file": "Datei", + "file-attribute": { + "update": { + "error": "Failed to update file attribute value!", + "success": "File attribute value has been updated successfully!" + } + }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1337,12 +1342,6 @@ "number": "Nummer", "text": "Freier Text" }, - "file-attribute": { - "update": { - "error": "Failed to update file attribute value!", - "success": "File attribute value has been updated successfully!" - } - }, "file-attributes-configurations": { "cancel": "Cancel", "form": { @@ -1561,15 +1560,6 @@ "csv": "File attributes were imported successfully from uploaded CSV file." } }, - "filter-menu": { - "filter-options": "Filteroptionen", - "filter-types": "Filter", - "label": "Filter", - "pages-without-annotations": "Only pages without annotations", - "redaction-changes": "Nur Anmerkungen mit Schwärzungsänderungen", - "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", - "with-comments": "Nur Anmerkungen mit Kommentaren" - }, "filter": { "analysis": "Analyse erforderlich", "comment": "Kommentare", @@ -1579,6 +1569,15 @@ "redaction": "Geschwärzt", "updated": "Aktualisiert" }, + "filter-menu": { + "filter-options": "Filteroptionen", + "filter-types": "Filter", + "label": "Filter", + "pages-without-annotations": "Only pages without annotations", + "redaction-changes": "Nur Anmerkungen mit Schwärzungsänderungen", + "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", + "with-comments": "Nur Anmerkungen mit Kommentaren" + }, "filters": { "assigned-people": "Beauftragt", "documents-status": "Documents state", @@ -1851,6 +1850,13 @@ "user-promoted-to-approver": "{user} wurde im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} zum Genehmiger ernannt!", "user-removed-as-dossier-member": "{user} wurde als Mitglied von: {dossierHref, select, null{{dossierName}} other{{dossierName}}} entfernt!" }, + "notifications": { + "button-text": "Notifications", + "deleted-dossier": "Deleted dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" + }, "notifications-screen": { "category": { "email-notifications": "E-Mail Benachrichtigungen", @@ -1864,7 +1870,6 @@ "dossier": "Dossierbezogene Benachrichtigungen", "other": "Andere Benachrichtigungen" }, - "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin", @@ -1882,6 +1887,7 @@ "USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde", "USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere" }, + "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofortig", @@ -1889,13 +1895,6 @@ }, "title": "Benachrichtigungseinstellungen" }, - "notifications": { - "button-text": "Notifications", - "deleted-dossier": "Deleted dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" - }, "ocr": { "confirmation-dialog": { "cancel": "Cancel", @@ -1987,16 +1986,16 @@ "warnings-label": "Prompts and dialogs", "warnings-subtitle": "Do not show again options" }, + "processing": { + "basic": "Processing", + "ocr": "OCR" + }, "processing-status": { "ocr": "OCR", "pending": "Pending", "processed": "processed", "processing": "Processing" }, - "processing": { - "basic": "Processing", - "ocr": "OCR" - }, "readonly": "Lesemodus", "readonly-archived": "Read only (archived)", "redact-text": { @@ -2133,7 +2132,6 @@ "display-name": "This placeholder is replaced by the name of the entity the redaction is based on." }, "excerpt": "Dieser Platzhalter wird durch einen Textausschnitt ersetzt, der die Schwärzung enthält.", - "is-skipped": "", "justification": "Dieser Platzhalter wird durch die Begründung der Schwärzung ersetzt. Es ist eine Kombination aus dem Rechtsverweis (justificationParagraph) und dem Begründungstext (justificationReason).", "justification-legal-basis": "This placeholder is replaced by the legal basis for the redaction.", "justification-paragraph": "Dieser Platzhalter wird durch den Rechtshinweis der Begründung der Redaktion ersetzt.", @@ -2141,7 +2139,6 @@ "justification-text": "This placeholder is replaced by the justification text.", "page": "Dieser Platzhalter wird durch die Seitenzahl der Redaktion ersetzt.", "paragraph": "Dieser Platzhalter wird durch den Absatz ersetzt, der die Schwärzung enthält.", - "paragraph-idx": "", "value": "This placeholder is replaced by the value that was redacted." }, "time": { @@ -2222,6 +2219,12 @@ "red-user-admin": "Benutzer-Admin", "regular": "Regulär" }, + "search": { + "active-dossiers": "ganze Plattform", + "all-dossiers": "all documents", + "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", + "this-dossier": "in diesem Dossier" + }, "search-screen": { "cols": { "assignee": "Bevollmächtigter", @@ -2245,12 +2248,6 @@ "no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.", "table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}" }, - "search": { - "active-dossiers": "ganze Plattform", - "all-dossiers": "all documents", - "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", - "this-dossier": "in diesem Dossier" - }, "seconds": "seconds", "size": "Size", "smtp-auth-config": { @@ -2505,4 +2502,4 @@ } }, "yesterday": "Gestern" -} +} \ No newline at end of file diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index 7f28b3c7d..be3b8898c 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -28,7 +28,7 @@ }, "add-clone-dossier-template": { "save": "{type, select, clone{Clone} other{Save}}", - "save-and-edit": "{type, select, clone{Clone} other{Clone}} and edit", + "save-and-edit": "{type, select, clone{Clone} other{Save}} and edit", "title": "{type, select, clone{Clone {dossierTemplateName}} other{Create dossier template}}" }, "add-dossier-dialog": { @@ -2115,11 +2115,11 @@ "description": "Below, you will find a list of placeholders for dossier- and document-specific information. You can include these placeholders in your report templates.", "descriptions": { "dossier-attributes": "This placeholder gets replaced with the value of the dossier attribute {attribute}.", - "file-attributes": "This placeholder gets replaced with the value of the file attribute {attribute}.", + "file-attributes": "This placeholder is replaced with the value of the file attribute {attribute}.", "general": { "date": { "d-m-y": "This placeholder is replaced by the creation date of the report in the common day-month-year notation (dd.MM.yyyy), e.g. 15.10.2021.", - "m-d-y": "This placeholder gets replaced by the creation date of the report in the American all-numeric date format (MM/dd/yyyy), e.g. 10/15/2021.", + "m-d-y": "This placeholder is replaced by the creation date of the report in the American all-numeric date format (MM/dd/yyyy), e.g. 10/15/2021.", "y-m-d": "This placeholder is replaced by the creation date of the report in the international ISO 8601 format (yyyy-MM-dd), e.g. 2021-10-15." }, "dossier": { @@ -2140,7 +2140,7 @@ "justification-reason": "This placeholder is replaced by the justification text of the redaction.", "justification-text": "This placeholder is replaced by the justification text.", "page": "This placeholder is replaced by the page number of the redaction.", - "paragraph": "This placeholder is replaced by the paragraph that contains the redaction.", + "paragraph": "This placeholder is replaced by the initial words of the paragraph containing the redaction.", "paragraph-idx": "The placeholder is replaced by the number of the paragraph containing the redaction. Paragraphs are numbered on a per-page basis.", "value": "This placeholder is replaced by the value that was redacted." }, @@ -2505,4 +2505,4 @@ } }, "yesterday": "Yesterday" -} +} \ No newline at end of file diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json index 3fec888e4..f04ac163a 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -254,6 +254,9 @@ "watermarks": "Watermarks" }, "analysis-disabled": "Analysis disabled", + "annotation": { + "pending": "(Pending analysis)" + }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -308,14 +311,14 @@ "error": "Rekategorisierung des Bildes gescheitert: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove-hint": { - "error": "Failed to remove hint: {error}", - "success": "Hint removed!" - }, "remove": { "error": "Fehler beim Entfernen der Schwärzung: {error}", "success": "Schwärzung entfernt!" }, + "remove-hint": { + "error": "Failed to remove hint: {error}", + "success": "Hint removed!" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "erfolgreich Rückgängig gemacht" @@ -328,15 +331,15 @@ "remove-highlights": { "label": "Remove selected earmarks" }, + "resize": { + "label": "Größe ändern" + }, "resize-accept": { "label": "Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, - "resize": { - "label": "Größe ändern" - }, "see-references": { "label": "See references" }, @@ -354,7 +357,6 @@ }, "annotation-engines": { "dictionary": "{isHint, select, true{Hint} other{Redaction}} basierend auf Wörterbuch", - "dossier-dictionary": "", "imported": "Annotation is imported", "ner": "Redaktion basierend auf KI", "rule": "Schwärzung basierend auf Regel {rule}" @@ -369,9 +371,6 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, - "annotation": { - "pending": "(Pending analysis)" - }, "archived-dossiers-listing": { "no-data": { "title": "No archived dossiers." @@ -577,14 +576,18 @@ "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!" }, "confirmation-dialog": { + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", + "title": "Warnung!" + }, "approve-file-without-analysis": { "confirmationText": "Approve without analysis", "denyText": "Cancel", "question": "Analysis required to detect new components.", "title": "Warning!" }, - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen. Möchten Sie es trotzdem genehmigen?", + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -593,10 +596,6 @@ "question": "Analysis required to detect new components for at least one file.", "title": "Warning" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen. Möchten Sie sie trotzdem genehmigen?", - "title": "Warnung!" - }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft. Möchten Sie Reviewer werden und sich selbst dem Dokument zuweisen?", @@ -960,13 +959,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Niemandem zugewiesen" }, + "reanalyse": { + "action": "Datei analysieren" + }, "reanalyse-dossier": { "error": "Die Dateien konnten nicht für eine Reanalyse eingeplant werden. Bitte versuchen Sie es erneut.", "success": "Dateien für Reanalyse vorgesehen." }, - "reanalyse": { - "action": "Datei analysieren" - }, "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", "table-col-names": { @@ -1036,6 +1035,14 @@ "total-documents": "Anzahl der Dokumente", "total-people": "{count} {count, plural, one{user} other {users}}" }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Active", + "inactive": "Inactive", + "incomplete": "Incomplete" + } + }, "dossier-templates-listing": { "action": { "clone": "Clone template", @@ -1071,14 +1078,6 @@ "title": "{length} dossier {length, plural, one{template} other{templates}}" } }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Active", - "inactive": "Inactive", - "incomplete": "Incomplete" - } - }, "dossier-watermark-selector": { "heading": "Watermarks on documents", "no-watermark": "There is no watermark defined for the dossier template.
Contact your app admin to define one.", @@ -1274,6 +1273,15 @@ "title": "{length} {length, plural, one{entity} other{entities}}" } }, + "entity": { + "info": { + "actions": { + "revert": "Revert", + "save": "Save changes" + }, + "heading": "Edit entity" + } + }, "entity-rules-screen": { "error": { "generic": "Something went wrong... Entity rules update failed!" @@ -1288,28 +1296,19 @@ "warning-text": "Warning: experimental feature!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules" }, - "entity": { - "info": { - "actions": { - "revert": "Revert", - "save": "Save changes" - }, - "heading": "Edit entity" - } - }, "error": { "deleted-entity": { "dossier": { "action": "Zurück zur Übersicht", "label": "Dieses Dossier wurde gelöscht!" }, - "file-dossier": { - "action": "Zurück zur Übersicht", - "label": "Das Dossier dieser Datei wurde gelöscht!" - }, "file": { "action": "Zurück zum Dossier", "label": "Diese Datei wurde gelöscht!" + }, + "file-dossier": { + "action": "Zurück zur Übersicht", + "label": "Das Dossier dieser Datei wurde gelöscht!" } }, "file-preview": { @@ -1327,6 +1326,12 @@ }, "exact-date": "{day} {month} {year} um {hour}:{minute} Uhr", "file": "Datei", + "file-attribute": { + "update": { + "error": "Failed to update file attribute value!", + "success": "File attribute value has been updated successfully!" + } + }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1337,12 +1342,6 @@ "number": "Nummer", "text": "Freier Text" }, - "file-attribute": { - "update": { - "error": "Failed to update file attribute value!", - "success": "File attribute value has been updated successfully!" - } - }, "file-attributes-configurations": { "cancel": "Cancel", "form": { @@ -1561,15 +1560,6 @@ "csv": "File attributes were imported successfully from uploaded CSV file." } }, - "filter-menu": { - "filter-options": "Filteroptionen", - "filter-types": "Filter", - "label": "Filter", - "pages-without-annotations": "Only pages without annotations", - "redaction-changes": "Nur Anmerkungen mit Schwärzungsänderungen", - "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", - "with-comments": "Nur Anmerkungen mit Kommentaren" - }, "filter": { "analysis": "Analyse erforderlich", "comment": "Kommentare", @@ -1579,6 +1569,15 @@ "redaction": "Geschwärzt", "updated": "Aktualisiert" }, + "filter-menu": { + "filter-options": "Filteroptionen", + "filter-types": "Filter", + "label": "Filter", + "pages-without-annotations": "Only pages without annotations", + "redaction-changes": "Nur Anmerkungen mit Schwärzungsänderungen", + "unseen-pages": "Nur Anmerkungen auf unsichtbaren Seiten", + "with-comments": "Nur Anmerkungen mit Kommentaren" + }, "filters": { "assigned-people": "Beauftragt", "documents-status": "Documents state", @@ -1851,6 +1850,13 @@ "user-promoted-to-approver": "{user} wurde im Dossier {dossierHref, select, null{{dossierName}} other{{dossierName}}} zum Genehmiger ernannt!", "user-removed-as-dossier-member": "{user} wurde als Mitglied von: {dossierHref, select, null{{dossierName}} other{{dossierName}}} entfernt!" }, + "notifications": { + "button-text": "Notifications", + "deleted-dossier": "Deleted dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" + }, "notifications-screen": { "category": { "email-notifications": "E-Mail Benachrichtigungen", @@ -1864,7 +1870,6 @@ "dossier": "Dossierbezogene Benachrichtigungen", "other": "Andere Benachrichtigungen" }, - "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen bin", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Überprüfer zugewiesen bin", @@ -1882,6 +1887,7 @@ "USER_PROMOTED_TO_APPROVER": "Wenn ich Genehmiger in einem Dossier werde", "USER_REMOVED_AS_DOSSIER_MEMBER": "Wenn ich die Dossier-Mitgliedschaft verliere" }, + "options-title": "Wählen Sie aus, in welcher Kategorie Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofortig", @@ -1889,13 +1895,6 @@ }, "title": "Benachrichtigungseinstellungen" }, - "notifications": { - "button-text": "Notifications", - "deleted-dossier": "Deleted dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Mark as {type, select, read{read} unread{unread} other{}}" - }, "ocr": { "confirmation-dialog": { "cancel": "Cancel", @@ -1987,16 +1986,16 @@ "warnings-label": "Prompts and dialogs", "warnings-subtitle": "Do not show again options" }, + "processing": { + "basic": "Processing", + "ocr": "OCR" + }, "processing-status": { "ocr": "OCR", "pending": "Pending", "processed": "Processed", "processing": "Processing" }, - "processing": { - "basic": "Processing", - "ocr": "OCR" - }, "readonly": "Lesemodus", "readonly-archived": "Read only (archived)", "redact-text": { @@ -2133,7 +2132,6 @@ "display-name": "This placeholder is replaced by the name of the entity the component is based on." }, "excerpt": "Dieser Platzhalter wird durch einen Textausschnitt ersetzt, der die Schwärzung enthält.", - "is-skipped": "", "justification": "Dieser Platzhalter wird durch die Begründung der Schwärzung ersetzt. Es ist eine Kombination aus dem Rechtsverweis (justificationParagraph) und dem Begründungstext (justificationReason).", "justification-legal-basis": "This placeholder is replaced by the legal basis for the component.", "justification-paragraph": "Dieser Platzhalter wird durch den Rechtshinweis der Begründung der Redaktion ersetzt.", @@ -2141,7 +2139,6 @@ "justification-text": "This placeholder is replaced by the justification text.", "page": "Dieser Platzhalter wird durch die Seitenzahl der Redaktion ersetzt.", "paragraph": "Dieser Platzhalter wird durch den Absatz ersetzt, der die Schwärzung enthält.", - "paragraph-idx": "", "value": "This placeholder is replaced by the value that was extracted." }, "time": { @@ -2222,6 +2219,12 @@ "red-user-admin": "Benutzer-Admin", "regular": "Regulär" }, + "search": { + "active-dossiers": "ganze Plattform", + "all-dossiers": "all documents", + "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", + "this-dossier": "in diesem Dossier" + }, "search-screen": { "cols": { "assignee": "Bevollmächtigter", @@ -2245,12 +2248,6 @@ "no-match": "Keine Dokumente entsprechen Ihren aktuellen Filtern.", "table-header": "{length} search {length, plural, one{result} other{results}}" }, - "search": { - "active-dossiers": "ganze Plattform", - "all-dossiers": "all documents", - "placeholder": "Nach Dokumenten oder Dokumenteninhalt suchen", - "this-dossier": "in diesem Dossier" - }, "seconds": "seconds", "size": "Size", "smtp-auth-config": { @@ -2505,4 +2502,4 @@ } }, "yesterday": "Gestern" -} +} \ No newline at end of file diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index 684a5f00d..c025c4606 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -28,7 +28,7 @@ }, "add-clone-dossier-template": { "save": "{type, select, clone{Clone} other{Save}}", - "save-and-edit": "{type, select, clone{Clone} other{Clone}} and edit", + "save-and-edit": "{type, select, clone{Clone} other{Save}} and edit", "title": "{type, select, clone{Clone {dossierTemplateName}} other{Create dossier template}}" }, "add-dossier-dialog": { @@ -1724,7 +1724,7 @@ }, "initials-avatar": { "unassigned": "Unassigned", - "you": "" + "you": "You" }, "justifications-listing": { "actions": { @@ -2505,4 +2505,4 @@ } }, "yesterday": "Yesterday" -} +} \ No newline at end of file