From 87e2e27e563169165fb5bcc56c834f872ad18f23 Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Thu, 25 Jul 2024 00:35:48 +0300 Subject: [PATCH 01/20] RED-9260 - Component Management UI --- .../component-definitions.component.html | 55 ++++++++++--------- .../component-definitions.component.scss | 13 ++++- .../component-definitions.component.ts | 28 ++++------ apps/red-ui/src/assets/config/config.json | 10 ++-- 4 files changed, 58 insertions(+), 48 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.html b/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.html index 7f371474f..c6ae97bdf 100644 --- a/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.html @@ -19,7 +19,7 @@
-
+
{{ 'component-definitions.columns.position' | translate }}
@@ -27,32 +27,37 @@
- @for (component of componentDefinitions; track component) { -
-
-
- - {{ component.rank }} -
-
{{ component.displayName }}
-
- @if (permissionsService.canEditEntities()) { - - } - +
+ @for (component of componentDefinitions; track component) { +
+
+
+ + {{ component.rank }} +
+
{{ component.displayName }}
+
+ @if (permissionsService.canEditEntities()) { + + } + @if (selectedComponent?.id === component.id) { + + } +
-
- } + } +
@if (selectedComponent) {
diff --git a/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.scss b/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.scss index 80af0380b..b54da356d 100644 --- a/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.scss @@ -32,6 +32,10 @@ align-items: center; gap: 5px; + iqser-circle-button { + visibility: hidden; + } + .arrow-right { transform: scale(0.7); } @@ -58,7 +62,6 @@ .content { display: flex; gap: 20px; - height: 100%; .components-list { flex: 1; @@ -71,6 +74,7 @@ .list-item { height: 80px; + transition: background 0.3s ease; } .header, @@ -95,6 +99,10 @@ } } } + + .list-item:hover > .item-content > .right-content > iqser-circle-button { + visibility: visible; + } } section { @@ -112,6 +120,9 @@ } .cdk-drag-preview { + .list-item { + transition: background 0.3s ease; + } .item-content { @extend %item-content-style; } diff --git a/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.ts b/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.ts index 31130e284..bf078ecaf 100644 --- a/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.ts @@ -1,12 +1,5 @@ import { Component, OnInit, signal } from '@angular/core'; -import { - BaseFormComponent, - CircleButtonComponent, - IconButtonComponent, - IqserDialog, - listingProvidersFactory, - LoadingService, -} from '@iqser/common-ui'; +import { BaseFormComponent, CircleButtonComponent, IconButtonComponent, listingProvidersFactory, LoadingService } from '@iqser/common-ui'; import { ComponentDefinitionsService } from '@services/entity-services/component-definitions.service'; import { firstValueFrom } from 'rxjs'; import { getParam } from '@common-ui/utils'; @@ -50,7 +43,6 @@ export default class ComponentDefinitionsComponent extends BaseFormComponent imp constructor( private readonly _loadingService: LoadingService, private readonly _componentDefinitionsService: ComponentDefinitionsService, - private readonly _dialog: IqserDialog, private readonly _formBuilder: FormBuilder, private readonly _dialogService: AdminDialogService, protected readonly permissionsService: PermissionsService, @@ -96,13 +88,15 @@ export default class ComponentDefinitionsComponent extends BaseFormComponent imp } async drop(event: CdkDragDrop) { - moveItemInArray(this.#componentDefinitions(), event.previousIndex, event.currentIndex); + if (event.isPointerOverContainer) { + moveItemInArray(this.#componentDefinitions(), event.previousIndex, event.currentIndex); - const componentIds = this.#componentDefinitions().map(c => c.id); - const componentDefinitions = await firstValueFrom( - this._componentDefinitionsService.reorderComponentDefinitions(this.#dossierTemplateId, componentIds), - ); - this.#componentDefinitions.set(componentDefinitions); + const componentIds = this.#componentDefinitions().map(c => c.id); + const componentDefinitions = await firstValueFrom( + this._componentDefinitionsService.reorderComponentDefinitions(this.#dossierTemplateId, componentIds), + ); + this.#componentDefinitions.set(componentDefinitions); + } } async deleteComponent(componentId: string) { @@ -119,8 +113,8 @@ export default class ComponentDefinitionsComponent extends BaseFormComponent imp #getForm() { return this._formBuilder.group({ - displayName: [this.selectedComponent.displayName, Validators.required], - description: [this.selectedComponent.description], + displayName: [this.selectedComponent?.displayName, Validators.required], + description: [this.selectedComponent?.description], }); } diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 5f6c0ce6e..2ccc6f6d1 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,9 +1,9 @@ { "ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_URL": null, - "API_URL": "https://dan2.iqser.cloud", + "API_URL": "https://frontend2.iqser.cloud", "APP_NAME": "RedactManager", - "IS_DOCUMINE": false, + "IS_DOCUMINE": true, "RULE_EDITOR_DEV_ONLY": false, "AUTO_READ_TIME": 3, "BACKEND_APP_VERSION": "4.4.40", @@ -13,13 +13,13 @@ "MAX_RETRIES_ON_SERVER_ERROR": 3, "OAUTH_CLIENT_ID": "redaction", "OAUTH_IDP_HINT": null, - "OAUTH_URL": "https://dan2.iqser.cloud/auth", + "OAUTH_URL": "https://frontend2.iqser.cloud/auth", "RECENT_PERIOD_IN_HOURS": 24, "SELECTION_MODE": "structural", "MANUAL_BASE_URL": "https://docs.redactmanager.com/preview", "ANNOTATIONS_THRESHOLD": 1000, - "THEME": "redact", - "BASE_TRANSLATIONS_DIRECTORY": "/assets/i18n/redact/", + "THEME": "scm", + "BASE_TRANSLATIONS_DIRECTORY": "/assets/i18n/scm/", "AVAILABLE_NOTIFICATIONS_DAYS": 30, "AVAILABLE_OLD_NOTIFICATIONS_MINUTES": 60, "NOTIFICATIONS_THRESHOLD": 1000, From 62b8a554060d668460eee2aef39b0e4970820f37 Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Sun, 11 Aug 2024 21:05:20 +0300 Subject: [PATCH 02/20] RED-8748 - Integrated component view in DocuMine --- .../annotation-wrapper.component.scss | 7 +++-- .../file-workload.component.html | 1 - .../file-workload/file-workload.component.ts | 31 +++++++++++++++---- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-wrapper/annotation-wrapper.component.scss b/apps/red-ui/src/app/modules/file-preview/components/annotation-wrapper/annotation-wrapper.component.scss index 36304a969..76eb01385 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/annotation-wrapper/annotation-wrapper.component.scss +++ b/apps/red-ui/src/app/modules/file-preview/components/annotation-wrapper/annotation-wrapper.component.scss @@ -58,14 +58,17 @@ } } - &:hover, - &.help-mode { + &:hover { background-color: var(--iqser-annotation-hover); ::ng-deep .annotation-actions { display: flex; } } + + &.active { + background-color: var(--iqser-annotation-hover); + } } .hide-comments { diff --git a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html index 531d15776..b7fe3565f 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html +++ b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html @@ -162,7 +162,6 @@ #annotationsElement (keydown)="preventKeyDefault($event)" (keyup)="preventKeyDefault($event)" - [class.active-panel]="!pagesPanelActive" [hidden]="excludedPagesService.shown()" class="annotations" id="annotations-list" diff --git a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts index 3bc1ba7b9..f72d24724 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts @@ -94,6 +94,7 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On protected displayedPages: number[] = []; protected pagesPanelActive = true; protected enabledFilters = []; + #displayedPagesChanged = false; constructor( readonly filterService: FilterService, @@ -407,7 +408,8 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On ): Map { const onlyPageWithAnnotations = this.viewModeService.onlyPagesWithAnnotations(); if (!primary || primary.length === 0) { - this.displayedPages = onlyPageWithAnnotations ? [] : this.#allPages; + const pages = onlyPageWithAnnotations ? [] : this.#allPages; + this.#setDisplayedPages(pages); return; } @@ -429,15 +431,16 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On this.enabledFilters = this.filterService.enabledFlatFilters; if (this.enabledFilters.some(f => f.id === 'pages-without-annotations')) { if (this.enabledFilters.length === 1 && !onlyPageWithAnnotations) { - this.displayedPages = this.#allPages.filter(page => !pagesThatDisplayAnnotations.includes(page)); + const pages = this.#allPages.filter(page => !pagesThatDisplayAnnotations.includes(page)); + this.#setDisplayedPages(pages); } else { - this.displayedPages = []; + this.#setDisplayedPages([]); } this.displayedAnnotations.clear(); } else if (this.enabledFilters.length || onlyPageWithAnnotations || componentReferenceIds) { - this.displayedPages = pagesThatDisplayAnnotations; + this.#setDisplayedPages(pagesThatDisplayAnnotations); } else { - this.displayedPages = this.#allPages; + this.#setDisplayedPages(this.#allPages); } this.displayedPages.sort((a, b) => a - b); @@ -533,9 +536,25 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On } #scrollToFirstAnnotationPage(annotations: Map[]>) { - if (this.isDocumine && annotations.size && !this.displayedPages.includes(this.pdf.currentPage())) { + if (this.isDocumine && annotations.size && this.#displayedPagesChanged && !this.displayedPages.includes(this.pdf.currentPage())) { const page = annotations.keys().next().value; this.pdf.navigateTo(page); } } + + #setDisplayedPages(newDisplayedPages: number[]) { + if (!this.#samePages(newDisplayedPages)) { + this.displayedPages = newDisplayedPages; + this.#displayedPagesChanged = true; + return; + } + this.#displayedPagesChanged = false; + } + + #samePages(newDisplayedPages: number[]) { + return ( + this.displayedPages.length === newDisplayedPages.length && + this.displayedPages.every((value, index) => value === newDisplayedPages[index]) + ); + } } From 0d7adb4e6b7c9fd869c450d70f2a978d0c097cf2 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Mon, 12 Aug 2024 11:12:31 +0300 Subject: [PATCH 03/20] RED-9777: added help mode missing links. --- .../admin-side-nav.component.ts | 4 + ...sier-overview-screen-header.component.html | 2 +- ...-structured-component-value.component.html | 8 +- ...-structured-component-value.component.scss | 5 ++ ...le-structured-component-value.component.ts | 6 +- .../file-workload.component.html | 4 +- ...ctured-component-management.component.html | 6 +- .../edit-annotation-dialog.component.html | 2 +- .../remove-annotation-dialog.component.html | 4 +- .../dossiers-listing-actions.component.html | 2 +- .../dossiers-listing-actions.component.ts | 3 +- .../file-actions/file-actions.component.ts | 2 +- .../src/assets/help-mode/help-mode-keys.json | 86 +++++++++++++++++++ 13 files changed, 119 insertions(+), 15 deletions(-) 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 e724280e4..6f619125f 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 @@ -96,11 +96,13 @@ export class AdminSideNavComponent implements OnInit { { screen: 'entity-rules', label: _('admin-side-nav.entity-rule-editor'), + helpModeKey: 'rule_editors', show: (this.isIqserDevMode || this.canAccessRulesInDocumine) && this._permissionsService.has(Roles.rules.read), }, { screen: 'component-rules', label: _('admin-side-nav.component-rule-editor'), + helpModeKey: 'rule_editors', show: this.isDocumine && (this.isIqserDevMode || this.canAccessRulesInDocumine) && @@ -109,11 +111,13 @@ export class AdminSideNavComponent implements OnInit { { screen: 'component-mappings', label: _('admin-side-nav.component-mappings'), + helpModeKey: 'component_mappings', show: this.isDocumine, }, { screen: 'components', label: _('admin-side-nav.components'), + helpModeKey: 'components_management', show: this.isDocumine, }, { diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.html b/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.html index 135e63064..5e45b10fa 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.html +++ b/apps/red-ui/src/app/modules/dossier-overview/components/screen-header/dossier-overview-screen-header.component.html @@ -7,7 +7,7 @@ > @if (hasUpdatedValues) { @@ -26,17 +28,19 @@
-
+
@@ -56,6 +60,7 @@ diff --git a/apps/red-ui/src/app/modules/file-preview/components/editable-structured-component-value/editable-structured-component-value.component.scss b/apps/red-ui/src/app/modules/file-preview/components/editable-structured-component-value/editable-structured-component-value.component.scss index 3ee2c0515..0246ffeb3 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/editable-structured-component-value/editable-structured-component-value.component.scss +++ b/apps/red-ui/src/app/modules/file-preview/components/editable-structured-component-value/editable-structured-component-value.component.scss @@ -29,6 +29,11 @@ iqser-circle-button { visibility: hidden; + + &.help-mode { + visibility: visible; + z-index: 600; + } } .changes-dot { diff --git a/apps/red-ui/src/app/modules/file-preview/components/editable-structured-component-value/editable-structured-component-value.component.ts b/apps/red-ui/src/app/modules/file-preview/components/editable-structured-component-value/editable-structured-component-value.component.ts index 90dd06fc8..5617d84e0 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/editable-structured-component-value/editable-structured-component-value.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/editable-structured-component-value/editable-structured-component-value.component.ts @@ -1,9 +1,9 @@ import { CdkDrag, CdkDragDrop, CdkDragHandle, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop'; -import { KeyValuePipe, NgClass, NgForOf, NgIf } from '@angular/common'; +import { AsyncPipe, KeyValuePipe, NgClass, NgForOf, NgIf } from '@angular/common'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { MatIcon } from '@angular/material/icon'; -import { CircleButtonComponent, IconButtonComponent, IconButtonTypes, IqserDialog } from '@iqser/common-ui'; +import { CircleButtonComponent, HelpModeService, IconButtonComponent, IconButtonTypes, IqserDialog } from '@iqser/common-ui'; import { TranslateModule } from '@ngx-translate/core'; import { IComponentLogEntry, IComponentValue } from '@red/domain'; import { RevertValueDialogComponent } from '../../dialogs/docu-mine/revert-value-dialog/revert-value-dialog.component'; @@ -27,6 +27,7 @@ import { FilePreviewStateService } from '../../services/file-preview-state.servi NgForOf, CdkDragHandle, FormsModule, + AsyncPipe, ], }) export class EditableStructuredComponentValueComponent implements OnInit { @@ -43,6 +44,7 @@ export class EditableStructuredComponentValueComponent implements OnInit { selected = false; constructor( + readonly helpModeService: HelpModeService, private readonly _iqserDialog: IqserDialog, private readonly _state: FilePreviewStateService, ) {} diff --git a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html index 531d15776..f5cc9ecf5 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html +++ b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html @@ -246,7 +246,7 @@ - + @@ -254,7 +254,7 @@ - - + +
-
+
{{ 'component-management.table-header.component' | translate }}
diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.html b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.html index 47979cbd3..9c1f26c13 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.html +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.html @@ -1,4 +1,4 @@ -
+
diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.html b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.html index 3d7fe1b1c..1cef8cb15 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.html +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.html @@ -1,4 +1,4 @@ -
+
(); + readonly isDocumine = getConfig().IS_DOCUMINE; analysisForced: boolean; files: File[]; diff --git a/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.ts b/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.ts index 60c37c090..19a721f98 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/components/file-actions/file-actions.component.ts @@ -128,7 +128,7 @@ export class FileActionsComponent implements OnChanges { tooltipClass: 'small', show: this.showDownload, disabled: this.file.processingStatus === ProcessingFileStatuses.ERROR, - helpModeKey: 'download', + helpModeKey: this.#isDocumine ? 'download_document' : 'download', }, { id: 'btn-delete_file', diff --git a/apps/red-ui/src/assets/help-mode/help-mode-keys.json b/apps/red-ui/src/assets/help-mode/help-mode-keys.json index bab5118aa..06209d4b4 100644 --- a/apps/red-ui/src/assets/help-mode/help-mode-keys.json +++ b/apps/red-ui/src/assets/help-mode/help-mode-keys.json @@ -651,6 +651,11 @@ "documentKey": "workload_filter", "overlappingElements": ["USER_MENU", "DOCUMENT_INFO"] }, + { + "elementKey": "filter_annotations", + "documentKey": "filter_annotations", + "overlappingElements": ["USER_MENU", "DOCUMENT_INFO"] + }, { "elementKey": "workload_bulk_selection", "documentKey": "workload_bulk_selection", @@ -692,5 +697,86 @@ { "elementKey": "document_list_view", "documentKey": "document_list" + }, + { + "elementKey": "editor_edit_component", + "documentKey": "editor_edit_component", + "scrollableParentView": "COMPONENTS_VIEW" + }, + { + "elementKey": "edit_component", + "documentKey": "edit_component" + }, + { + "elementKey": "add_component_value", + "documentKey": "add_component_value" + }, + { + "elementKey": "undo_component_change", + "documentKey": "undo_component_change" + }, + { + "elementKey": "change_component_order", + "documentKey": "change_component_order" + }, + { + "elementKey": "remove_component_value", + "documentKey": "remove_component_value" + }, + { + "elementKey": "filter_components", + "documentKey": "filter_components" + }, + { + "elementKey": "annotations_list", + "documentKey": "annotations_list" + }, + { + "elementKey": "components_table", + "documentKey": "components_table" + }, + { + "elementKey": "components_table", + "documentKey": "components_table" + }, + { + "elementKey": "remove_annotation_DIALOG", + "documentKey": "remove_annotation" + }, + { + "elementKey": "edit_annotation_DIALOG", + "documentKey": "edit_annotation" + }, + { + "elementKey": "dossier_download_dossier", + "documentKey": "dossier_download_dossier", + "overlappingElements": ["USER_MENU"] + }, + { + "elementKey": "dossier_download_document", + "documentKey": "dossier_download_document", + "scrollableParentView": "VIRTUAL_SCROLL" + }, + { + "elementKey": "template_download_dossier", + "documentKey": "template_download_dossier", + "scrollableParentView": "VIRTUAL_SCROLL" + }, + { + "elementKey": "editor_download_document", + "documentKey": "editor_download_document", + "overlappingElements": ["USER_MENU"] + }, + { + "elementKey": "rule_editors", + "documentKey": "rule_editors" + }, + { + "elementKey": "component_mappings", + "documentKey": "component_mappings" + }, + { + "elementKey": "components_management", + "documentKey": "components_management" } ] From d7cc8e3232ff151a389bd475b531eb32c7be0d21 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Mon, 12 Aug 2024 11:16:24 +0300 Subject: [PATCH 04/20] RED-9777: update common ui. --- libs/common-ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/common-ui b/libs/common-ui index c331a6130..6547eb2ad 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit c331a61309dfa220a5c83228438bc138539d2045 +Subproject commit 6547eb2ad53d9df97a08210d7edb6d849e59d998 From 591b6eee363a263573d45ff4879ac7e618b0d437 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Mon, 12 Aug 2024 11:20:23 +0300 Subject: [PATCH 05/20] RED-9777: fix. --- .../annotations-list/annotations-list.component.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotations-list/annotations-list.component.ts b/apps/red-ui/src/app/modules/file-preview/components/annotations-list/annotations-list.component.ts index a6827d447..7535542c1 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/annotations-list/annotations-list.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/annotations-list/annotations-list.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectorRef, Component, computed, ElementRef, EventEmitter, Input, Output } from '@angular/core'; +import { Component, computed, ElementRef, EventEmitter, Input, Output } from '@angular/core'; import { getConfig, HasScrollbarDirective } from '@iqser/common-ui'; import { FilterService } from '@iqser/common-ui/lib/filtering'; import { IqserEventTarget } from '@iqser/common-ui/lib/utils'; @@ -36,7 +36,6 @@ export class AnnotationsListComponent extends HasScrollbarDirective { constructor( protected readonly _elementRef: ElementRef, - protected readonly _changeDetector: ChangeDetectorRef, private readonly _multiSelectService: MultiSelectService, private readonly _filterService: FilterService, private readonly _userPreferenceService: UserPreferenceService, @@ -45,7 +44,7 @@ export class AnnotationsListComponent extends HasScrollbarDirective { private readonly _listingService: AnnotationsListingService, readonly annotationReferencesService: AnnotationReferencesService, ) { - super(_elementRef, _changeDetector); + super(_elementRef); } annotationClicked(annotation: AnnotationWrapper, $event: MouseEvent): void { From 8d970779f5e237b8395c34fc8418d96bd5beee0e Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Mon, 12 Aug 2024 11:25:44 +0300 Subject: [PATCH 06/20] RED-9866: remove version limit on ARCHIVE DOSSIER feature. --- apps/red-ui/src/app/app-routing.module.ts | 3 +-- .../base-screen/base-screen.component.ts | 5 +---- .../dossiers-listing-screen.component.html | 2 +- .../screen/dossiers-listing-screen.component.ts | 5 +---- .../search-screen/search-screen.component.ts | 17 +++-------------- .../dossiers/archived-dossiers.service.ts | 6 ++---- .../src/app/services/permissions.service.ts | 10 +--------- apps/red-ui/src/assets/features/features.json | 7 +------ libs/red-domain/src/lib/dossiers/constants.ts | 1 - 9 files changed, 11 insertions(+), 45 deletions(-) diff --git a/apps/red-ui/src/app/app-routing.module.ts b/apps/red-ui/src/app/app-routing.module.ts index de57e29c3..713f365da 100644 --- a/apps/red-ui/src/app/app-routing.module.ts +++ b/apps/red-ui/src/app/app-routing.module.ts @@ -16,7 +16,7 @@ import { CompositeRouteGuard, DEFAULT_REDIRECT_KEY, IqserPermissionsGuard, Iqser import { TenantSelectComponent } from '@iqser/common-ui/lib/tenants'; import { doesNotHaveAnyRole, hasAnyRole, IqserAuthGuard } from '@iqser/common-ui/lib/users'; import { CustomRouteReuseStrategy } from '@iqser/common-ui/lib/utils'; -import { ARCHIVE_ROUTE, BreadcrumbTypes, DOSSIER_ID, DOSSIER_TEMPLATE_ID, DOSSIERS_ARCHIVE, DOSSIERS_ROUTE, FILE_ID } from '@red/domain'; +import { ARCHIVE_ROUTE, BreadcrumbTypes, DOSSIER_ID, DOSSIER_TEMPLATE_ID, DOSSIERS_ROUTE, FILE_ID } from '@red/domain'; import { RedRoleGuard } from '@users/red-role.guard'; import { Roles } from '@users/roles'; import { mainGuard } from '@utils/main.guard'; @@ -81,7 +81,6 @@ const dossierTemplateIdRoutes: IqserRoutes = [ canActivate: [CompositeRouteGuard, loadArchivedDossiersGuard()], data: { routeGuards: [FeaturesGuard], - features: [DOSSIERS_ARCHIVE], }, }, { diff --git a/apps/red-ui/src/app/components/base-screen/base-screen.component.ts b/apps/red-ui/src/app/components/base-screen/base-screen.component.ts index d0b3e4df2..a5c674642 100644 --- a/apps/red-ui/src/app/components/base-screen/base-screen.component.ts +++ b/apps/red-ui/src/app/components/base-screen/base-screen.component.ts @@ -8,8 +8,7 @@ import { SpotlightSearchAction } from '@components/spotlight-search/spotlight-se import { filter, map, startWith } from 'rxjs/operators'; import { getConfig, IqserPermissionsService } from '@iqser/common-ui'; import { BreadcrumbsService } from '@services/breadcrumbs.service'; -import { FeaturesService } from '@services/features.service'; -import { ARCHIVE_ROUTE, DOSSIERS_ARCHIVE, DOSSIERS_ROUTE } from '@red/domain'; +import { ARCHIVE_ROUTE, DOSSIERS_ROUTE } from '@red/domain'; import { Roles } from '@users/roles'; import { REDDocumentViewer } from '../../modules/pdf-viewer/services/document-viewer.service'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; @@ -36,7 +35,6 @@ export class BaseScreenComponent { { text: this._translateService.instant('search.active-dossiers'), icon: 'red:enter', - hide: () => !this._featuresService.isEnabled(DOSSIERS_ARCHIVE), action: (query): void => this.#search(query, [], true), }, { @@ -58,7 +56,6 @@ export class BaseScreenComponent { private readonly _router: Router, activatedRoute: ActivatedRoute, private readonly _translateService: TranslateService, - private readonly _featuresService: FeaturesService, readonly permissionsService: IqserPermissionsService, readonly userService: UserService, readonly userPreferenceService: UserPreferenceService, diff --git a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.html b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.html index c7564598f..ec029e356 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.html +++ b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.html @@ -1,6 +1,6 @@
- + diff --git a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts index 9e811cb1c..c59b47b63 100644 --- a/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossiers-listing/screen/dossiers-listing-screen.component.ts @@ -1,5 +1,5 @@ import { ChangeDetectionStrategy, Component, OnInit, TemplateRef, ViewChild } from '@angular/core'; -import { Dossier, DOSSIER_TEMPLATE_ID, DOSSIERS_ARCHIVE, DossierTemplate } from '@red/domain'; +import { Dossier, DOSSIER_TEMPLATE_ID, DossierTemplate } from '@red/domain'; import { PermissionsService } from '@services/permissions.service'; import { ButtonConfig, @@ -19,7 +19,6 @@ import { UserPreferenceService } from '@users/user-preference.service'; import { SharedDialogService } from '@shared/services/dialog.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { OnAttach } from '@iqser/common-ui/lib/utils'; -import { FeaturesService } from '@services/features.service'; import { DossiersTypeSwitchComponent } from '@shared/components/dossiers-type-switch/dossiers-type-switch.component'; import { TranslateModule } from '@ngx-translate/core'; import { DossiersListingDetailsComponent } from '../components/dossiers-listing-details/dossiers-listing-details.component'; @@ -51,7 +50,6 @@ export class DossiersListingScreenComponent extends ListingComponent im readonly buttonConfigs: ButtonConfig[]; readonly dossierTemplate: DossierTemplate; readonly computeFilters$ = this._activeDossiersService.all$.pipe(tap(() => this._computeAllFilters())); - readonly isArchiveEnabled = this._featuresService.isEnabled(DOSSIERS_ARCHIVE); @ViewChild('needsWorkFilterTemplate', { read: TemplateRef, static: true, @@ -68,7 +66,6 @@ export class DossiersListingScreenComponent extends ListingComponent im private readonly _userPreferenceService: UserPreferenceService, private readonly _loadingService: LoadingService, readonly dossierTemplatesService: DossierTemplatesService, - private readonly _featuresService: FeaturesService, ) { super(); const dossierTemplateId = router.routerState.snapshot.root.firstChild.firstChild.paramMap.get(DOSSIER_TEMPLATE_ID); diff --git a/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.ts b/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.ts index 75cb6d922..e5227c862 100644 --- a/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.ts +++ b/apps/red-ui/src/app/modules/search/search-screen/search-screen.component.ts @@ -7,7 +7,7 @@ import { SearchPositions, TableColumnConfig, } from '@iqser/common-ui'; -import { combineLatest, Observable, of } from 'rxjs'; +import { combineLatest, Observable } from 'rxjs'; import { debounceTime, map, startWith, switchMap, tap } from 'rxjs/operators'; import { ActivatedRoute, Router } from '@angular/router'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; @@ -16,7 +16,6 @@ import { TranslateModule, TranslateService } from '@ngx-translate/core'; import { RouterHistoryService } from '@services/router-history.service'; import { Dossier, - DOSSIERS_ARCHIVE, DossierTemplate, IMatchedDocument, ISearchListItem, @@ -26,7 +25,6 @@ import { } from '@red/domain'; import { FilesMapService } from '@services/files/files-map.service'; import { PlatformSearchService } from '@services/entity-services/platform-search.service'; -import { FeaturesService } from '@services/features.service'; import { DossiersCacheService } from '@services/dossiers/dossiers-cache.service'; import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service'; import { UserService } from '@users/user.service'; @@ -68,7 +66,6 @@ export default class SearchScreenComponent extends ListingComponent { - const onlyActiveDossiers$ = this.#enabledArchive - ? this.filterService.getSingleFilter('onlyActiveDossiers').pipe(map(f => !!f.checked)) - : of(true); + const onlyActiveDossiers$ = this.filterService.getSingleFilter('onlyActiveDossiers').pipe(map(f => !!f.checked)); const filterGroups$ = this.filterService.filterGroups$; return combineLatest([filterGroups$, onlyActiveDossiers$]).pipe( map(([groups, onlyActive]) => { @@ -225,9 +216,7 @@ export default class SearchScreenComponent extends ListingComponent { @@ -46,7 +44,7 @@ export class ArchivedDossiersService extends DossiersService { } loadAll(): Observable { - return this.#featuresService.isEnabled(DOSSIERS_ARCHIVE) ? super.loadAll() : of([]); + return super.loadAll(); } #removeFromActiveDossiers(archivedDossiersIds: string[]): void { diff --git a/apps/red-ui/src/app/services/permissions.service.ts b/apps/red-ui/src/app/services/permissions.service.ts index 69191b669..f1c283543 100644 --- a/apps/red-ui/src/app/services/permissions.service.ts +++ b/apps/red-ui/src/app/services/permissions.service.ts @@ -4,7 +4,6 @@ import { DashboardStats, Dictionary, Dossier, - DOSSIERS_ARCHIVE, DossierTemplate, File, IComment, @@ -13,7 +12,6 @@ import { WorkflowFileStatus, WorkflowFileStatuses, } from '@red/domain'; -import { FeaturesService } from '@services/features.service'; import { FilesMapService } from '@services/files/files-map.service'; import { Roles } from '@users/roles'; import { UserPreferenceService } from '@users/user-preference.service'; @@ -27,7 +25,6 @@ export class PermissionsService { constructor( private readonly _userService: UserService, private readonly _filesMapService: FilesMapService, - private readonly _featuresService: FeaturesService, private readonly _userPreferenceService: UserPreferenceService, private readonly _iqserPermissionsService: IqserPermissionsService, private readonly _dossierTemplatesService: DossierTemplatesService, @@ -290,12 +287,7 @@ export class PermissionsService { } canArchiveDossier(dossier: Dossier): boolean { - return ( - this._iqserPermissionsService.has(Roles.dossiers.archived) && - this._featuresService.isEnabled(DOSSIERS_ARCHIVE) && - dossier.isActive && - this.isOwner(dossier) - ); + return this._iqserPermissionsService.has(Roles.dossiers.archived) && dossier.isActive && this.isOwner(dossier); } canEditDossier(dossier: Dossier): boolean { diff --git a/apps/red-ui/src/assets/features/features.json b/apps/red-ui/src/assets/features/features.json index bbcfecc3a..0a8585355 100644 --- a/apps/red-ui/src/assets/features/features.json +++ b/apps/red-ui/src/assets/features/features.json @@ -1,8 +1,3 @@ { - "features": [ - { - "name": "DOSSIERS_ARCHIVE", - "minVersion": "3.3.0" - } - ] + "features": [] } diff --git a/libs/red-domain/src/lib/dossiers/constants.ts b/libs/red-domain/src/lib/dossiers/constants.ts index 95b78f4fa..4541b260b 100644 --- a/libs/red-domain/src/lib/dossiers/constants.ts +++ b/libs/red-domain/src/lib/dossiers/constants.ts @@ -1,5 +1,4 @@ export const DOSSIER_ID = 'dossierId'; -export const DOSSIERS_ARCHIVE = 'DOSSIERS_ARCHIVE'; export const ARCHIVE_ROUTE = 'archive'; export const DOSSIERS_ROUTE = 'dossiers'; From f82cdcf5bb1b66f9fa91990df6afcb815a2abbb5 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Mon, 12 Aug 2024 13:22:47 +0300 Subject: [PATCH 07/20] RED-9861: fixed bulk-select issues. --- .../annotation-card.component.html | 2 +- .../file-workload.component.html | 66 +++++++++++-------- .../file-workload/file-workload.component.ts | 34 +++++++--- 3 files changed, 63 insertions(+), 39 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-card/annotation-card.component.html b/apps/red-ui/src/app/modules/file-preview/components/annotation-card/annotation-card.component.html index 2fcf57392..507ffe447 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/annotation-card/annotation-card.component.html +++ b/apps/red-ui/src/app/modules/file-preview/components/annotation-card/annotation-card.component.html @@ -6,7 +6,7 @@ class="mt-6 mr-10" > -
+
{{ annotation.superTypeLabel | translate }}   diff --git a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html index 6dcee8419..32b509d90 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html +++ b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.html @@ -44,34 +44,9 @@ -
-
- - - {{ listingService.selectedLength$ | async }} selected - - -
- - -
+ @if (!isDocumine) { + + }
@@ -158,6 +133,10 @@
+ @if (isDocumine) { + + } +
+ + +
+
+ + + {{ listingService.selectedLength$ | async }} selected + + +
+ + +
+
diff --git a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts index f72d24724..a6e0675a4 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/file-workload/file-workload.component.ts @@ -1,5 +1,16 @@ import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common'; -import { ChangeDetectorRef, Component, computed, effect, ElementRef, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core'; +import { + ChangeDetectorRef, + Component, + computed, + effect, + ElementRef, + HostListener, + OnDestroy, + OnInit, + TemplateRef, + viewChild, +} from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { MatIcon } from '@angular/material/icon'; import { MatTooltip } from '@angular/material/tooltip'; @@ -20,7 +31,7 @@ import { AutoUnsubscribe, Debounce, IqserEventTarget } from '@iqser/common-ui/li import { AnnotationWrapper } from '@models/file/annotation.wrapper'; import { ListItem } from '@models/file/list-item'; import { TranslateModule } from '@ngx-translate/core'; -import { ComponentLogEntry, WorkflowFileStatuses } from '@red/domain'; +import { WorkflowFileStatuses } from '@red/domain'; import { workloadTranslations } from '@translations/workload-translations'; import { UserPreferenceService } from '@users/user-preference.service'; import { getLocalStorageDataByFileId } from '@utils/local-storage'; @@ -78,8 +89,9 @@ const ALL_HOTKEY_ARRAY = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown']; ], }) export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, OnDestroy { - @ViewChild('annotationsElement') private readonly _annotationsElement: ElementRef; - @ViewChild('quickNavigation') private readonly _quickNavigationElement: ElementRef; + private readonly _annotationsElement = viewChild('annotationsElement'); + private readonly _quickNavigationElement = viewChild('quickNavigation'); + readonly multiSelectTemplate = viewChild>('multiSelect'); readonly #isIqserDevMode = this._userPreferenceService.isIqserDevMode; protected readonly iconButtonTypes = IconButtonTypes; protected readonly circleButtonTypes = CircleButtonTypes; @@ -280,18 +292,20 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On } scrollAnnotationsToPage(page: number, mode: 'always' | 'if-needed' = 'if-needed'): void { - if (this._annotationsElement) { - const elements: HTMLElement[] = this._annotationsElement.nativeElement.querySelectorAll(`div[anotation-page-header="${page}"]`); + if (this._annotationsElement()) { + const elements: HTMLElement[] = this._annotationsElement().nativeElement.querySelectorAll( + `div[anotation-page-header="${page}"]`, + ); FileWorkloadComponent._scrollToFirstElement(elements, mode); } } @Debounce() scrollToSelectedAnnotation(): void { - if (this.listingService.selected.length === 0 || !this._annotationsElement) { + if (this.listingService.selected.length === 0 || !this._annotationsElement()) { return; } - const elements: HTMLElement[] = this._annotationsElement.nativeElement.querySelectorAll( + const elements: HTMLElement[] = this._annotationsElement().nativeElement.querySelectorAll( `[annotation-id="${this._firstSelectedAnnotation?.id}"]`, ); FileWorkloadComponent._scrollToFirstElement(elements); @@ -514,8 +528,8 @@ export class FileWorkloadComponent extends AutoUnsubscribe implements OnInit, On } #scrollQuickNavigationToPage(page: number) { - if (this._quickNavigationElement) { - const elements: HTMLElement[] = this._quickNavigationElement.nativeElement.querySelectorAll(`#quick-nav-page-${page}`); + if (this._quickNavigationElement()) { + const elements: HTMLElement[] = this._quickNavigationElement().nativeElement.querySelectorAll(`#quick-nav-page-${page}`); FileWorkloadComponent._scrollToFirstElement(elements); } } From 8a3d3722237c2f747671d28b6904a2df52394497 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Mon, 12 Aug 2024 13:42:29 +0300 Subject: [PATCH 08/20] RED-9762: removed open component view preference. --- .../screens/preferences/preferences.component.html | 6 ------ .../screens/preferences/preferences.component.ts | 6 ------ apps/red-ui/src/app/users/user-preference.service.ts | 10 ---------- 3 files changed, 22 deletions(-) diff --git a/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.html b/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.html index ad1f6dd44..1e6fc62cf 100644 --- a/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.html +++ b/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.html @@ -11,12 +11,6 @@
-
- - {{ 'preferences-screen.form.open-structured-view-by-default' | translate }} - -
-
diff --git a/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.ts b/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.ts index 269fe712f..0b2564195 100644 --- a/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.ts +++ b/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.ts @@ -23,7 +23,6 @@ import { MatCheckbox } from '@angular/material/checkbox'; interface PreferencesForm { // preferences autoExpandFiltersOnActions: boolean; - openScmDialogByDefault: boolean; tableExtractionType: string; // warnings preferences loadAllAnnotationsWarning: boolean; @@ -78,7 +77,6 @@ export class PreferencesComponent extends BaseFormComponent implements OnInit { this.form = this._formBuilder.group({ // preferences autoExpandFiltersOnActions: [this.userPreferenceService.getAutoExpandFiltersOnActions()], - openScmDialogByDefault: [this.userPreferenceService.getOpenScmDialogByDefault()], tableExtractionType: [this.userPreferenceService.getTableExtractionType()], // warnings preferences loadAllAnnotationsWarning: [this.userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning)], @@ -105,9 +103,6 @@ export class PreferencesComponent extends BaseFormComponent implements OnInit { if (this.form.controls.autoExpandFiltersOnActions.value !== this.userPreferenceService.getAutoExpandFiltersOnActions()) { await this.userPreferenceService.toggleAutoExpandFiltersOnActions(); } - if (this.form.controls.openScmDialogByDefault.value !== this.userPreferenceService.getOpenScmDialogByDefault()) { - await this.userPreferenceService.toggleOpenScmDialogByDefault(); - } if (this.form.controls.tableExtractionType.value !== this.userPreferenceService.getTableExtractionType()) { await this.userPreferenceService.save(PreferencesKeys.tableExtractionType, this.form.controls.tableExtractionType.value); @@ -137,7 +132,6 @@ export class PreferencesComponent extends BaseFormComponent implements OnInit { #patchValues() { this.form.patchValue({ autoExpandFiltersOnActions: this.userPreferenceService.getAutoExpandFiltersOnActions(), - openScmDialogByDefault: this.userPreferenceService.getOpenScmDialogByDefault(), tableExtractionType: this.userPreferenceService.getTableExtractionType(), loadAllAnnotationsWarning: this.userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning), helpModeDialog: this.userPreferenceService.getBool(KEYS.helpModeDialog), diff --git a/apps/red-ui/src/app/users/user-preference.service.ts b/apps/red-ui/src/app/users/user-preference.service.ts index 4b05ce78c..f2fd00d34 100644 --- a/apps/red-ui/src/app/users/user-preference.service.ts +++ b/apps/red-ui/src/app/users/user-preference.service.ts @@ -10,7 +10,6 @@ export const PreferencesKeys = { filesListingMode: 'Files-Listing-Mode', autoExpandFiltersOnActions: 'Auto-Expand-Filters-On-Actions', loadAllAnnotationsWarning: 'Load-All-Annotations-Warning', - openScmDialogByDefault: 'Open-Structured-Component-Management-By-Default', tableExtractionType: 'Table-Extraction-Type', addRedactionDefaultOption: 'Add-Redaction-Default', addHintDefaultOption: 'Add-Hint-Default', @@ -65,15 +64,6 @@ export class UserPreferenceService extends IqserUserPreferenceService { await this.save(PreferencesKeys.autoExpandFiltersOnActions, nextValue); } - getOpenScmDialogByDefault(): boolean { - return this._getAttribute(PreferencesKeys.openScmDialogByDefault, 'false') === 'true'; - } - - async toggleOpenScmDialogByDefault(): Promise { - const nextValue = (!this.getOpenScmDialogByDefault()).toString(); - await this.save(PreferencesKeys.openScmDialogByDefault, nextValue); - } - getBool(key: string, defaultValue = 'false') { return this._getAttribute(key, defaultValue) === 'true'; } From d409811aa6f1da760558a1aabaed2447cccf3ff6 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Mon, 12 Aug 2024 14:03:00 +0300 Subject: [PATCH 09/20] RED-9835: removed experimental feature warning. --- .../rules-screen/rules-screen.component.html | 1 - .../translations/rules-screen-translations.ts | 2 - apps/red-ui/src/assets/i18n/redact/de.json | 153 +++++++++--------- apps/red-ui/src/assets/i18n/redact/en.json | 7 +- apps/red-ui/src/assets/i18n/scm/de.json | 153 +++++++++--------- apps/red-ui/src/assets/i18n/scm/en.json | 7 +- 6 files changed, 154 insertions(+), 169 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html index 82d524af4..d2ab68930 100644 --- a/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/rules/rules-screen/rules-screen.component.html @@ -1,6 +1,5 @@
-
diff --git a/apps/red-ui/src/app/modules/admin/translations/rules-screen-translations.ts b/apps/red-ui/src/app/modules/admin/translations/rules-screen-translations.ts index 2fb57874c..3c882dcb2 100644 --- a/apps/red-ui/src/app/modules/admin/translations/rules-screen-translations.ts +++ b/apps/red-ui/src/app/modules/admin/translations/rules-screen-translations.ts @@ -5,7 +5,6 @@ export const rulesScreenTranslations: Record<'ENTITY' | 'COMPONENT', Record
Möchten Sie es trotzdem freigeben?", - "title": "Warnung!" - }, "approve-file-without-analysis": { "confirmationText": "Ohne Analyse freigeben", "denyText": "Abbrechen", "question": "Analyse zur Erkennung neuer Schwärzungen erforderlich.", "title": "Warnung!" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen, die im Zuge einer Reanalyse hinzugefügt wurden.

Möchen Sie die Dateien wirklich freigeben?", + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen, die sich durch die Reanalyse ergeben haben.

Möchten Sie es trotzdem freigeben?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -657,6 +652,10 @@ "question": "Für mindestens eine Datei ist ein Analyselauf zur Erkennung neuer Schwärzungen erforderlich.", "title": "Warnung" }, + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen, die im Zuge einer Reanalyse hinzugefügt wurden.

Möchen Sie die Dateien wirklich freigeben?", + "title": "Warnung!" + }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft.

Möchten Sie sich die Datei dennoch zuweisen?", @@ -1026,13 +1025,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Keinem Bearbeiter zugewiesen" }, - "reanalyse": { - "action": "Datei analysieren" - }, "reanalyse-dossier": { "error": "Einplanung der Dateien für die Reanalyse fehlgeschlagen. Bitte versuchen Sie es noch einmal.", "success": "Dateien für Reanalyse vorgesehen." }, + "reanalyse": { + "action": "Datei analysieren" + }, "report-download": "", "start-auto-analysis": "Auto-Analyse aktivieren", "stop-auto-analysis": "Auto-Analyse anhalten", @@ -1103,14 +1102,6 @@ "total-documents": "Dokumente", "total-people": "{count} {count, plural, one{Benutzer} other {Benutzer}}" }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Aktiv", - "inactive": "Inaktiv", - "incomplete": "Unvollständig" - } - }, "dossier-templates-listing": { "action": { "clone": "Vorlage klonen", @@ -1145,6 +1136,14 @@ "title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}" } }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Aktiv", + "inactive": "Inaktiv", + "incomplete": "Unvollständig" + } + }, "dossier-watermark-selector": { "heading": "Wasserzeichen auf Dokumenten", "no-watermark": "Kein Wasserzeichen in der Dossier-Vorlage verfügbar:
Bitten Sie Ihren Admin, eines zu konfigurieren.", @@ -1340,15 +1339,6 @@ "title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}" } }, - "entity": { - "info": { - "actions": { - "revert": "Zurücksetzen", - "save": "Änderungen speichern" - }, - "heading": "Entität bearbeiten" - } - }, "entity-rules-screen": { "error": { "generic": "Fehler: Aktualisierung der Entitätsregeln fehlgeschlagen." @@ -1360,22 +1350,30 @@ "generic": "Die Entitätsregeln wurden aktualisiert." }, "title": "Entitätsregeln-Editor", - "warning-text": "Warnung: experimentelle Funktion!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} in Regeln gefunden" }, + "entity": { + "info": { + "actions": { + "revert": "Zurücksetzen", + "save": "Änderungen speichern" + }, + "heading": "Entität bearbeiten" + } + }, "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": { @@ -1393,12 +1391,6 @@ }, "exact-date": "{day}. {month} {year} um {hour}:{minute} Uhr", "file": "Datei", - "file-attribute": { - "update": { - "error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.", - "success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert." - } - }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1409,6 +1401,12 @@ "number": "Nummer", "text": "Freier Text" }, + "file-attribute": { + "update": { + "error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.", + "success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert." + } + }, "file-attributes-configurations": { "cancel": "Abbrechen", "form": { @@ -1626,15 +1624,6 @@ "csv": "Die Datei-Attribute wurden erfolgreich aus der hochgeladenen CSV-Datei importiert." } }, - "filter": { - "analysis": "Analyse erforderlich", - "comment": "Kommentare", - "hint": "Nur Hinweise", - "image": "Bilder", - "none": "Keine Annotationen", - "redaction": "Schwärzungen", - "updated": "Aktualisiert" - }, "filter-menu": { "filter-options": "Filteroptionen", "filter-types": "Filter", @@ -1644,6 +1633,15 @@ "unseen-pages": "Nur Annotationen auf ungesehenen Seiten", "with-comments": "Nur Annotationen mit Kommentaren" }, + "filter": { + "analysis": "Analyse erforderlich", + "comment": "Kommentare", + "hint": "Nur Hinweise", + "image": "Bilder", + "none": "Keine Annotationen", + "redaction": "Schwärzungen", + "updated": "Aktualisiert" + }, "filters": { "assigned-people": "Bearbeiter", "documents-status": "Dokumentenstatus", @@ -1922,13 +1920,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": "Benachrichtigungen", - "deleted-dossier": "Gelöschtes Dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren" - }, "notifications-screen": { "category": { "email-notifications": "E-Mail-Benachrichtigungen", @@ -1942,6 +1933,7 @@ "dossier": "Benachrichtigungen zu Dossiers", "other": "Andere Benachrichtigungen" }, + "options-title": "Wählen Sie aus, bei welchen Aktivitäten Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen werde", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Prüfer zugewiesen werde", @@ -1959,7 +1951,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, bei welchen Aktivitäten Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofort", @@ -1967,6 +1958,13 @@ }, "title": "Benachrichtigungseinstellungen" }, + "notifications": { + "button-text": "Benachrichtigungen", + "deleted-dossier": "Gelöschtes Dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren" + }, "ocr": { "confirmation-dialog": { "cancel": "Abbrechen", @@ -2049,7 +2047,6 @@ "auto-expand-filters-on-action": "Filter ausgehend von meinen Aktionen automatisch anpassen", "help-mode-dialog": "Dialog zur Aktivierung des Hilfemodus", "load-all-annotations-warning": "Warnung bei gleichzeitigem Laden aller Annotationen in der Miniaturansicht", - "open-structured-view-by-default": "Strukturierte Komponentenansicht standardmäßig anzeigen", "table-extraction-type": "Art der Tabellenextraktion" }, "label": "Präferenzen", @@ -2058,16 +2055,16 @@ "warnings-label": "Dialoge und Meldungen", "warnings-subtitle": "„Nicht mehr anzeigen“-Optionen" }, - "processing": { - "basic": "Verarbeitung läuft", - "ocr": "OCR" - }, "processing-status": { "ocr": "OCR", "pending": "Ausstehend", "processed": "Verarbeitet", "processing": "Verarbeitung läuft" }, + "processing": { + "basic": "Verarbeitung läuft", + "ocr": "OCR" + }, "readonly": "Lesemodus", "readonly-archived": "Lesemodus (archiviert)", "redact-text": { @@ -2303,12 +2300,6 @@ "red-user-admin": "Benutzeradmin", "regular": "regulärer Benutzer" }, - "search": { - "active-dossiers": "Dokumente in aktiven Dossiers", - "all-dossiers": "Alle Dokumente", - "placeholder": "Dokumente durchsuchen...", - "this-dossier": "In diesem Dossier" - }, "search-screen": { "cols": { "assignee": "Bearbeiter", @@ -2332,6 +2323,12 @@ "no-match": "Der Suchbegriff wurde in keinem der Dokumente gefunden.", "table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}" }, + "search": { + "active-dossiers": "Dokumente in aktiven Dossiers", + "all-dossiers": "Alle Dokumente", + "placeholder": "Dokumente durchsuchen...", + "this-dossier": "In diesem Dossier" + }, "seconds": "Sekunden", "size": "Größe", "smtp-auth-config": { @@ -2587,4 +2584,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 44e146a1d..ce30992f1 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -587,8 +587,7 @@ "success": { "generic": "" }, - "title": "", - "warning-text": "" + "title": "" }, "configurations": "Configurations", "confirm-archive-dossier": { @@ -1351,7 +1350,6 @@ "generic": "Entity rules updated." }, "title": "Entity rule editor", - "warning-text": "Warning: experimental feature!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules" }, "entity": { @@ -2049,7 +2047,6 @@ "auto-expand-filters-on-action": "Auto-expand filters on my actions", "help-mode-dialog": "Help mode activation dialog", "load-all-annotations-warning": "Warning regarding simultaneous loading of all annotations in thumbnails", - "open-structured-view-by-default": "Display structured component management modal by default", "table-extraction-type": "Table extraction type" }, "label": "Preferences", @@ -2587,4 +2584,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 4f2ce4b2e..f10837a8b 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -273,9 +273,6 @@ "watermarks": "Watermarks" }, "analysis-disabled": "Analysis disabled", - "annotation": { - "pending": "(Pending analysis)" - }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -331,14 +328,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" @@ -351,15 +348,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" }, @@ -393,6 +390,9 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, + "annotation": { + "pending": "(Pending analysis)" + }, "annotations": "Annotations", "archived-dossiers-listing": { "no-data": { @@ -587,8 +587,7 @@ "success": { "generic": "Component rules updated!" }, - "title": "Component rule editor", - "warning-text": "Warning: experimental feature!" + "title": "Component rule editor" }, "configurations": "Einstellungen", "confirm-archive-dossier": { @@ -637,18 +636,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": { @@ -657,6 +652,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?", @@ -1026,13 +1025,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" + }, "report-download": "Report download", "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", @@ -1103,14 +1102,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", @@ -1145,6 +1136,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.", @@ -1340,15 +1339,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!" @@ -1360,22 +1350,30 @@ "generic": "Entity rules updated!" }, "title": "Entity rule editor", - "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": { @@ -1393,12 +1391,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", @@ -1409,6 +1401,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": { @@ -1626,15 +1624,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", @@ -1644,6 +1633,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", @@ -1922,13 +1920,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", @@ -1942,6 +1933,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", @@ -1959,7 +1951,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", @@ -1967,6 +1958,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", @@ -2049,7 +2047,6 @@ "auto-expand-filters-on-action": "Auto expand filters on my actions", "help-mode-dialog": "Help Mode Dialog", "load-all-annotations-warning": "Warning regarding loading all annotations at once in file preview", - "open-structured-view-by-default": "Display Component View by default when opening a document", "table-extraction-type": "Table extraction type" }, "label": "Preferences", @@ -2058,16 +2055,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": { @@ -2303,12 +2300,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", @@ -2332,6 +2323,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": { @@ -2587,4 +2584,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 9eca37841..21a21c256 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -587,8 +587,7 @@ "success": { "generic": "Component rules updated!" }, - "title": "Component rule editor", - "warning-text": "Warning: experimental feature!" + "title": "Component rule editor" }, "configurations": "Configurations", "confirm-archive-dossier": { @@ -1351,7 +1350,6 @@ "generic": "Entity rules updated!" }, "title": "Entity rule editor", - "warning-text": "Warning: experimental feature!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} found in rules" }, "entity": { @@ -2049,7 +2047,6 @@ "auto-expand-filters-on-action": "Auto expand filters on my actions", "help-mode-dialog": "Help Mode Dialog", "load-all-annotations-warning": "Warning regarding loading all annotations at once in file preview", - "open-structured-view-by-default": "Display Component View by default when opening a document", "table-extraction-type": "Table extraction type" }, "label": "Preferences", @@ -2587,4 +2584,4 @@ } }, "yesterday": "Yesterday" -} \ No newline at end of file +} From 428debcd6f7e3658e4807ac213d9b8cfc03c1ac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Mon, 12 Aug 2024 20:51:53 +0300 Subject: [PATCH 10/20] RED-7270: Display backend provided error message for dossier states --- .../entity-services/dossier-states.service.ts | 11 +++++++---- apps/red-ui/src/assets/i18n/redact/de.json | 3 +-- apps/red-ui/src/assets/i18n/redact/en.json | 3 +-- apps/red-ui/src/assets/i18n/scm/de.json | 3 +-- apps/red-ui/src/assets/i18n/scm/en.json | 3 +-- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/apps/red-ui/src/app/services/entity-services/dossier-states.service.ts b/apps/red-ui/src/app/services/entity-services/dossier-states.service.ts index a10efcb51..be184356c 100644 --- a/apps/red-ui/src/app/services/entity-services/dossier-states.service.ts +++ b/apps/red-ui/src/app/services/entity-services/dossier-states.service.ts @@ -10,21 +10,24 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { mapEach } from '@iqser/common-ui/lib/utils'; const CONFLICT_MSG = _('dossier-states-listing.error.conflict'); -const GENERIC_MSG = _('dossier-states-listing.error.generic'); @Injectable({ providedIn: 'root', }) export class DossierStatesService extends EntitiesService { + protected readonly _defaultModelPath = 'dossier-status'; + protected readonly _entityClass = DossierState; readonly #toaster = inject(Toaster); readonly #dossierTemplatesService = inject(DossierTemplatesService); readonly #dossierStatesMapService = inject(DossierStatesMapService); - protected readonly _defaultModelPath = 'dossier-status'; - protected readonly _entityClass = DossierState; async createOrUpdate(state: IDossierState) { const showToast = (error: HttpErrorResponse) => { - this.#toaster.error(error.status === HttpStatusCode.Conflict ? CONFLICT_MSG : GENERIC_MSG); + if (error.status === HttpStatusCode.Conflict) { + this.#toaster.error(CONFLICT_MSG); + } else { + this.#toaster.rawError(error.error.message); + } return EMPTY; }; diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 8161f7c92..06e3890ee 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -1065,8 +1065,7 @@ "dossier-states": "{count, plural, one{Dossier-Status} other{Dossier-Status}}" }, "error": { - "conflict": "Es gibt bereits einen Dossier-Status mit diesem Namen.", - "generic": "Speichern des Dossier-Status fehlgeschlagen." + "conflict": "Es gibt bereits einen Dossier-Status mit diesem Namen." }, "no-data": { "title": "Es wurde noch kein Dossier-Status angelegt." diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index ce30992f1..6a0f3511a 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -1065,8 +1065,7 @@ "dossier-states": "{count, plural, one{Dossier state} other{Dossier states}}" }, "error": { - "conflict": "Dossier state with this name already exists", - "generic": "Failed to save dossier state." + "conflict": "Dossier state with this name already exists" }, "no-data": { "title": "There are no dossier states." diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json index f10837a8b..6f36ad508 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -1065,8 +1065,7 @@ "dossier-states": "{count, plural, one{Dossier state} other{Dossier states}}" }, "error": { - "conflict": "Dossier state with this name already exists!", - "generic": "Failed to save dossier state!" + "conflict": "Dossier state with this name already exists!" }, "no-data": { "title": "There are no dossier states." diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index 21a21c256..807cc35c3 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -1065,8 +1065,7 @@ "dossier-states": "{count, plural, one{Dossier state} other{Dossier states}}" }, "error": { - "conflict": "Dossier state with this name already exists!", - "generic": "Failed to save dossier state!" + "conflict": "Dossier state with this name already exists!" }, "no-data": { "title": "There are no dossier states." From 6e115038b02dc2b4c7961e8d76799a630dce7bdd Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Mon, 12 Aug 2024 20:54:30 +0300 Subject: [PATCH 11/20] RED-9260 - Component Management UI --- .../component-definitions.component.html | 2 +- .../component-definitions.component.scss | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.html b/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.html index c6ae97bdf..dbd2a0752 100644 --- a/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/component-definitions/component-definitions.component.html @@ -27,7 +27,7 @@
-
+
@for (component of componentDefinitions; track component) {
Date: Mon, 12 Aug 2024 21:00:21 +0300 Subject: [PATCH 12/20] RED-9260 - update config --- apps/red-ui/src/assets/config/config.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 2ccc6f6d1..5f6c0ce6e 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,9 +1,9 @@ { "ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_URL": null, - "API_URL": "https://frontend2.iqser.cloud", + "API_URL": "https://dan2.iqser.cloud", "APP_NAME": "RedactManager", - "IS_DOCUMINE": true, + "IS_DOCUMINE": false, "RULE_EDITOR_DEV_ONLY": false, "AUTO_READ_TIME": 3, "BACKEND_APP_VERSION": "4.4.40", @@ -13,13 +13,13 @@ "MAX_RETRIES_ON_SERVER_ERROR": 3, "OAUTH_CLIENT_ID": "redaction", "OAUTH_IDP_HINT": null, - "OAUTH_URL": "https://frontend2.iqser.cloud/auth", + "OAUTH_URL": "https://dan2.iqser.cloud/auth", "RECENT_PERIOD_IN_HOURS": 24, "SELECTION_MODE": "structural", "MANUAL_BASE_URL": "https://docs.redactmanager.com/preview", "ANNOTATIONS_THRESHOLD": 1000, - "THEME": "scm", - "BASE_TRANSLATIONS_DIRECTORY": "/assets/i18n/scm/", + "THEME": "redact", + "BASE_TRANSLATIONS_DIRECTORY": "/assets/i18n/redact/", "AVAILABLE_NOTIFICATIONS_DAYS": 30, "AVAILABLE_OLD_NOTIFICATIONS_MINUTES": 60, "NOTIFICATIONS_THRESHOLD": 1000, From 8e2219235df01421372fcb13fbb668e4c69cf669 Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Mon, 12 Aug 2024 21:36:04 +0300 Subject: [PATCH 13/20] RED-9201 - UI for Component Mapping Tables --- ...add-edit-component-mapping-dialog.component.html | 4 ++-- ...add-edit-component-mapping-dialog.component.scss | 13 ++++++------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.html b/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.html index 9f62ba6d0..1d5613b61 100644 --- a/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.html @@ -29,7 +29,6 @@
- + {{ translations[type] | translate }} diff --git a/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.scss b/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.scss index df17cfe56..a7e43f0c6 100644 --- a/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.scss @@ -19,13 +19,12 @@ } } - &.disabled-file-options { + .disabled-file-options { opacity: 0.5; - pointer-events: auto; - max-width: 300px; - - .iqser-input-group { - pointer-events: none; - } + pointer-events: none; } } + +.row:last-child { + max-width: 300px; +} From 630db9071ab62ec35b8ef611b826ee5bbaeccdd4 Mon Sep 17 00:00:00 2001 From: project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1 Date: Tue, 13 Aug 2024 01:03:23 +0000 Subject: [PATCH 14/20] push back localazy update --- apps/red-ui/src/assets/i18n/redact/de.json | 156 +++++++++++---------- apps/red-ui/src/assets/i18n/redact/en.json | 2 +- apps/red-ui/src/assets/i18n/scm/de.json | 156 +++++++++++---------- apps/red-ui/src/assets/i18n/scm/en.json | 10 +- 4 files changed, 166 insertions(+), 158 deletions(-) diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 06e3890ee..4a82e785f 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -273,6 +273,9 @@ "watermarks": "Wasserzeichen" }, "analysis-disabled": "", + "annotation": { + "pending": "(Analyse steht aus)" + }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -328,14 +331,14 @@ "error": "Rekategorisierung des Bilds fehlgeschlagen: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove-hint": { - "error": "Entfernen des Hinweises fehlgeschlagen: {error}", - "success": "Hinweis wurde entfernt" - }, "remove": { "error": "Entfernen der Schwärzung fehlgeschlagen: {error}", "success": "Schwärzung wurde entfernt" }, + "remove-hint": { + "error": "Entfernen des Hinweises fehlgeschlagen: {error}", + "success": "Hinweis wurde entfernt" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "Rücksetzung erfolgreich" @@ -348,15 +351,15 @@ "remove-highlights": { "label": "Ausgewählte Markierungen entfernen" }, + "resize": { + "label": "Größe ändern" + }, "resize-accept": { "label": "Neue Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, - "resize": { - "label": "Größe ändern" - }, "see-references": { "label": "Referenzen anzeigen" }, @@ -390,9 +393,6 @@ "skipped": "Ignorierte Schwärzung", "text-highlight": "Markierung" }, - "annotation": { - "pending": "(Analyse steht aus)" - }, "annotations": "Annotationen", "archived-dossiers-listing": { "no-data": { @@ -587,7 +587,8 @@ "success": { "generic": "" }, - "title": "" + "title": "", + "warning-text": "" }, "configurations": "Konfiguration", "confirm-archive-dossier": { @@ -636,14 +637,18 @@ "warning": "Warnung: Wiederherstellung des Benutzers nicht möglich." }, "confirmation-dialog": { + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen, die sich durch die Reanalyse ergeben haben.

Möchten Sie es trotzdem freigeben?", + "title": "Warnung!" + }, "approve-file-without-analysis": { "confirmationText": "Ohne Analyse freigeben", "denyText": "Abbrechen", "question": "Analyse zur Erkennung neuer Schwärzungen erforderlich.", "title": "Warnung!" }, - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen, die sich durch die Reanalyse ergeben haben.

Möchten Sie es trotzdem freigeben?", + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen, die im Zuge einer Reanalyse hinzugefügt wurden.

Möchen Sie die Dateien wirklich freigeben?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -652,10 +657,6 @@ "question": "Für mindestens eine Datei ist ein Analyselauf zur Erkennung neuer Schwärzungen erforderlich.", "title": "Warnung" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen, die im Zuge einer Reanalyse hinzugefügt wurden.

Möchen Sie die Dateien wirklich freigeben?", - "title": "Warnung!" - }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft.

Möchten Sie sich die Datei dennoch zuweisen?", @@ -1025,13 +1026,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Keinem Bearbeiter zugewiesen" }, + "reanalyse": { + "action": "Datei analysieren" + }, "reanalyse-dossier": { "error": "Einplanung der Dateien für die Reanalyse fehlgeschlagen. Bitte versuchen Sie es noch einmal.", "success": "Dateien für Reanalyse vorgesehen." }, - "reanalyse": { - "action": "Datei analysieren" - }, "report-download": "", "start-auto-analysis": "Auto-Analyse aktivieren", "stop-auto-analysis": "Auto-Analyse anhalten", @@ -1065,7 +1066,8 @@ "dossier-states": "{count, plural, one{Dossier-Status} other{Dossier-Status}}" }, "error": { - "conflict": "Es gibt bereits einen Dossier-Status mit diesem Namen." + "conflict": "Es gibt bereits einen Dossier-Status mit diesem Namen.", + "generic": "Speichern des Dossier-Status fehlgeschlagen." }, "no-data": { "title": "Es wurde noch kein Dossier-Status angelegt." @@ -1101,6 +1103,14 @@ "total-documents": "Dokumente", "total-people": "{count} {count, plural, one{Benutzer} other {Benutzer}}" }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Aktiv", + "inactive": "Inaktiv", + "incomplete": "Unvollständig" + } + }, "dossier-templates-listing": { "action": { "clone": "Vorlage klonen", @@ -1135,14 +1145,6 @@ "title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}" } }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Aktiv", - "inactive": "Inaktiv", - "incomplete": "Unvollständig" - } - }, "dossier-watermark-selector": { "heading": "Wasserzeichen auf Dokumenten", "no-watermark": "Kein Wasserzeichen in der Dossier-Vorlage verfügbar:
Bitten Sie Ihren Admin, eines zu konfigurieren.", @@ -1338,6 +1340,15 @@ "title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}" } }, + "entity": { + "info": { + "actions": { + "revert": "Zurücksetzen", + "save": "Änderungen speichern" + }, + "heading": "Entität bearbeiten" + } + }, "entity-rules-screen": { "error": { "generic": "Fehler: Aktualisierung der Entitätsregeln fehlgeschlagen." @@ -1349,30 +1360,22 @@ "generic": "Die Entitätsregeln wurden aktualisiert." }, "title": "Entitätsregeln-Editor", + "warning-text": "Warnung: experimentelle Funktion!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} in Regeln gefunden" }, - "entity": { - "info": { - "actions": { - "revert": "Zurücksetzen", - "save": "Änderungen speichern" - }, - "heading": "Entität bearbeiten" - } - }, "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": { @@ -1390,6 +1393,12 @@ }, "exact-date": "{day}. {month} {year} um {hour}:{minute} Uhr", "file": "Datei", + "file-attribute": { + "update": { + "error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.", + "success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert." + } + }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1400,12 +1409,6 @@ "number": "Nummer", "text": "Freier Text" }, - "file-attribute": { - "update": { - "error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.", - "success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert." - } - }, "file-attributes-configurations": { "cancel": "Abbrechen", "form": { @@ -1623,15 +1626,6 @@ "csv": "Die Datei-Attribute wurden erfolgreich aus der hochgeladenen CSV-Datei importiert." } }, - "filter-menu": { - "filter-options": "Filteroptionen", - "filter-types": "Filter", - "label": "Filter", - "pages-without-annotations": "Nur Seiten ohne Annotationen", - "redaction-changes": "Nur Annotationen mit lokalen manuellen Änderungen", - "unseen-pages": "Nur Annotationen auf ungesehenen Seiten", - "with-comments": "Nur Annotationen mit Kommentaren" - }, "filter": { "analysis": "Analyse erforderlich", "comment": "Kommentare", @@ -1641,6 +1635,15 @@ "redaction": "Schwärzungen", "updated": "Aktualisiert" }, + "filter-menu": { + "filter-options": "Filteroptionen", + "filter-types": "Filter", + "label": "Filter", + "pages-without-annotations": "Nur Seiten ohne Annotationen", + "redaction-changes": "Nur Annotationen mit lokalen manuellen Änderungen", + "unseen-pages": "Nur Annotationen auf ungesehenen Seiten", + "with-comments": "Nur Annotationen mit Kommentaren" + }, "filters": { "assigned-people": "Bearbeiter", "documents-status": "Dokumentenstatus", @@ -1919,6 +1922,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": "Benachrichtigungen", + "deleted-dossier": "Gelöschtes Dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren" + }, "notifications-screen": { "category": { "email-notifications": "E-Mail-Benachrichtigungen", @@ -1932,7 +1942,6 @@ "dossier": "Benachrichtigungen zu Dossiers", "other": "Andere Benachrichtigungen" }, - "options-title": "Wählen Sie aus, bei welchen Aktivitäten Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen werde", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Prüfer zugewiesen werde", @@ -1950,6 +1959,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, bei welchen Aktivitäten Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofort", @@ -1957,13 +1967,6 @@ }, "title": "Benachrichtigungseinstellungen" }, - "notifications": { - "button-text": "Benachrichtigungen", - "deleted-dossier": "Gelöschtes Dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren" - }, "ocr": { "confirmation-dialog": { "cancel": "Abbrechen", @@ -2046,6 +2049,7 @@ "auto-expand-filters-on-action": "Filter ausgehend von meinen Aktionen automatisch anpassen", "help-mode-dialog": "Dialog zur Aktivierung des Hilfemodus", "load-all-annotations-warning": "Warnung bei gleichzeitigem Laden aller Annotationen in der Miniaturansicht", + "open-structured-view-by-default": "Strukturierte Komponentenansicht standardmäßig anzeigen", "table-extraction-type": "Art der Tabellenextraktion" }, "label": "Präferenzen", @@ -2054,16 +2058,16 @@ "warnings-label": "Dialoge und Meldungen", "warnings-subtitle": "„Nicht mehr anzeigen“-Optionen" }, + "processing": { + "basic": "Verarbeitung läuft", + "ocr": "OCR" + }, "processing-status": { "ocr": "OCR", "pending": "Ausstehend", "processed": "Verarbeitet", "processing": "Verarbeitung läuft" }, - "processing": { - "basic": "Verarbeitung läuft", - "ocr": "OCR" - }, "readonly": "Lesemodus", "readonly-archived": "Lesemodus (archiviert)", "redact-text": { @@ -2299,6 +2303,12 @@ "red-user-admin": "Benutzeradmin", "regular": "regulärer Benutzer" }, + "search": { + "active-dossiers": "Dokumente in aktiven Dossiers", + "all-dossiers": "Alle Dokumente", + "placeholder": "Dokumente durchsuchen...", + "this-dossier": "In diesem Dossier" + }, "search-screen": { "cols": { "assignee": "Bearbeiter", @@ -2322,12 +2332,6 @@ "no-match": "Der Suchbegriff wurde in keinem der Dokumente gefunden.", "table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}" }, - "search": { - "active-dossiers": "Dokumente in aktiven Dossiers", - "all-dossiers": "Alle Dokumente", - "placeholder": "Dokumente durchsuchen...", - "this-dossier": "In diesem Dossier" - }, "seconds": "Sekunden", "size": "Größe", "smtp-auth-config": { @@ -2583,4 +2587,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 6a0f3511a..a30e74769 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -2583,4 +2583,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 6f36ad508..4f2ce4b2e 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -273,6 +273,9 @@ "watermarks": "Watermarks" }, "analysis-disabled": "Analysis disabled", + "annotation": { + "pending": "(Pending analysis)" + }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -328,14 +331,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" @@ -348,15 +351,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" }, @@ -390,9 +393,6 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, - "annotation": { - "pending": "(Pending analysis)" - }, "annotations": "Annotations", "archived-dossiers-listing": { "no-data": { @@ -587,7 +587,8 @@ "success": { "generic": "Component rules updated!" }, - "title": "Component rule editor" + "title": "Component rule editor", + "warning-text": "Warning: experimental feature!" }, "configurations": "Einstellungen", "confirm-archive-dossier": { @@ -636,14 +637,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": { @@ -652,10 +657,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?", @@ -1025,13 +1026,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" - }, "report-download": "Report download", "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", @@ -1065,7 +1066,8 @@ "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": { "title": "There are no dossier states." @@ -1101,6 +1103,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", @@ -1135,14 +1145,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.", @@ -1338,6 +1340,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!" @@ -1349,30 +1360,22 @@ "generic": "Entity rules updated!" }, "title": "Entity rule editor", + "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": { @@ -1390,6 +1393,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", @@ -1400,12 +1409,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": { @@ -1623,15 +1626,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", @@ -1641,6 +1635,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", @@ -1919,6 +1922,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", @@ -1932,7 +1942,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", @@ -1950,6 +1959,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", @@ -1957,13 +1967,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", @@ -2046,6 +2049,7 @@ "auto-expand-filters-on-action": "Auto expand filters on my actions", "help-mode-dialog": "Help Mode Dialog", "load-all-annotations-warning": "Warning regarding loading all annotations at once in file preview", + "open-structured-view-by-default": "Display Component View by default when opening a document", "table-extraction-type": "Table extraction type" }, "label": "Preferences", @@ -2054,16 +2058,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": { @@ -2299,6 +2303,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", @@ -2322,12 +2332,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": { @@ -2583,4 +2587,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 807cc35c3..0aac764f8 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -122,7 +122,7 @@ "type": "Attribute type" }, "save": "Save attribute", - "title": "{type, select, edit{Edit {name}} create{Add New} other{}} dossier attribute" + "title": "{type, select, edit{Edit {name}} create{Add new} other{}} dossier attribute" }, "add-edit-dossier-state": { "form": { @@ -178,7 +178,7 @@ "type": "Type" }, "save": "Save attribute", - "title": "{type, select, edit{Edit {name}} create{Add New} other{}} file attribute" + "title": "{type, select, edit{Edit {name}} create{Add new} other{}} file attribute" }, "add-edit-justification": { "actions": { @@ -193,7 +193,7 @@ "reason": "Legal basis", "reason-placeholder": "Enter legal basis" }, - "title": "{type, select, edit{Edit {name}} create{Add New} other{}} justification" + "title": "{type, select, edit{Edit {name}} create{Add new} other{}} justification" }, "add-edit-user": { "actions": { @@ -213,7 +213,7 @@ "reset-password": "Reset password", "role": "Role" }, - "title": "{type, select, edit{Edit} create{Add New} other{}} user" + "title": "{type, select, edit{Edit} create{Add new} other{}} user" }, "add-entity": { "save": "Save entity", @@ -2583,4 +2583,4 @@ } }, "yesterday": "Yesterday" -} +} \ No newline at end of file From 24fc875cc98a6314c59faec9f0966a529f453804 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Tue, 13 Aug 2024 15:02:32 +0300 Subject: [PATCH 15/20] RED-9874: added user preference for overwrite file option. --- .../preferences/preferences.component.html | 5 + .../preferences/preferences.component.ts | 80 +++++---- .../services/file-upload.service.ts | 8 +- .../src/app/users/user-preference.service.ts | 10 ++ apps/red-ui/src/assets/i18n/redact/de.json | 157 +++++++++--------- apps/red-ui/src/assets/i18n/redact/en.json | 3 +- apps/red-ui/src/assets/i18n/scm/de.json | 157 +++++++++--------- apps/red-ui/src/assets/i18n/scm/en.json | 3 +- 8 files changed, 227 insertions(+), 196 deletions(-) diff --git a/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.html b/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.html index 1e6fc62cf..b6cfb0efd 100644 --- a/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.html +++ b/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.html @@ -31,6 +31,11 @@ {{ 'preferences-screen.form.help-mode-dialog' | translate }}
+
+ + {{ 'preferences-screen.form.overwrite-file-option' | translate }} + +
diff --git a/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.ts b/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.ts index 0b2564195..36b1edc02 100644 --- a/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.ts +++ b/apps/red-ui/src/app/modules/account/screens/preferences/preferences.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { ActivatedRoute } from '@angular/router'; import { @@ -27,6 +27,7 @@ interface PreferencesForm { // warnings preferences loadAllAnnotationsWarning: boolean; helpModeDialog: boolean; + overwriteFileOption: boolean; [k: string]: any; } @@ -57,6 +58,12 @@ const Screens = { ], }) export class PreferencesComponent extends BaseFormComponent implements OnInit { + readonly #formBuilder = inject(FormBuilder); + readonly #permissionsService = inject(IqserPermissionsService); + readonly #changeRef = inject(ChangeDetectorRef); + readonly #loadingService = inject(LoadingService); + readonly #userPreferenceService = inject(UserPreferenceService); + readonly form: FormGroup>; readonly currentScreen: Screen; readonly screens = Screens; @@ -65,76 +72,87 @@ export class PreferencesComponent extends BaseFormComponent implements OnInit { readonly config = getConfig(); readonly isIqserDevMode = isIqserDevMode(); - constructor( - route: ActivatedRoute, - readonly userPreferenceService: UserPreferenceService, - private readonly _formBuilder: FormBuilder, - private readonly _permissionsService: IqserPermissionsService, - private readonly _changeRef: ChangeDetectorRef, - private readonly _loadingService: LoadingService, - ) { + get #isOverwriteFileOptionActive() { + return !(this.#userPreferenceService.getOverwriteFileOption() === 'undefined'); + } + + constructor(route: ActivatedRoute) { super(); - this.form = this._formBuilder.group({ + this.form = this.#formBuilder.group({ // preferences - autoExpandFiltersOnActions: [this.userPreferenceService.getAutoExpandFiltersOnActions()], - tableExtractionType: [this.userPreferenceService.getTableExtractionType()], + autoExpandFiltersOnActions: [this.#userPreferenceService.getAutoExpandFiltersOnActions()], + tableExtractionType: [this.#userPreferenceService.getTableExtractionType()], // warnings preferences - loadAllAnnotationsWarning: [this.userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning)], - helpModeDialog: [this.userPreferenceService.getBool(KEYS.helpModeDialog)], + loadAllAnnotationsWarning: [this.#userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning)], + helpModeDialog: [this.#userPreferenceService.getBool(KEYS.helpModeDialog)], + overwriteFileOption: [this.#isOverwriteFileOptionActive], }); - if (!this._permissionsService.has(Roles.managePreferences)) { + if (!this.#permissionsService.has(Roles.managePreferences)) { this.form.disable(); } - if (!this._permissionsService.has(Roles.getTables)) { + if (!this.#permissionsService.has(Roles.getTables)) { this.form.controls.tableExtractionType.disable(); } + if (!this.#isOverwriteFileOptionActive) { + this.form.controls.overwriteFileOption.disable(); + } + this.initialFormValue = this.form.getRawValue(); this.currentScreen = route.snapshot.data.screen; } ngOnInit() { - this._loadingService.stop(); + this.#loadingService.stop(); } async save(): Promise { - if (this.form.controls.autoExpandFiltersOnActions.value !== this.userPreferenceService.getAutoExpandFiltersOnActions()) { - await this.userPreferenceService.toggleAutoExpandFiltersOnActions(); + if (this.form.controls.autoExpandFiltersOnActions.value !== this.#userPreferenceService.getAutoExpandFiltersOnActions()) { + await this.#userPreferenceService.toggleAutoExpandFiltersOnActions(); } - if (this.form.controls.tableExtractionType.value !== this.userPreferenceService.getTableExtractionType()) { - await this.userPreferenceService.save(PreferencesKeys.tableExtractionType, this.form.controls.tableExtractionType.value); + if (this.form.controls.tableExtractionType.value !== this.#userPreferenceService.getTableExtractionType()) { + await this.#userPreferenceService.save(PreferencesKeys.tableExtractionType, this.form.controls.tableExtractionType.value); } if ( this.form.controls.loadAllAnnotationsWarning.value !== - this.userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning) + this.#userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning) ) { - await this.userPreferenceService.save( + await this.#userPreferenceService.save( PreferencesKeys.loadAllAnnotationsWarning, String(this.form.controls.loadAllAnnotationsWarning.value), ); } - if (this.form.controls.helpModeDialog.value !== this.userPreferenceService.getBool(KEYS.helpModeDialog)) { - await this.userPreferenceService.save(KEYS.helpModeDialog, String(this.form.controls.helpModeDialog.value)); + if (this.form.controls.helpModeDialog.value !== this.#userPreferenceService.getBool(KEYS.helpModeDialog)) { + await this.#userPreferenceService.save(KEYS.helpModeDialog, String(this.form.controls.helpModeDialog.value)); } - await this.userPreferenceService.reload(); + if (this.form.controls.overwriteFileOption.enabled && !this.form.controls.overwriteFileOption.value) { + await this.#userPreferenceService.saveOverwriteFileOption('undefined'); + } + + await this.#userPreferenceService.reload(); this.#patchValues(); this.initialFormValue = this.form.getRawValue(); - this._changeRef.markForCheck(); + this.#changeRef.markForCheck(); } #patchValues() { this.form.patchValue({ - autoExpandFiltersOnActions: this.userPreferenceService.getAutoExpandFiltersOnActions(), - tableExtractionType: this.userPreferenceService.getTableExtractionType(), - loadAllAnnotationsWarning: this.userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning), - helpModeDialog: this.userPreferenceService.getBool(KEYS.helpModeDialog), + autoExpandFiltersOnActions: this.#userPreferenceService.getAutoExpandFiltersOnActions(), + tableExtractionType: this.#userPreferenceService.getTableExtractionType(), + loadAllAnnotationsWarning: this.#userPreferenceService.getBool(PreferencesKeys.loadAllAnnotationsWarning), + helpModeDialog: this.#userPreferenceService.getBool(KEYS.helpModeDialog), + overwriteFileOption: this.#isOverwriteFileOptionActive, }); + + if (!this.#isOverwriteFileOptionActive) { + this.form.controls.overwriteFileOption.disable(); + } } } diff --git a/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts b/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts index c4f82e77a..e8fc4f761 100644 --- a/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts +++ b/apps/red-ui/src/app/modules/upload-download/services/file-upload.service.ts @@ -15,6 +15,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { HeadersConfiguration } from '@iqser/common-ui/lib/utils'; import { LicenseService } from '@services/license.service'; import { LicenseFeatures } from '../../admin/screens/license/utils/constants'; +import { UserPreferenceService } from '@users/user-preference.service'; export interface ActiveUpload { subscription: Subscription; @@ -43,6 +44,7 @@ export class FileUploadService extends GenericService impleme private readonly _errorMessageService: ErrorMessageService, private readonly _licenseService: LicenseService, private readonly _toaster: Toaster, + private readonly _userPreferenceService: UserPreferenceService, ) { super(); const fileFetch$ = this.#fetchFiles$.pipe( @@ -76,7 +78,7 @@ export class FileUploadService extends GenericService impleme const maxSizeBytes = maxSizeMB * 1024 * 1024; const dossierFiles = this._filesMapService.get(dossierId); const supportMsOfficeFormats = this._licenseService.getFeature(LicenseFeatures.SUPPORT_MS_OFFICE_FORMATS)?.value as boolean; - let option: OverwriteFileOption = localStorage.getItem('overwriteFileOption') as OverwriteFileOption; + let option: OverwriteFileOption | 'undefined' = this._userPreferenceService.getOverwriteFileOption(); for (let idx = 0; idx < files.length; ++idx) { const file = files[idx]; let currentOption = option; @@ -95,14 +97,14 @@ export class FileUploadService extends GenericService impleme } } } else if (dossierFiles.find(pf => pf.filename === file.file.name)) { - if (!option) { + if (option === 'undefined') { const res = await this._dialogService.openOverwriteFileDialog(file.file.name); if (res.cancel) { return; } if (res.rememberChoice) { - localStorage.setItem('overwriteFileOption', res.option); + await this._userPreferenceService.saveOverwriteFileOption(res.option); } currentOption = res.option; diff --git a/apps/red-ui/src/app/users/user-preference.service.ts b/apps/red-ui/src/app/users/user-preference.service.ts index f2fd00d34..dfb18d184 100644 --- a/apps/red-ui/src/app/users/user-preference.service.ts +++ b/apps/red-ui/src/app/users/user-preference.service.ts @@ -2,6 +2,7 @@ import { Injectable } from '@angular/core'; import { IqserUserPreferenceService, ListingMode } from '@iqser/common-ui'; import { SystemDefaultOption, SystemDefaultType } from '../modules/account/utils/dialog-defaults'; import { RedactOrHintOption, RemoveRedactionOption } from '../modules/file-preview/utils/dialog-types'; +import { OverwriteFileOption } from '@red/domain'; export const PreferencesKeys = { dossierRecent: 'Dossier-Recent', @@ -21,6 +22,7 @@ export const PreferencesKeys = { removeRedactionDefaultExtraOption: 'Remove-Redaction-Default-Extra', removeRecommendationDefaultExtraOption: 'Remove-Recommendation-Default-Extra', removeHintDefaultExtraOption: 'Remove-Hint-Default-Extra', + rememberOverwriteFileOption: 'Remember-Overwrite-File', } as const; @Injectable({ @@ -169,4 +171,12 @@ export class UserPreferenceService extends IqserUserPreferenceService { async saveRemoveRecommendationDefaultExtraOption(defaultOption: boolean | string): Promise { await this.save(PreferencesKeys.removeRecommendationDefaultExtraOption, defaultOption.toString()); } + + getOverwriteFileOption(): OverwriteFileOption | 'undefined' { + return this._getAttribute(PreferencesKeys.rememberOverwriteFileOption, 'undefined') as OverwriteFileOption | 'undefined'; + } + + async saveOverwriteFileOption(preference: OverwriteFileOption | 'undefined') { + await this.save(PreferencesKeys.rememberOverwriteFileOption, preference); + } } diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 4a82e785f..24ebd8c54 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -273,9 +273,6 @@ "watermarks": "Wasserzeichen" }, "analysis-disabled": "", - "annotation": { - "pending": "(Analyse steht aus)" - }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -331,14 +328,14 @@ "error": "Rekategorisierung des Bilds fehlgeschlagen: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove": { - "error": "Entfernen der Schwärzung fehlgeschlagen: {error}", - "success": "Schwärzung wurde entfernt" - }, "remove-hint": { "error": "Entfernen des Hinweises fehlgeschlagen: {error}", "success": "Hinweis wurde entfernt" }, + "remove": { + "error": "Entfernen der Schwärzung fehlgeschlagen: {error}", + "success": "Schwärzung wurde entfernt" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "Rücksetzung erfolgreich" @@ -351,15 +348,15 @@ "remove-highlights": { "label": "Ausgewählte Markierungen entfernen" }, - "resize": { - "label": "Größe ändern" - }, "resize-accept": { "label": "Neue Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, + "resize": { + "label": "Größe ändern" + }, "see-references": { "label": "Referenzen anzeigen" }, @@ -393,6 +390,9 @@ "skipped": "Ignorierte Schwärzung", "text-highlight": "Markierung" }, + "annotation": { + "pending": "(Analyse steht aus)" + }, "annotations": "Annotationen", "archived-dossiers-listing": { "no-data": { @@ -587,8 +587,7 @@ "success": { "generic": "" }, - "title": "", - "warning-text": "" + "title": "" }, "configurations": "Konfiguration", "confirm-archive-dossier": { @@ -637,18 +636,14 @@ "warning": "Warnung: Wiederherstellung des Benutzers nicht möglich." }, "confirmation-dialog": { - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen, die sich durch die Reanalyse ergeben haben.

Möchten Sie es trotzdem freigeben?", - "title": "Warnung!" - }, "approve-file-without-analysis": { "confirmationText": "Ohne Analyse freigeben", "denyText": "Abbrechen", "question": "Analyse zur Erkennung neuer Schwärzungen erforderlich.", "title": "Warnung!" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen, die im Zuge einer Reanalyse hinzugefügt wurden.

Möchen Sie die Dateien wirklich freigeben?", + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen, die sich durch die Reanalyse ergeben haben.

Möchten Sie es trotzdem freigeben?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -657,6 +652,10 @@ "question": "Für mindestens eine Datei ist ein Analyselauf zur Erkennung neuer Schwärzungen erforderlich.", "title": "Warnung" }, + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen, die im Zuge einer Reanalyse hinzugefügt wurden.

Möchen Sie die Dateien wirklich freigeben?", + "title": "Warnung!" + }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft.

Möchten Sie sich die Datei dennoch zuweisen?", @@ -1026,13 +1025,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Keinem Bearbeiter zugewiesen" }, - "reanalyse": { - "action": "Datei analysieren" - }, "reanalyse-dossier": { "error": "Einplanung der Dateien für die Reanalyse fehlgeschlagen. Bitte versuchen Sie es noch einmal.", "success": "Dateien für Reanalyse vorgesehen." }, + "reanalyse": { + "action": "Datei analysieren" + }, "report-download": "", "start-auto-analysis": "Auto-Analyse aktivieren", "stop-auto-analysis": "Auto-Analyse anhalten", @@ -1066,8 +1065,7 @@ "dossier-states": "{count, plural, one{Dossier-Status} other{Dossier-Status}}" }, "error": { - "conflict": "Es gibt bereits einen Dossier-Status mit diesem Namen.", - "generic": "Speichern des Dossier-Status fehlgeschlagen." + "conflict": "Es gibt bereits einen Dossier-Status mit diesem Namen." }, "no-data": { "title": "Es wurde noch kein Dossier-Status angelegt." @@ -1103,14 +1101,6 @@ "total-documents": "Dokumente", "total-people": "{count} {count, plural, one{Benutzer} other {Benutzer}}" }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Aktiv", - "inactive": "Inaktiv", - "incomplete": "Unvollständig" - } - }, "dossier-templates-listing": { "action": { "clone": "Vorlage klonen", @@ -1145,6 +1135,14 @@ "title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}" } }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Aktiv", + "inactive": "Inaktiv", + "incomplete": "Unvollständig" + } + }, "dossier-watermark-selector": { "heading": "Wasserzeichen auf Dokumenten", "no-watermark": "Kein Wasserzeichen in der Dossier-Vorlage verfügbar:
Bitten Sie Ihren Admin, eines zu konfigurieren.", @@ -1340,15 +1338,6 @@ "title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}" } }, - "entity": { - "info": { - "actions": { - "revert": "Zurücksetzen", - "save": "Änderungen speichern" - }, - "heading": "Entität bearbeiten" - } - }, "entity-rules-screen": { "error": { "generic": "Fehler: Aktualisierung der Entitätsregeln fehlgeschlagen." @@ -1360,22 +1349,30 @@ "generic": "Die Entitätsregeln wurden aktualisiert." }, "title": "Entitätsregeln-Editor", - "warning-text": "Warnung: experimentelle Funktion!", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} in Regeln gefunden" }, + "entity": { + "info": { + "actions": { + "revert": "Zurücksetzen", + "save": "Änderungen speichern" + }, + "heading": "Entität bearbeiten" + } + }, "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": { @@ -1393,12 +1390,6 @@ }, "exact-date": "{day}. {month} {year} um {hour}:{minute} Uhr", "file": "Datei", - "file-attribute": { - "update": { - "error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.", - "success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert." - } - }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1409,6 +1400,12 @@ "number": "Nummer", "text": "Freier Text" }, + "file-attribute": { + "update": { + "error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.", + "success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert." + } + }, "file-attributes-configurations": { "cancel": "Abbrechen", "form": { @@ -1626,15 +1623,6 @@ "csv": "Die Datei-Attribute wurden erfolgreich aus der hochgeladenen CSV-Datei importiert." } }, - "filter": { - "analysis": "Analyse erforderlich", - "comment": "Kommentare", - "hint": "Nur Hinweise", - "image": "Bilder", - "none": "Keine Annotationen", - "redaction": "Schwärzungen", - "updated": "Aktualisiert" - }, "filter-menu": { "filter-options": "Filteroptionen", "filter-types": "Filter", @@ -1644,6 +1632,15 @@ "unseen-pages": "Nur Annotationen auf ungesehenen Seiten", "with-comments": "Nur Annotationen mit Kommentaren" }, + "filter": { + "analysis": "Analyse erforderlich", + "comment": "Kommentare", + "hint": "Nur Hinweise", + "image": "Bilder", + "none": "Keine Annotationen", + "redaction": "Schwärzungen", + "updated": "Aktualisiert" + }, "filters": { "assigned-people": "Bearbeiter", "documents-status": "Dokumentenstatus", @@ -1922,13 +1919,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": "Benachrichtigungen", - "deleted-dossier": "Gelöschtes Dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren" - }, "notifications-screen": { "category": { "email-notifications": "E-Mail-Benachrichtigungen", @@ -1942,6 +1932,7 @@ "dossier": "Benachrichtigungen zu Dossiers", "other": "Andere Benachrichtigungen" }, + "options-title": "Wählen Sie aus, bei welchen Aktivitäten Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen werde", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Prüfer zugewiesen werde", @@ -1959,7 +1950,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, bei welchen Aktivitäten Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofort", @@ -1967,6 +1957,13 @@ }, "title": "Benachrichtigungseinstellungen" }, + "notifications": { + "button-text": "Benachrichtigungen", + "deleted-dossier": "Gelöschtes Dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren" + }, "ocr": { "confirmation-dialog": { "cancel": "Abbrechen", @@ -2049,7 +2046,7 @@ "auto-expand-filters-on-action": "Filter ausgehend von meinen Aktionen automatisch anpassen", "help-mode-dialog": "Dialog zur Aktivierung des Hilfemodus", "load-all-annotations-warning": "Warnung bei gleichzeitigem Laden aller Annotationen in der Miniaturansicht", - "open-structured-view-by-default": "Strukturierte Komponentenansicht standardmäßig anzeigen", + "overwrite-file-option": "", "table-extraction-type": "Art der Tabellenextraktion" }, "label": "Präferenzen", @@ -2058,16 +2055,16 @@ "warnings-label": "Dialoge und Meldungen", "warnings-subtitle": "„Nicht mehr anzeigen“-Optionen" }, - "processing": { - "basic": "Verarbeitung läuft", - "ocr": "OCR" - }, "processing-status": { "ocr": "OCR", "pending": "Ausstehend", "processed": "Verarbeitet", "processing": "Verarbeitung läuft" }, + "processing": { + "basic": "Verarbeitung läuft", + "ocr": "OCR" + }, "readonly": "Lesemodus", "readonly-archived": "Lesemodus (archiviert)", "redact-text": { @@ -2303,12 +2300,6 @@ "red-user-admin": "Benutzeradmin", "regular": "regulärer Benutzer" }, - "search": { - "active-dossiers": "Dokumente in aktiven Dossiers", - "all-dossiers": "Alle Dokumente", - "placeholder": "Dokumente durchsuchen...", - "this-dossier": "In diesem Dossier" - }, "search-screen": { "cols": { "assignee": "Bearbeiter", @@ -2332,6 +2323,12 @@ "no-match": "Der Suchbegriff wurde in keinem der Dokumente gefunden.", "table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}" }, + "search": { + "active-dossiers": "Dokumente in aktiven Dossiers", + "all-dossiers": "Alle Dokumente", + "placeholder": "Dokumente durchsuchen...", + "this-dossier": "In diesem Dossier" + }, "seconds": "Sekunden", "size": "Größe", "smtp-auth-config": { @@ -2587,4 +2584,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 a30e74769..07433cfe7 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -2046,6 +2046,7 @@ "auto-expand-filters-on-action": "Auto-expand filters on my actions", "help-mode-dialog": "Help mode activation dialog", "load-all-annotations-warning": "Warning regarding simultaneous loading of all annotations in thumbnails", + "overwrite-file-option": "Preferred action when re-uploading of an already existing file", "table-extraction-type": "Table extraction type" }, "label": "Preferences", @@ -2583,4 +2584,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 4f2ce4b2e..593b08644 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -273,9 +273,6 @@ "watermarks": "Watermarks" }, "analysis-disabled": "Analysis disabled", - "annotation": { - "pending": "(Pending analysis)" - }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -331,14 +328,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" @@ -351,15 +348,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" }, @@ -393,6 +390,9 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, + "annotation": { + "pending": "(Pending analysis)" + }, "annotations": "Annotations", "archived-dossiers-listing": { "no-data": { @@ -587,8 +587,7 @@ "success": { "generic": "Component rules updated!" }, - "title": "Component rule editor", - "warning-text": "Warning: experimental feature!" + "title": "Component rule editor" }, "configurations": "Einstellungen", "confirm-archive-dossier": { @@ -637,18 +636,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": { @@ -657,6 +652,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?", @@ -1026,13 +1025,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" + }, "report-download": "Report download", "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", @@ -1066,8 +1065,7 @@ "dossier-states": "{count, plural, one{Dossier state} other{Dossier states}}" }, "error": { - "conflict": "Dossier state with this name already exists!", - "generic": "Failed to save dossier state!" + "conflict": "Dossier state with this name already exists!" }, "no-data": { "title": "There are no dossier states." @@ -1103,14 +1101,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", @@ -1145,6 +1135,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.", @@ -1340,15 +1338,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!" @@ -1360,22 +1349,30 @@ "generic": "Entity rules updated!" }, "title": "Entity rule editor", - "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": { @@ -1393,12 +1390,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", @@ -1409,6 +1400,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": { @@ -1626,15 +1623,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", @@ -1644,6 +1632,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", @@ -1922,13 +1919,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", @@ -1942,6 +1932,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", @@ -1959,7 +1950,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", @@ -1967,6 +1957,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", @@ -2049,7 +2046,7 @@ "auto-expand-filters-on-action": "Auto expand filters on my actions", "help-mode-dialog": "Help Mode Dialog", "load-all-annotations-warning": "Warning regarding loading all annotations at once in file preview", - "open-structured-view-by-default": "Display Component View by default when opening a document", + "overwrite-file-option": "", "table-extraction-type": "Table extraction type" }, "label": "Preferences", @@ -2058,16 +2055,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": { @@ -2303,12 +2300,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", @@ -2332,6 +2323,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": { @@ -2587,4 +2584,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 0aac764f8..340aea20c 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -2046,6 +2046,7 @@ "auto-expand-filters-on-action": "Auto expand filters on my actions", "help-mode-dialog": "Help Mode Dialog", "load-all-annotations-warning": "Warning regarding loading all annotations at once in file preview", + "overwrite-file-option": "Preferred action when re-uploading of an already existing file", "table-extraction-type": "Table extraction type" }, "label": "Preferences", @@ -2583,4 +2584,4 @@ } }, "yesterday": "Yesterday" -} \ No newline at end of file +} From 90672723829c7c771cb97f67e1a8b90abb2af4ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Tue, 13 Aug 2024 18:57:09 +0300 Subject: [PATCH 16/20] RED-9572: Format audit log values --- .../audit-info-dialog/audit-info-dialog.component.html | 6 ++++-- .../audit-info-dialog/audit-info-dialog.component.ts | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.html index 6b8f9f46d..65ed43f9d 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.html @@ -6,9 +6,11 @@
Key
Value
- +
{{ entry.key | humanize }}
-
{{ entry.value }}
+
+
{{ entry.value | json }}
+
diff --git a/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.ts index d038df97a..9de2f9c16 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/audit-info-dialog/audit-info-dialog.component.ts @@ -1,4 +1,4 @@ -import { KeyValue, KeyValuePipe, NgForOf } from '@angular/common'; +import { JsonPipe, KeyValue, KeyValuePipe, NgForOf } from '@angular/common'; import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { BaseDialogComponent, CircleButtonComponent, HumanizePipe } from '@iqser/common-ui'; @@ -17,7 +17,7 @@ type OrderFn = (a: KeyValue, b: KeyValue) => num styleUrls: ['./audit-info-dialog.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, - imports: [TranslateModule, NgForOf, KeyValuePipe, HumanizePipe, CircleButtonComponent], + imports: [TranslateModule, NgForOf, KeyValuePipe, HumanizePipe, CircleButtonComponent, JsonPipe], }) export class AuditInfoDialogComponent extends BaseDialogComponent { constructor( From 538f36aebca530546250033b21f7d5014d3ff01f Mon Sep 17 00:00:00 2001 From: Valentin Mihai Date: Tue, 13 Aug 2024 21:04:47 +0300 Subject: [PATCH 17/20] WIP on master RED-9201 - UI for Component Mapping Tables --- ...dd-edit-component-mapping-dialog.component.html | 5 ++--- ...dd-edit-component-mapping-dialog.component.scss | 5 ----- .../add-edit-component-mapping-dialog.component.ts | 14 ++++++++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.html b/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.html index 1d5613b61..8283e05a8 100644 --- a/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.html @@ -30,7 +30,7 @@
@@ -40,13 +40,12 @@ formControlName="delimiter" name="delimiter" type="text" - [class.disabled-file-options]="disabledFileOptions" />
- + {{ translations[type] | translate }} diff --git a/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.scss b/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.scss index a7e43f0c6..9f7a553cc 100644 --- a/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.scss +++ b/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.scss @@ -18,11 +18,6 @@ font-size: 15px; } } - - .disabled-file-options { - opacity: 0.5; - pointer-events: none; - } } .row:last-child { diff --git a/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.ts b/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.ts index 8c7a41109..e8a628491 100644 --- a/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/component-mappings/add-edit-component-mapping-dialog/add-edit-component-mapping-dialog.component.ts @@ -52,7 +52,6 @@ export class AddEditComponentMappingDialogComponent { protected readonly encodingTypeOptions = Object.keys(FileAttributeEncodingTypes); protected readonly translations = fileAttributeEncodingTypesTranslations; - #fileChanged = false; activeFile: File; form!: UntypedFormGroup; @@ -73,13 +72,14 @@ export class AddEditComponentMappingDialogComponent const file = new Blob([fileContent.body as Blob], { type: 'text/csv' }); this.form.get('file').setValue(file); this.initialFormValue = this.form.getRawValue(); + this.#disableEncodingAndDelimiter(); } } changeFile(file: File) { - this.#fileChanged = true; this.form.get('file').setValue(file); this.form.get('fileName').setValue(file?.name); + this.#enableEncodingAndDelimiter(); } save() { @@ -96,7 +96,13 @@ export class AddEditComponentMappingDialogComponent }); } - get disabledFileOptions() { - return this.initialFormValue?.file && !this.#fileChanged; + #disableEncodingAndDelimiter() { + this.form.get('encoding').disable(); + this.form.get('delimiter').disable(); + } + + #enableEncodingAndDelimiter() { + this.form.get('encoding').enable(); + this.form.get('delimiter').enable(); } } From 87fa2df399ec1fc8c6c6bc9986354516313ba229 Mon Sep 17 00:00:00 2001 From: project_703_bot_497bb7eb186ca592c63b3e50cd5c69e1 Date: Wed, 14 Aug 2024 01:03:23 +0000 Subject: [PATCH 18/20] push back localazy update --- apps/red-ui/src/assets/i18n/redact/de.json | 149 ++++++++++----------- apps/red-ui/src/assets/i18n/redact/en.json | 2 +- apps/red-ui/src/assets/i18n/scm/de.json | 149 ++++++++++----------- apps/red-ui/src/assets/i18n/scm/en.json | 2 +- 4 files changed, 150 insertions(+), 152 deletions(-) diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 24ebd8c54..3bd76e860 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -273,6 +273,9 @@ "watermarks": "Wasserzeichen" }, "analysis-disabled": "", + "annotation": { + "pending": "(Analyse steht aus)" + }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -328,14 +331,14 @@ "error": "Rekategorisierung des Bilds fehlgeschlagen: {error}", "success": "Bild wurde einer neuen Kategorie zugeordnet." }, - "remove-hint": { - "error": "Entfernen des Hinweises fehlgeschlagen: {error}", - "success": "Hinweis wurde entfernt" - }, "remove": { "error": "Entfernen der Schwärzung fehlgeschlagen: {error}", "success": "Schwärzung wurde entfernt" }, + "remove-hint": { + "error": "Entfernen des Hinweises fehlgeschlagen: {error}", + "success": "Hinweis wurde entfernt" + }, "undo": { "error": "Die Aktion konnte nicht rückgängig gemacht werden. Fehler: {error}", "success": "Rücksetzung erfolgreich" @@ -348,15 +351,15 @@ "remove-highlights": { "label": "Ausgewählte Markierungen entfernen" }, + "resize": { + "label": "Größe ändern" + }, "resize-accept": { "label": "Neue Größe speichern" }, "resize-cancel": { "label": "Größenänderung abbrechen" }, - "resize": { - "label": "Größe ändern" - }, "see-references": { "label": "Referenzen anzeigen" }, @@ -390,9 +393,6 @@ "skipped": "Ignorierte Schwärzung", "text-highlight": "Markierung" }, - "annotation": { - "pending": "(Analyse steht aus)" - }, "annotations": "Annotationen", "archived-dossiers-listing": { "no-data": { @@ -636,14 +636,18 @@ "warning": "Warnung: Wiederherstellung des Benutzers nicht möglich." }, "confirmation-dialog": { + "approve-file": { + "question": "Dieses Dokument enthält ungesehene Änderungen, die sich durch die Reanalyse ergeben haben.

Möchten Sie es trotzdem freigeben?", + "title": "Warnung!" + }, "approve-file-without-analysis": { "confirmationText": "Ohne Analyse freigeben", "denyText": "Abbrechen", "question": "Analyse zur Erkennung neuer Schwärzungen erforderlich.", "title": "Warnung!" }, - "approve-file": { - "question": "Dieses Dokument enthält ungesehene Änderungen, die sich durch die Reanalyse ergeben haben.

Möchten Sie es trotzdem freigeben?", + "approve-multiple-files": { + "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen, die im Zuge einer Reanalyse hinzugefügt wurden.

Möchen Sie die Dateien wirklich freigeben?", "title": "Warnung!" }, "approve-multiple-files-without-analysis": { @@ -652,10 +656,6 @@ "question": "Für mindestens eine Datei ist ein Analyselauf zur Erkennung neuer Schwärzungen erforderlich.", "title": "Warnung" }, - "approve-multiple-files": { - "question": "Mindestens eine der ausgewählten Dateien enthält ungesehene Änderungen, die im Zuge einer Reanalyse hinzugefügt wurden.

Möchen Sie die Dateien wirklich freigeben?", - "title": "Warnung!" - }, "assign-file-to-me": { "question": { "multiple": "Dieses Dokument wird gerade von einer anderen Person geprüft.

Möchten Sie sich die Datei dennoch zuweisen?", @@ -1025,13 +1025,13 @@ "recent": "Neu ({hours} h)", "unassigned": "Keinem Bearbeiter zugewiesen" }, + "reanalyse": { + "action": "Datei analysieren" + }, "reanalyse-dossier": { "error": "Einplanung der Dateien für die Reanalyse fehlgeschlagen. Bitte versuchen Sie es noch einmal.", "success": "Dateien für Reanalyse vorgesehen." }, - "reanalyse": { - "action": "Datei analysieren" - }, "report-download": "", "start-auto-analysis": "Auto-Analyse aktivieren", "stop-auto-analysis": "Auto-Analyse anhalten", @@ -1101,6 +1101,14 @@ "total-documents": "Dokumente", "total-people": "{count} {count, plural, one{Benutzer} other {Benutzer}}" }, + "dossier-templates": { + "label": "Dossier-Vorlagen", + "status": { + "active": "Aktiv", + "inactive": "Inaktiv", + "incomplete": "Unvollständig" + } + }, "dossier-templates-listing": { "action": { "clone": "Vorlage klonen", @@ -1135,14 +1143,6 @@ "title": "{length} {length, plural, one{Dossier-Vorlage} other{Dossier-Vorlagen}}" } }, - "dossier-templates": { - "label": "Dossier-Vorlagen", - "status": { - "active": "Aktiv", - "inactive": "Inaktiv", - "incomplete": "Unvollständig" - } - }, "dossier-watermark-selector": { "heading": "Wasserzeichen auf Dokumenten", "no-watermark": "Kein Wasserzeichen in der Dossier-Vorlage verfügbar:
Bitten Sie Ihren Admin, eines zu konfigurieren.", @@ -1338,6 +1338,15 @@ "title": "{length} {length, plural, one{Wörterbuch} other{Wörterbücher}}" } }, + "entity": { + "info": { + "actions": { + "revert": "Zurücksetzen", + "save": "Änderungen speichern" + }, + "heading": "Entität bearbeiten" + } + }, "entity-rules-screen": { "error": { "generic": "Fehler: Aktualisierung der Entitätsregeln fehlgeschlagen." @@ -1351,28 +1360,19 @@ "title": "Entitätsregeln-Editor", "warnings-found": "{warnings, plural, one{A warning} other{{warnings} warnings}} in Regeln gefunden" }, - "entity": { - "info": { - "actions": { - "revert": "Zurücksetzen", - "save": "Änderungen speichern" - }, - "heading": "Entität bearbeiten" - } - }, "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": { @@ -1390,6 +1390,12 @@ }, "exact-date": "{day}. {month} {year} um {hour}:{minute} Uhr", "file": "Datei", + "file-attribute": { + "update": { + "error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.", + "success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert." + } + }, "file-attribute-encoding-types": { "ascii": "ASCII", "iso": "ISO-8859-1", @@ -1400,12 +1406,6 @@ "number": "Nummer", "text": "Freier Text" }, - "file-attribute": { - "update": { - "error": "Aktualisierung des Werts für das Datei-Attribut fehlgeschlagen. Bitte versuchen Sie es noch einmal.", - "success": "Der Wert für das Dateiattribut wurde erfolgreich aktualisiert." - } - }, "file-attributes-configurations": { "cancel": "Abbrechen", "form": { @@ -1623,15 +1623,6 @@ "csv": "Die Datei-Attribute wurden erfolgreich aus der hochgeladenen CSV-Datei importiert." } }, - "filter-menu": { - "filter-options": "Filteroptionen", - "filter-types": "Filter", - "label": "Filter", - "pages-without-annotations": "Nur Seiten ohne Annotationen", - "redaction-changes": "Nur Annotationen mit lokalen manuellen Änderungen", - "unseen-pages": "Nur Annotationen auf ungesehenen Seiten", - "with-comments": "Nur Annotationen mit Kommentaren" - }, "filter": { "analysis": "Analyse erforderlich", "comment": "Kommentare", @@ -1641,6 +1632,15 @@ "redaction": "Schwärzungen", "updated": "Aktualisiert" }, + "filter-menu": { + "filter-options": "Filteroptionen", + "filter-types": "Filter", + "label": "Filter", + "pages-without-annotations": "Nur Seiten ohne Annotationen", + "redaction-changes": "Nur Annotationen mit lokalen manuellen Änderungen", + "unseen-pages": "Nur Annotationen auf ungesehenen Seiten", + "with-comments": "Nur Annotationen mit Kommentaren" + }, "filters": { "assigned-people": "Bearbeiter", "documents-status": "Dokumentenstatus", @@ -1919,6 +1919,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": "Benachrichtigungen", + "deleted-dossier": "Gelöschtes Dossier", + "label": "Benachrichtigungen", + "mark-all-as-read": "Alle als gelesen markieren", + "mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren" + }, "notifications-screen": { "category": { "email-notifications": "E-Mail-Benachrichtigungen", @@ -1932,7 +1939,6 @@ "dossier": "Benachrichtigungen zu Dossiers", "other": "Andere Benachrichtigungen" }, - "options-title": "Wählen Sie aus, bei welchen Aktivitäten Sie benachrichtigt werden möchten", "options": { "ASSIGN_APPROVER": "Wenn ich einem Dokument als Genehmiger zugewiesen werde", "ASSIGN_REVIEWER": "Wenn ich einem Dokument als Prüfer zugewiesen werde", @@ -1950,6 +1956,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, bei welchen Aktivitäten Sie benachrichtigt werden möchten", "schedule": { "daily": "Tägliche Zusammenfassung", "instant": "Sofort", @@ -1957,13 +1964,6 @@ }, "title": "Benachrichtigungseinstellungen" }, - "notifications": { - "button-text": "Benachrichtigungen", - "deleted-dossier": "Gelöschtes Dossier", - "label": "Benachrichtigungen", - "mark-all-as-read": "Alle als gelesen markieren", - "mark-as": "Als {type, select, read{gelesen} unread{ungelesen} other{}} markieren" - }, "ocr": { "confirmation-dialog": { "cancel": "Abbrechen", @@ -2046,7 +2046,6 @@ "auto-expand-filters-on-action": "Filter ausgehend von meinen Aktionen automatisch anpassen", "help-mode-dialog": "Dialog zur Aktivierung des Hilfemodus", "load-all-annotations-warning": "Warnung bei gleichzeitigem Laden aller Annotationen in der Miniaturansicht", - "overwrite-file-option": "", "table-extraction-type": "Art der Tabellenextraktion" }, "label": "Präferenzen", @@ -2055,16 +2054,16 @@ "warnings-label": "Dialoge und Meldungen", "warnings-subtitle": "„Nicht mehr anzeigen“-Optionen" }, + "processing": { + "basic": "Verarbeitung läuft", + "ocr": "OCR" + }, "processing-status": { "ocr": "OCR", "pending": "Ausstehend", "processed": "Verarbeitet", "processing": "Verarbeitung läuft" }, - "processing": { - "basic": "Verarbeitung läuft", - "ocr": "OCR" - }, "readonly": "Lesemodus", "readonly-archived": "Lesemodus (archiviert)", "redact-text": { @@ -2300,6 +2299,12 @@ "red-user-admin": "Benutzeradmin", "regular": "regulärer Benutzer" }, + "search": { + "active-dossiers": "Dokumente in aktiven Dossiers", + "all-dossiers": "Alle Dokumente", + "placeholder": "Dokumente durchsuchen...", + "this-dossier": "In diesem Dossier" + }, "search-screen": { "cols": { "assignee": "Bearbeiter", @@ -2323,12 +2328,6 @@ "no-match": "Der Suchbegriff wurde in keinem der Dokumente gefunden.", "table-header": "{length} {length, plural, one{Suchergebnis} other{Suchergebnisse}}" }, - "search": { - "active-dossiers": "Dokumente in aktiven Dossiers", - "all-dossiers": "Alle Dokumente", - "placeholder": "Dokumente durchsuchen...", - "this-dossier": "In diesem Dossier" - }, "seconds": "Sekunden", "size": "Größe", "smtp-auth-config": { @@ -2584,4 +2583,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 07433cfe7..d983b134d 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -2584,4 +2584,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 593b08644..b144759a5 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -273,6 +273,9 @@ "watermarks": "Watermarks" }, "analysis-disabled": "Analysis disabled", + "annotation": { + "pending": "(Pending analysis)" + }, "annotation-actions": { "accept-recommendation": { "label": "Empfehlung annehmen" @@ -328,14 +331,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" @@ -348,15 +351,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" }, @@ -390,9 +393,6 @@ "skipped": "Übersprungen", "text-highlight": "Earmark" }, - "annotation": { - "pending": "(Pending analysis)" - }, "annotations": "Annotations", "archived-dossiers-listing": { "no-data": { @@ -636,14 +636,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": { @@ -652,10 +656,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?", @@ -1025,13 +1025,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" - }, "report-download": "Report download", "start-auto-analysis": "Enable auto-analysis", "stop-auto-analysis": "Stop auto-analysis", @@ -1101,6 +1101,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", @@ -1135,14 +1143,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.", @@ -1338,6 +1338,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!" @@ -1351,28 +1360,19 @@ "title": "Entity rule editor", "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": { @@ -1390,6 +1390,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", @@ -1400,12 +1406,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": { @@ -1623,15 +1623,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", @@ -1641,6 +1632,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", @@ -1919,6 +1919,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", @@ -1932,7 +1939,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", @@ -1950,6 +1956,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", @@ -1957,13 +1964,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", @@ -2046,7 +2046,6 @@ "auto-expand-filters-on-action": "Auto expand filters on my actions", "help-mode-dialog": "Help Mode Dialog", "load-all-annotations-warning": "Warning regarding loading all annotations at once in file preview", - "overwrite-file-option": "", "table-extraction-type": "Table extraction type" }, "label": "Preferences", @@ -2055,16 +2054,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": { @@ -2300,6 +2299,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", @@ -2323,12 +2328,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": { @@ -2584,4 +2583,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 340aea20c..041e6eb67 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -2584,4 +2584,4 @@ } }, "yesterday": "Yesterday" -} +} \ No newline at end of file From fcbffdad8f3e136455d31762c7fc4bd0ab9a934d Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Wed, 14 Aug 2024 11:02:28 +0300 Subject: [PATCH 19/20] RED-9589: removed FP option for locally removed and forced redactions. --- .../src/app/models/file/annotation-permissions.utils.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 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 aa0830d0c..be5b01235 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 @@ -1,6 +1,6 @@ import { AnnotationPermissions } from '@models/file/annotation.permissions'; import { AnnotationWrapper } from '@models/file/annotation.wrapper'; -import { Dictionary, LogEntryEngines, SuperTypes } from '@red/domain'; +import { Dictionary, SuperTypes } from '@red/domain'; export const canUndo = (annotation: AnnotationWrapper, isApprover: boolean) => !isApprover && annotation.pending; @@ -16,7 +16,11 @@ export const canForceRedaction = (annotation: AnnotationWrapper, canAddRedaction export const canAcceptRecommendation = (annotation: AnnotationWrapper) => annotation.isRecommendation && !annotation.pending; export const canMarkAsFalsePositive = (annotation: AnnotationWrapper, annotationEntity: Dictionary) => - annotation.canBeMarkedAsFalsePositive && !annotation.hasBeenResizedLocally && annotationEntity?.hasDictionary; + annotation.canBeMarkedAsFalsePositive && + !annotation.hasBeenResizedLocally && + !annotation.isRemovedLocally && + !annotation.hasBeenForcedRedaction && + annotationEntity?.hasDictionary; export const canRemoveOnlyHere = (annotation: AnnotationWrapper, canAddRedaction: boolean, autoAnalysisDisabled: boolean) => canAddRedaction && From 623627552818cf8a3fae42244948cc7fd7e58f14 Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Wed, 14 Aug 2024 11:43:22 +0300 Subject: [PATCH 20/20] RED-9777: added help button on edit and remove annotation dialogs. --- .../edit-annotation-dialog.component.html | 2 ++ .../edit-annotation-dialog.component.ts | 10 +++++++++- .../remove-annotation-dialog.component.html | 1 + .../remove-annotation-dialog.component.ts | 10 +++++++++- libs/common-ui | 2 +- 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.html b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.html index 9c1f26c13..5f142c981 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.html +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.html @@ -52,6 +52,8 @@
+ +
diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.ts index 624e3728e..58745f45b 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/edit-annotation-dialog/edit-annotation-dialog.component.ts @@ -1,6 +1,13 @@ import { Component, OnInit } from '@angular/core'; import { FormBuilder, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms'; -import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui'; +import { + CircleButtonComponent, + HasScrollbarDirective, + HelpButtonComponent, + IconButtonComponent, + IconButtonTypes, + IqserDialogComponent, +} from '@iqser/common-ui'; import { Dictionary, Dossier, SuperTypes } from '@red/domain'; import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; import { DictionaryService } from '@services/entity-services/dictionary.service'; @@ -33,6 +40,7 @@ import { MatDialogClose } from '@angular/material/dialog'; IconButtonComponent, CircleButtonComponent, MatDialogClose, + HelpButtonComponent, ], }) export class EditAnnotationDialogComponent diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.html b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.html index 1cef8cb15..42b4689a4 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.html +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.html @@ -60,6 +60,7 @@
+
diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.ts index 58ffe7ace..6571d4ecc 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/docu-mine/remove-annotation-dialog/remove-annotation-dialog.component.ts @@ -6,7 +6,14 @@ import { MatDialogClose } from '@angular/material/dialog'; import { DetailsRadioOption } from '@common-ui/inputs/details-radio/details-radio-option'; import { DetailsRadioComponent } from '@common-ui/inputs/details-radio/details-radio.component'; import { ReplaceNbspPipe } from '@common-ui/pipes/replace-nbsp.pipe'; -import { CircleButtonComponent, HasScrollbarDirective, IconButtonComponent, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui'; +import { + CircleButtonComponent, + HasScrollbarDirective, + HelpButtonComponent, + IconButtonComponent, + IconButtonTypes, + IqserDialogComponent, +} from '@iqser/common-ui'; import { TranslateModule } from '@ngx-translate/core'; import { getRemoveRedactionOptions } from '../../../utils/dialog-options'; import { RemoveAnnotationData, RemoveAnnotationOption, RemoveAnnotationOptions, RemoveAnnotationResult } from '../../../utils/dialog-types'; @@ -28,6 +35,7 @@ import { RemoveAnnotationData, RemoveAnnotationOption, RemoveAnnotationOptions, CircleButtonComponent, MatDialogClose, NgIf, + HelpButtonComponent, ], }) export class RemoveAnnotationDialogComponent extends IqserDialogComponent< diff --git a/libs/common-ui b/libs/common-ui index 6547eb2ad..0ca5e7e2a 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 6547eb2ad53d9df97a08210d7edb6d849e59d998 +Subproject commit 0ca5e7e2ad7ca2b788f7234d7a38a3b810d9b31a