From 9b0e1b6bae2597e8d08188532a72104e83157d98 Mon Sep 17 00:00:00 2001 From: Timo Date: Tue, 15 Dec 2020 15:23:42 +0200 Subject: [PATCH] Auto i18n and better handling for false positives --- apps/red-ui/src/app/dialogs/dialog.service.ts | 6 +++++- .../src/app/screens/file/model/annotation.wrapper.ts | 2 +- .../src/app/screens/file/model/file-data.model.ts | 8 +++++++- apps/red-ui/src/assets/i18n/de.json | 11 ++++++++--- apps/red-ui/src/assets/i18n/en.json | 3 +++ tools/auto-i18n/translateCache-de.txt | 11 +++++++++++ 6 files changed, 35 insertions(+), 6 deletions(-) diff --git a/apps/red-ui/src/app/dialogs/dialog.service.ts b/apps/red-ui/src/app/dialogs/dialog.service.ts index 407cc386b..38bf820e7 100644 --- a/apps/red-ui/src/app/dialogs/dialog.service.ts +++ b/apps/red-ui/src/app/dialogs/dialog.service.ts @@ -143,7 +143,11 @@ export class DialogService { const ref = this._dialog.open(ConfirmationDialogComponent, { ...dialogConfig, data: new ConfirmationDialogInput({ - question: removeFromDictionary ? 'confirmation-dialog.remove-from-dictionary.question' : 'confirmation-dialog.remove-only-here.question', + question: annotation.isManual + ? 'confirmation-dialog.remove-manual-redaction.question' + : removeFromDictionary + ? 'confirmation-dialog.remove-from-dictionary.question' + : 'confirmation-dialog.remove-only-here.question', translateParams: { entry: annotation.value, dictionary: annotation.dictionary } }) }); diff --git a/apps/red-ui/src/app/screens/file/model/annotation.wrapper.ts b/apps/red-ui/src/app/screens/file/model/annotation.wrapper.ts index e5f375c0a..b6cadc0be 100644 --- a/apps/red-ui/src/app/screens/file/model/annotation.wrapper.ts +++ b/apps/red-ui/src/app/screens/file/model/annotation.wrapper.ts @@ -39,7 +39,7 @@ export class AnnotationWrapper { } get isFalsePositive() { - return this.dictionary === 'false_positive'; + return this.dictionary === 'false_positive' && (this.superType === 'ignore' || this.superType === 'hint' || this.superType === 'redaction'); } get isManual() { diff --git a/apps/red-ui/src/app/screens/file/model/file-data.model.ts b/apps/red-ui/src/app/screens/file/model/file-data.model.ts index c27f5f27b..a3ba75b4d 100644 --- a/apps/red-ui/src/app/screens/file/model/file-data.model.ts +++ b/apps/red-ui/src/app/screens/file/model/file-data.model.ts @@ -67,7 +67,9 @@ export class FileDataModel { pairs.push({ redactionLogEntry: rdl, // only not declined - manualRedactionEntry: this.manualRedactions.entriesToAdd.find((eta) => (eta.id === rdl.id || eta.reason === rdl.id) && this._dateValid(eta)), + manualRedactionEntry: this.manualRedactions.entriesToAdd.find( + (eta) => (eta.id === rdl.id || eta.reason === rdl.id) && this._validateEntry(eta) + ), // only not declined idRemoval: this.manualRedactions.idsToRemove.find((idr) => idr.id === rdl.id && this._dateValid(idr)), comments: this.manualRedactions.comments[rdl.id] @@ -93,6 +95,10 @@ export class FileDataModel { return pairs; } + private _validateEntry(entry: ManualRedactionEntry): boolean { + return this._dateValid(entry) || entry.type === 'manual'; + } + private _dateValid(entry: ManualRedactionEntry | IdRemoval): boolean { return new Date(entry.processedDate).getTime() > new Date(this.fileStatus.lastProcessed).getTime() || !entry.processedDate; } diff --git a/apps/red-ui/src/assets/i18n/de.json b/apps/red-ui/src/assets/i18n/de.json index 9bc9b81c5..612183f34 100644 --- a/apps/red-ui/src/assets/i18n/de.json +++ b/apps/red-ui/src/assets/i18n/de.json @@ -47,7 +47,7 @@ "report": { "unavailable": "Der Redaktionsbericht ist erst verfügbar, wenn alle Dateien genehmigt wurden.", "unavailable-single": "Der Redaktionsbericht ist erst verfügbar, wenn diese Datei genehmigt wurde.", - "action": "Redaktionsbericht herunterladen" + "action": { "label": "Redaktionsbericht herunterladen", "efsa": "Mit EFSA-Vorlage herunterladen", "syngenta": "Mit Syngenta-Vorlage herunterladen" } }, "project-listing": { "search": "Projektname...", @@ -70,6 +70,7 @@ "due-date": "Geburtstermin", "template": "Projektvorlage" }, + "errors": { "project-already-exists": "Projekt mit diesem Namen existiert bereits!", "generic": "Projekt konnte nicht gespeichert werden" }, "actions": { "save": "speichern", "save-and-add-members": "Team speichern und bearbeiten" } }, "header": "Projekte", @@ -95,6 +96,7 @@ "collapse": "Details ausblenden" }, "project-overview": { + "no-data": { "title": "Es liegen noch keine Dokumente vor.", "action": "Dokument hochladen" }, "search": "Dokumentname...", "header-actions": { "edit": "Bearbeiten", @@ -108,7 +110,6 @@ "under-approval": "Zur Genehmigung", "approve": "Genehmigen", "under-review": "Wird überprüft", - "no-files": "Projekt ist leer!", "no-files-match": "Keine Datei entspricht Ihren aktuellen Filtern", "upload-files": "Legen Sie Dateien überall zum Hochladen ab!", "upload-files-btn": "Daten hochladen", @@ -323,7 +324,9 @@ "dictionary": "Zum Wörterbuch hinzufügen", "redaction": "Manuelle Redaktion", "request-dictionary": "Anfrage zum Wörterbuch hinzufügen", - "request-redaction": "Redaktion anfordern" + "request-redaction": "Redaktion anfordern", + "false-positive": "Falsch positiv setzen", + "request-false-positive": "Falsch positiv anfordern" }, "add-redaction": { "success": "Redaktionsvorschlag hinzugefügt!", "failed": "Manuelle Redaktion konnte nicht hinzugefügt werden: {{message}}" }, "actions": { "save": "speichern" }, @@ -332,6 +335,7 @@ "rectangle": "Benutzerdefiniertes Rechteck", "dictionary": "Wörterbuch", "reason": "Grund", + "reason-placeholder": "Wähle einen Grund ...", "legalBasis": "Rechtliche Grundlage", "comment": "Kommentar" } @@ -344,6 +348,7 @@ }, "confirmation-dialog": { "delete-file": { "title": "Löschung bestätigen", "question": "Möchten Sie fortfahren?" }, + "remove-manual-redaction": { "question": "Möchten Sie diese manuelle Redaktion wirklich entfernen?" }, "remove-from-dictionary": { "question": "Möchten Sie {{entry}} wirklich aus dem {{dictionary}} Wörterbuch entfernen?" }, "remove-only-here": { "question": "Möchten Sie {{entry}} nur hier entfernen?" } }, diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index e2e5fd5c4..818b514c6 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -510,6 +510,9 @@ "title": "Confirm deletion", "question": "Do you wish to proceed?" }, + "remove-manual-redaction": { + "question": "Are you sure you wish to remove this manual redaction?" + }, "remove-from-dictionary": { "question": "Are you sure you want to remove {{entry}} from the {{dictionary}} dictionary?" }, diff --git a/tools/auto-i18n/translateCache-de.txt b/tools/auto-i18n/translateCache-de.txt index 7a04829b6..7d026d7d6 100644 --- a/tools/auto-i18n/translateCache-de.txt +++ b/tools/auto-i18n/translateCache-de.txt @@ -430,3 +430,14 @@ Accept Recommendation|Empfehlung annehmen No members yet. Select from the list below.|Noch keine Mitglieder. Wählen Sie aus der folgenden Liste. Are you sure you want to remove {{entry}} only here?|Möchten Sie {{entry}} nur hier entfernen? +Download with EFSA Template|Mit EFSA-Vorlage herunterladen +Download with Syngenta Template|Mit Syngenta-Vorlage herunterladen +Project with this name already exists!|Projekt mit diesem Namen existiert bereits! +Failed to save project|Projekt konnte nicht gespeichert werden +There are no documents yet.|Es liegen noch keine Dokumente vor. +No members yet. +Select from the list below.|Noch keine Mitglieder. Wählen Sie aus der folgenden Liste. +Set false positive|Falsch positiv setzen +Request false positive|Falsch positiv anfordern +Select a reason ...|Wähle einen Grund ... +Are you sure you wish to remove this manual redaction?|Möchten Sie diese manuelle Redaktion wirklich entfernen?