{attribute}.",
+ "dossier-attributes": "This placeholder is replaced by the value of the dossier attribute {attribute}.",
"file-attributes": "This placeholder is replaced with the value of the file attribute {attribute}.",
"general": {
"date": {
@@ -2131,7 +2168,7 @@
},
"redaction": {
"entity": {
- "display-name": "This placeholder is replaced by the name of the entity the redaction is based on."
+ "display-name": "This placeholder is replaced by the name of the entity on which the redaction is based."
},
"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).",
@@ -2150,7 +2187,7 @@
}
}
},
- "invalid-upload": "Invalid format selected for upload! Supported formats are XLSX and DOCX",
+ "invalid-upload": "Invalid upload format. Supported formats: .xlsx and .docx",
"multi-file-report": "(Multi-file)",
"report-documents": "Report documents",
"setup": "Click the upload button on the right to upload your redaction report templates.",
@@ -2365,7 +2402,7 @@
"overwrite": "Overwrite"
},
"question": "Choose how to proceed:",
- "title": "The dictionary already has entries!"
+ "title": "The dictionary already has entries."
},
"upload-file": {
"upload-area-text": "Click or drag & drop anywhere on this area..."
@@ -2435,7 +2472,7 @@
},
"title": "Edit profile",
"update": {
- "success": "Successfully updated profile!"
+ "success": "Successfully updated profile."
}
},
"user-stats": {
@@ -2456,8 +2493,8 @@
},
"watermark-screen": {
"action": {
- "change-success": "Watermark has been updated!",
- "created-success": "Watermark has been created!",
+ "change-success": "Watermark has been updated.",
+ "created-success": "Watermark has been created.",
"error": "Failed to update watermark",
"revert": "Revert",
"save": "Save changes"
@@ -2487,7 +2524,7 @@
"watermarks-listing": {
"action": {
"delete": "Delete",
- "delete-success": "Watermark has been deleted!",
+ "delete-success": "Watermark has been deleted.",
"edit": "Edit"
},
"add-new": "New watermark",
@@ -2504,7 +2541,7 @@
"table-header": {
"title": "Watermarks"
},
- "watermark-is-used": "This watermark is already in use, are you sure you want to delete it?"
+ "watermark-is-used": "This watermark is already in use. Do you still want to delete it?"
},
"workflow": {
"selection": {
diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json
index b780ba66f..6dc3c29a1 100644
--- a/apps/red-ui/src/assets/i18n/scm/de.json
+++ b/apps/red-ui/src/assets/i18n/scm/de.json
@@ -94,6 +94,23 @@
},
"save": "Dossier-Vorlage speichern"
},
+ "add-edit-component-mapping": {
+ "actions": {
+ "save": "Save mapping"
+ },
+ "dialog": {
+ "title": "{type, select, add{Add New} edit{Edit} other{}} Component Mapping"
+ },
+ "form": {
+ "delimiter": "Delimiter",
+ "delimiter-placeholder": "Delimiter",
+ "encoding-type": "Encoding type",
+ "file": "Mapping file",
+ "name": "Mapping name",
+ "name-placeholder": "Mapping name",
+ "version": "Version"
+ }
+ },
"add-edit-dossier-attribute": {
"error": {
"generic": "Attribut konnte nicht gespeichert werden!"
@@ -231,6 +248,7 @@
},
"admin-side-nav": {
"audit": "Audit",
+ "component-mappings": "Component mappings",
"component-rule-editor": "Component rule editor",
"configurations": "Configurations",
"default-colors": "Default colors",
@@ -357,6 +375,7 @@
},
"annotation-engines": {
"dictionary": "{isHint, select, true{Hint} other{Redaction}} basierend auf Wörterbuch",
+ "dossier-dictionary": "Annotation based on dossier dictionary",
"imported": "Annotation is imported",
"ner": "Redaktion basierend auf KI",
"rule": "Schwärzung basierend auf Regel {rule}"
@@ -511,6 +530,24 @@
"value": ""
}
},
+ "component-mappings-screen": {
+ "action": {
+ "delete": "Delete mapping",
+ "edit": "Edit mapping"
+ },
+ "add-new": "New Mapping",
+ "bulk-actions": {
+ "delete": "Delete selected mappings"
+ },
+ "search": "Search by name...",
+ "table-col-names": {
+ "name": "name",
+ "version": "version"
+ },
+ "table-header": {
+ "title": "Component mapping"
+ }
+ },
"component-rules-screen": {
"error": {
"generic": "Something went wrong... Component rules update failed!"
@@ -1641,7 +1678,8 @@
},
"test": {
"error": "Die Test-E-Mail konnte nicht gesendet werden! Bitte überprüfen Sie die E-Mail-Adresse.",
- "success": "Die Test-E-Mail wurde erfolgreich versendet!"
+ "success": "Die Test-E-Mail wurde erfolgreich versendet!",
+ "warning": "Admin mail address not set. Test email sent to {recipientEmail} instead."
},
"title": "SMTP-Konto konfigurieren"
},
@@ -2132,6 +2170,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": "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": "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 +2178,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": "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": {
diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json
index b981a087c..d9066d318 100644
--- a/apps/red-ui/src/assets/i18n/scm/en.json
+++ b/apps/red-ui/src/assets/i18n/scm/en.json
@@ -94,6 +94,23 @@
},
"save": "Save dossier template"
},
+ "add-edit-component-mapping": {
+ "actions": {
+ "save": "Save mapping"
+ },
+ "dialog": {
+ "title": "{type, select, add{Add New} edit{Edit} other{}} Component Mapping"
+ },
+ "form": {
+ "delimiter": "Delimiter",
+ "delimiter-placeholder": "Delimiter",
+ "encoding-type": "Encoding type",
+ "file": "Mapping file",
+ "name": "Mapping name",
+ "name-placeholder": "Mapping name",
+ "version": "Version"
+ }
+ },
"add-edit-dossier-attribute": {
"error": {
"generic": "Failed to save attribute!"
@@ -231,6 +248,7 @@
},
"admin-side-nav": {
"audit": "Audit",
+ "component-mappings": "Component mappings",
"component-rule-editor": "Component rule editor",
"configurations": "Configurations",
"default-colors": "Default colors",
@@ -513,6 +531,24 @@
"value": "Value"
}
},
+ "component-mappings-screen": {
+ "action": {
+ "delete": "Delete mapping",
+ "edit": "Edit mapping"
+ },
+ "add-new": "New Mapping",
+ "bulk-actions": {
+ "delete": "Delete selected mappings"
+ },
+ "search": "Search by name...",
+ "table-col-names": {
+ "name": "name",
+ "version": "version"
+ },
+ "table-header": {
+ "title": "Component mapping"
+ }
+ },
"component-rules-screen": {
"error": {
"generic": "Something went wrong... Component rules update failed!"
@@ -1643,7 +1679,8 @@
},
"test": {
"error": "Test e-mail could not be sent! Please revise the e-mail address.",
- "success": "Test e-mail was sent successfully!"
+ "success": "Test e-mail was sent successfully!",
+ "warning": "Admin mail address not set. Test email sent to {recipientEmail} instead."
},
"title": "Configure SMTP Account"
},
diff --git a/libs/red-domain/src/index.ts b/libs/red-domain/src/index.ts
index e324c83a5..4d040b981 100644
--- a/libs/red-domain/src/index.ts
+++ b/libs/red-domain/src/index.ts
@@ -29,3 +29,4 @@ export * from './lib/digital-signature';
export * from './lib/watermarks';
export * from './lib/colors';
export * from './lib/component-log';
+export * from './lib/component-mappings';
diff --git a/libs/red-domain/src/lib/component-mappings/component-mapping-list.model.ts b/libs/red-domain/src/lib/component-mappings/component-mapping-list.model.ts
new file mode 100644
index 000000000..24425c4a7
--- /dev/null
+++ b/libs/red-domain/src/lib/component-mappings/component-mapping-list.model.ts
@@ -0,0 +1,16 @@
+import { ComponentMapping, IComponentMapping } from './component-mapping';
+
+export interface IComponentMappingList {
+ dossierTemplateId: string;
+ componentMappingList: IComponentMapping[];
+}
+
+export class ComponentMappingList implements IComponentMappingList {
+ readonly dossierTemplateId: string;
+ readonly componentMappingList: ComponentMapping[];
+
+ constructor(componentMappingList: IComponentMappingList) {
+ this.dossierTemplateId = componentMappingList.dossierTemplateId;
+ this.componentMappingList = componentMappingList.componentMappingList;
+ }
+}
diff --git a/libs/red-domain/src/lib/component-mappings/component-mapping.ts b/libs/red-domain/src/lib/component-mappings/component-mapping.ts
new file mode 100644
index 000000000..b8e1e7745
--- /dev/null
+++ b/libs/red-domain/src/lib/component-mappings/component-mapping.ts
@@ -0,0 +1,38 @@
+import { IListable } from '@iqser/common-ui';
+
+export interface IComponentMapping extends IListable {
+ id: string;
+ name: string;
+ fileName: string;
+ version: number;
+ columnLabels: string[];
+ numberOfLines: number;
+ encoding: string;
+ delimiter: string;
+}
+
+export class ComponentMapping implements IComponentMapping, IListable {
+ readonly id: string;
+ readonly name: string;
+ readonly fileName: string;
+ readonly version: number;
+ readonly columnLabels: string[];
+ readonly numberOfLines: number;
+ readonly encoding: string;
+ readonly delimiter: string;
+
+ constructor(componentMapping: IComponentMapping) {
+ this.id = componentMapping.id;
+ this.name = componentMapping.name;
+ this.fileName = componentMapping.fileName;
+ this.version = componentMapping.version;
+ this.columnLabels = componentMapping.columnLabels;
+ this.numberOfLines = componentMapping.numberOfLines;
+ this.encoding = componentMapping.encoding;
+ this.delimiter = componentMapping.delimiter;
+ }
+
+ get searchKey(): string {
+ return this.name;
+ }
+}
diff --git a/libs/red-domain/src/lib/component-mappings/index.ts b/libs/red-domain/src/lib/component-mappings/index.ts
new file mode 100644
index 000000000..88026faa7
--- /dev/null
+++ b/libs/red-domain/src/lib/component-mappings/index.ts
@@ -0,0 +1,2 @@
+export * from './component-mapping-list.model';
+export * from './component-mapping';
diff --git a/libs/red-domain/src/lib/configuration/smtp-configuration.ts b/libs/red-domain/src/lib/configuration/smtp-configuration.ts
index 4095e55f5..88226f110 100644
--- a/libs/red-domain/src/lib/configuration/smtp-configuration.ts
+++ b/libs/red-domain/src/lib/configuration/smtp-configuration.ts
@@ -13,3 +13,10 @@ export interface ISmtpConfiguration {
starttls?: boolean;
user?: string;
}
+
+export interface ITextConnectionResponse {
+ adminEmail: boolean;
+ reasonPhrase: string;
+ recipientEmail: string;
+ statusCode: number;
+}
diff --git a/package.json b/package.json
index b232ca09f..ccf647ba5 100644
--- a/package.json
+++ b/package.json
@@ -34,7 +34,7 @@
"@messageformat/core": "^3.3.0",
"@ngx-translate/core": "15.0.0",
"@ngx-translate/http-loader": "8.0.0",
- "@pdftron/webviewer": "10.8.0",
+ "@pdftron/webviewer": "10.9.0",
"chart.js": "4.4.2",
"dayjs": "1.11.10",
"file-saver": "^2.0.5",
diff --git a/yarn.lock b/yarn.lock
index e7849a41c..9d471b01e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3131,10 +3131,10 @@
resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-18.2.4.tgz#8e7eb0f9c7bee12977f37ebddc935463d9251793"
integrity sha512-Y52Afz02Ub1kRZXd6NUTwPMjKQqBKZ35e5dUEpl14na2fWvdgdMz4bYOBPUcmQrovlxBGhmFXtFzxkdW3zyRbQ==
-"@pdftron/webviewer@10.8.0":
- version "10.8.0"
- resolved "https://registry.yarnpkg.com/@pdftron/webviewer/-/webviewer-10.8.0.tgz#d19d698cb80d011acb4a9a844141bf37d186ac1f"
- integrity sha512-/VPHEDTrqVEbjLTu5YIDExARXqrG6JUKtguOjvF+hlH21V465FIVw/BfZw+A0rpxSZFoTYf0Wtly5u8ZFXofng==
+"@pdftron/webviewer@10.9.0":
+ version "10.9.0"
+ resolved "https://registry.yarnpkg.com/@pdftron/webviewer/-/webviewer-10.9.0.tgz#c39105189c70cfaa0601dae02e688bb510f74e3b"
+ integrity sha512-na6dQE1aFVc42zeRYjk0UDWKqdsI1PcQeQdAcwpNCKyND9W3s8iG8GLkZzfvP2CZjGhj47l28LkZ0NUBrq3weQ==
"@phenomnomnominal/tsquery@^4.1.1":
version "4.2.0"