diff --git a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts
index 252f8806d..3d4098c35 100644
--- a/apps/red-ui/src/app/modules/admin/admin-routing.module.ts
+++ b/apps/red-ui/src/app/modules/admin/admin-routing.module.ts
@@ -19,6 +19,7 @@ import { BaseEntityScreenComponent } from './base-entity-screen/base-entity-scre
import { PermissionsGuard } from '@guards/permissions-guard';
import { Roles } from '@users/roles';
import { IqserAuthGuard } from '@iqser/common-ui/lib/users';
+import { ComponentMappingsScreenComponent } from './screens/component-mappings/component-mappings-screen.component';
const dossierTemplateIdRoutes: IqserRoutes = [
{
@@ -76,6 +77,14 @@ const dossierTemplateIdRoutes: IqserRoutes = [
},
loadChildren: () => import('./screens/rules/rules.module').then(m => m.RulesModule),
},
+ {
+ path: 'component-mappings',
+ component: ComponentMappingsScreenComponent,
+ canActivate: [CompositeRouteGuard],
+ data: {
+ routeGuards: [IqserAuthGuard, RedRoleGuard],
+ },
+ },
{
path: 'file-attributes',
component: BaseDossierTemplateScreenComponent,
diff --git a/apps/red-ui/src/app/modules/admin/admin.module.ts b/apps/red-ui/src/app/modules/admin/admin.module.ts
index f34a45611..f41dbc11b 100644
--- a/apps/red-ui/src/app/modules/admin/admin.module.ts
+++ b/apps/red-ui/src/app/modules/admin/admin.module.ts
@@ -57,6 +57,7 @@ import { IqserUsersModule } from '@iqser/common-ui/lib/users';
import { SelectComponent } from '@shared/components/select/select.component';
import { PaginationComponent } from '@common-ui/pagination/pagination.component';
import { AddCloneDossierTemplateDialogComponent } from './dialogs/add-clone-dossier-template-dialog/add-clone-dossier-template-dialog.component';
+import { ComponentMappingsScreenComponent } from './screens/component-mappings/component-mappings-screen.component';
const dialogs = [
AddCloneDossierTemplateDialogComponent,
@@ -76,6 +77,7 @@ const screens = [
DigitalSignatureScreenComponent,
UserListingScreenComponent,
GeneralConfigScreenComponent,
+ ComponentMappingsScreenComponent,
];
const components = [
diff --git a/apps/red-ui/src/app/modules/admin/screens/component-mappings/component-mappings-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/component-mappings/component-mappings-screen.component.html
new file mode 100644
index 000000000..863ea0597
--- /dev/null
+++ b/apps/red-ui/src/app/modules/admin/screens/component-mappings/component-mappings-screen.component.html
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ entity.name }}
+
+
+
+ {{ entity.value }}
+
+
+
+
+
diff --git a/apps/red-ui/src/app/modules/admin/screens/component-mappings/component-mappings-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/component-mappings/component-mappings-screen.component.ts
new file mode 100644
index 000000000..510462288
--- /dev/null
+++ b/apps/red-ui/src/app/modules/admin/screens/component-mappings/component-mappings-screen.component.ts
@@ -0,0 +1,47 @@
+import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
+import { ListingComponent, TableColumnConfig, listingProvidersFactory, LoadingService, IconButtonTypes } from '@iqser/common-ui';
+import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
+import { defaultColorsTranslations } from '@translations/default-colors-translations';
+import { Roles } from '@users/roles';
+import { getCurrentUser } from '@common-ui/users';
+import { User } from '@red/domain';
+import { ComponentMapping } from '@red/domain';
+import { combineLatest } from 'rxjs';
+import { ComponentMappingsService } from '@services/entity-services/component-mappings.service';
+import { tap } from 'rxjs/operators';
+
+@Component({
+ templateUrl: './component-mappings-screen.component.html',
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ providers: listingProvidersFactory(ComponentMappingsScreenComponent),
+})
+export class ComponentMappingsScreenComponent extends ListingComponent implements OnInit {
+ tableColumnConfigs: readonly TableColumnConfig[] = [
+ { label: _('component-mappings-screen.table-col-names.name'), sortByKey: 'searchKey' },
+ { label: _('component-mappings-screen.table-col-names.version'), width: '2fr' },
+ ];
+ readonly tableHeaderLabel = _('component-mappings-screen.table-header.title');
+ readonly context$;
+ protected readonly currentUser = getCurrentUser();
+ protected readonly translations = defaultColorsTranslations;
+ protected readonly roles = Roles;
+ protected readonly iconButtonTypes = IconButtonTypes;
+
+ constructor(
+ private readonly _loadingService: LoadingService,
+ private readonly _componentMappingService: ComponentMappingsService,
+ ) {
+ super();
+ this.context$ = combineLatest([this._componentMappingService.loadData()]).pipe(
+ tap(([mappings]) => this.entitiesService.setEntities(mappings)),
+ );
+ }
+
+ ngOnInit() {
+ this._loadingService.stop();
+ }
+
+ openAddEditComponentMappingDialog(entity?: ComponentMapping) {}
+
+ openDeleteComponentMappingDialog(entity?: ComponentMapping) {}
+}
diff --git a/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts b/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts
index 1d9d63c4a..83620ad86 100644
--- a/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts
+++ b/apps/red-ui/src/app/modules/admin/shared/components/admin-side-nav/admin-side-nav.component.ts
@@ -106,6 +106,11 @@ export class AdminSideNavComponent implements OnInit {
(this.isIqserDevMode || this.canAccessRulesInDocumine) &&
this._permissionsService.has(Roles.rules.read),
},
+ {
+ screen: 'component-mappings',
+ label: _('admin-side-nav.component-mappings'),
+ show: this.isDocumine,
+ },
{
screen: 'default-colors',
label: _('admin-side-nav.default-colors'),
diff --git a/apps/red-ui/src/app/services/entity-services/component-mappings.service.ts b/apps/red-ui/src/app/services/entity-services/component-mappings.service.ts
new file mode 100644
index 000000000..384af91bc
--- /dev/null
+++ b/apps/red-ui/src/app/services/entity-services/component-mappings.service.ts
@@ -0,0 +1,52 @@
+import { Injectable } from '@angular/core';
+import { EntitiesService } from '@iqser/common-ui';
+import { ComponentMapping, IComponentMapping } from '@red/domain';
+import { Observable, of } from 'rxjs';
+
+const DATA = [
+ {
+ id: '1',
+ name: 'OECD Number',
+ version: 2,
+ searchKey: 'OECD Number',
+ },
+ {
+ id: '2',
+ name: 'Study Title',
+ version: 1,
+ searchKey: 'Study Title',
+ },
+ {
+ id: '3',
+ name: 'Report Number',
+ version: 2,
+ searchKey: 'Report Number',
+ },
+ {
+ id: '4',
+ name: 'GLP Study',
+ version: 5,
+ searchKey: 'GLP Study',
+ },
+ {
+ id: '5',
+ name: 'Performing Laboratory',
+ version: 2,
+ searchKey: 'Performing Laboratory',
+ },
+ {
+ id: '6',
+ name: 'Test',
+ version: 3,
+ searchKey: 'Test',
+ },
+];
+
+@Injectable({
+ providedIn: 'root',
+})
+export class ComponentMappingsService extends EntitiesService {
+ loadData(): Observable {
+ return of(DATA);
+ }
+}
diff --git a/apps/red-ui/src/app/users/roles.ts b/apps/red-ui/src/app/users/roles.ts
index 2ae41147f..dc7ee3b70 100644
--- a/apps/red-ui/src/app/users/roles.ts
+++ b/apps/red-ui/src/app/users/roles.ts
@@ -21,6 +21,10 @@ export const Roles = {
read: 'red-read-rules',
write: 'red-write-rules',
},
+ componentMappings: {
+ read: 'red-read-rules',
+ write: 'red-write-rules',
+ },
redactions: {
write: 'red-add-redaction',
readManual: 'red-read-manual-redactions',
diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json
index 67efc99c7..f0e9c8432 100644
--- a/apps/red-ui/src/assets/i18n/redact/de.json
+++ b/apps/red-ui/src/assets/i18n/redact/de.json
@@ -231,6 +231,7 @@
},
"admin-side-nav": {
"audit": "Audit",
+ "component-mappings": "",
"component-rule-editor": "",
"configurations": "Configurations",
"default-colors": "Default colors",
@@ -254,9 +255,6 @@
"watermarks": "Watermarks"
},
"analysis-disabled": "",
- "annotation": {
- "pending": "(Pending analysis)"
- },
"annotation-actions": {
"accept-recommendation": {
"label": "Empfehlung annehmen"
@@ -311,14 +309,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 +329,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 +369,9 @@
"skipped": "Übersprungen",
"text-highlight": "Earmark"
},
+ "annotation": {
+ "pending": "(Pending analysis)"
+ },
"archived-dossiers-listing": {
"no-data": {
"title": "No archived dossiers."
@@ -516,6 +517,24 @@
},
"title": "Component view"
},
+ "component-mappings-screen": {
+ "action": {
+ "delete": "",
+ "edit": ""
+ },
+ "add-new": "",
+ "bulk-actions": {
+ "delete": ""
+ },
+ "search": "",
+ "table-col-names": {
+ "name": "",
+ "version": ""
+ },
+ "table-header": {
+ "title": ""
+ }
+ },
"component-rules-screen": {
"error": {
"generic": ""
@@ -576,18 +595,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 +611,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 +978,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 +1054,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 +1089,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 +1292,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 +1306,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 +1345,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 +1355,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 +1579,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 +1588,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 +1869,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 +1882,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 +1900,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 +1907,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 +2005,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,12 +2238,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 +2261,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 +2521,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 860fd294f..992f36c85 100644
--- a/apps/red-ui/src/assets/i18n/redact/en.json
+++ b/apps/red-ui/src/assets/i18n/redact/en.json
@@ -231,6 +231,7 @@
},
"admin-side-nav": {
"audit": "Audit",
+ "component-mappings": "Component mappings",
"component-rule-editor": "",
"configurations": "Configurations",
"default-colors": "Default colors",
@@ -516,6 +517,24 @@
},
"title": "Component view"
},
+ "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": ""
@@ -2502,4 +2521,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 f04ac163a..99d638f9c 100644
--- a/apps/red-ui/src/assets/i18n/scm/de.json
+++ b/apps/red-ui/src/assets/i18n/scm/de.json
@@ -231,6 +231,7 @@
},
"admin-side-nav": {
"audit": "Audit",
+ "component-mappings": "",
"component-rule-editor": "Component rule editor",
"configurations": "Configurations",
"default-colors": "Default colors",
@@ -254,9 +255,6 @@
"watermarks": "Watermarks"
},
"analysis-disabled": "Analysis disabled",
- "annotation": {
- "pending": "(Pending analysis)"
- },
"annotation-actions": {
"accept-recommendation": {
"label": "Empfehlung annehmen"
@@ -311,14 +309,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 +329,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 +369,9 @@
"skipped": "Übersprungen",
"text-highlight": "Earmark"
},
+ "annotation": {
+ "pending": "(Pending analysis)"
+ },
"archived-dossiers-listing": {
"no-data": {
"title": "No archived dossiers."
@@ -516,6 +517,24 @@
},
"title": "Structured Component Management"
},
+ "component-mappings-screen": {
+ "action": {
+ "delete": "",
+ "edit": ""
+ },
+ "add-new": "",
+ "bulk-actions": {
+ "delete": ""
+ },
+ "search": "",
+ "table-col-names": {
+ "name": "",
+ "version": ""
+ },
+ "table-header": {
+ "title": ""
+ }
+ },
"component-rules-screen": {
"error": {
"generic": "Something went wrong... Component rules update failed!"
@@ -576,18 +595,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 +611,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 +978,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 +1054,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 +1089,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 +1292,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 +1306,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 +1345,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 +1355,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 +1579,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 +1588,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 +1869,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 +1882,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 +1900,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 +1907,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 +2005,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,12 +2238,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 +2261,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 +2521,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 b005ac747..2b40f93a9 100644
--- a/apps/red-ui/src/assets/i18n/scm/en.json
+++ b/apps/red-ui/src/assets/i18n/scm/en.json
@@ -231,6 +231,7 @@
},
"admin-side-nav": {
"audit": "Audit",
+ "component-mappings": "Component mappings",
"component-rule-editor": "Component rule editor",
"configurations": "Configurations",
"default-colors": "Default colors",
@@ -516,6 +517,24 @@
},
"title": "Component view"
},
+ "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!"
@@ -2502,4 +2521,4 @@
}
},
"yesterday": "Yesterday"
-}
\ No newline at end of file
+}
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.model.ts b/libs/red-domain/src/lib/component-mappings/component-mapping.model.ts
new file mode 100644
index 000000000..e0efbcccb
--- /dev/null
+++ b/libs/red-domain/src/lib/component-mappings/component-mapping.model.ts
@@ -0,0 +1,18 @@
+import { IComponentMapping } from './component-mapping';
+import { IListable } from '@iqser/common-ui';
+
+export class ComponentMapping implements IComponentMapping, IListable {
+ readonly id: string;
+ readonly name: string;
+ readonly version: number;
+
+ constructor(componentMapping: IComponentMapping) {
+ this.id = componentMapping.id;
+ this.name = componentMapping.name;
+ this.version = componentMapping.version;
+ }
+
+ get searchKey(): string {
+ return this.name;
+ }
+}
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..eb1465f42
--- /dev/null
+++ b/libs/red-domain/src/lib/component-mappings/component-mapping.ts
@@ -0,0 +1,5 @@
+export interface IComponentMapping {
+ id: string;
+ name: string;
+ version: number;
+}
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..c0a040a07
--- /dev/null
+++ b/libs/red-domain/src/lib/component-mappings/index.ts
@@ -0,0 +1,2 @@
+export * from './component-mapping.model';
+export * from './component-mapping';