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 58745f45b..156c920ce 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 @@ -8,7 +8,7 @@ import { IconButtonTypes, IqserDialogComponent, } from '@iqser/common-ui'; -import { Dictionary, Dossier, SuperTypes } from '@red/domain'; +import { Dictionary, Dossier } from '@red/domain'; import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service'; import { DictionaryService } from '@services/entity-services/dictionary.service'; import { Roles } from '@users/roles'; @@ -47,12 +47,12 @@ export class EditAnnotationDialogComponent extends IqserDialogComponent implements OnInit { - readonly #dossier: Dossier; readonly roles = Roles; readonly iconButtonTypes = IconButtonTypes; readonly redactedTexts: string[]; dictionaries: Dictionary[] = []; form: UntypedFormGroup; + readonly #dossier: Dossier; constructor( private readonly _activeDossiersService: ActiveDossiersService, @@ -60,7 +60,7 @@ export class EditAnnotationDialogComponent private readonly _formBuilder: FormBuilder, ) { super(); - this.#dossier = _activeDossiersService.find(this.data.dossierId); + this.#dossier = this._activeDossiersService.find(this.data.dossierId); const annotations = this.data.annotations; this.redactedTexts = annotations.map(annotation => annotation.value); this.form = this.#getForm(); @@ -83,10 +83,6 @@ export class EditAnnotationDialogComponent this.#setTypes(); } - reasonChanged() { - this.form.patchValue({ reason: this.dictionaries.find(d => d.type === SuperTypes.ManualRedaction) }); - } - save(): void { const value = this.form.value; this.dialogRef.close({ @@ -106,8 +102,4 @@ export class EditAnnotationDialogComponent type: [sameType ? this.data.annotations[0].type : null], }); } - - #allRectangles() { - return this.data.annotations.reduce((acc, a) => acc && a.AREA, true); - } } diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.html b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.html index 7d5b0684e..d2ad69a42 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.html +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.html @@ -1,7 +1,7 @@
-
-
-
-
- {{ selectedDictionary?.label }} - -
-
-
- - - {{ - 'edit-dossier-dialog.dictionary.entries' - | translate: { length: entriesToDisplay.length, hint: selectedDictionary.hint } - }} - - - {{ - 'edit-dossier-dialog.dictionary.false-positive-entries' | translate: { length: entriesToDisplay.length } - }} - - - {{ - 'edit-dossier-dialog.dictionary.false-recommendation-entries' - | translate: { length: entriesToDisplay.length } - }} - -
-
-
-
+
+ {{ selectedDictionary?.label }} +
-
+
= this.#dictionaries; + protected readonly _isSearchOpen = signal(false); protected initialDossierTemplateId: string; readonly #currentTab = window.location.href.split('/').pop(); #dossierTemplate = this.dossierTemplatesService.all[0]; diff --git a/apps/red-ui/src/app/modules/shared/components/editor/editor.component.ts b/apps/red-ui/src/app/modules/shared/components/editor/editor.component.ts index 45a452d89..e2538f236 100644 --- a/apps/red-ui/src/app/modules/shared/components/editor/editor.component.ts +++ b/apps/red-ui/src/app/modules/shared/components/editor/editor.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core'; +import { Component, Input, model, OnChanges, OnInit, SimpleChanges, untracked } from '@angular/core'; import { LoadingService } from '@iqser/common-ui'; import { EditorThemeService } from '@services/editor-theme.service'; import { Subject } from 'rxjs'; @@ -39,6 +39,7 @@ export class EditorComponent implements OnInit, OnChanges { @Input() diffEditorText: string; @Input() @OnChange('revert') initialEntries: List; @Input() canEdit = false; + readonly isSearchOpen = model.required(); /** * Used as [modified] input on diff editor * Shouldn't be updated when editing in diff editor. @@ -84,9 +85,14 @@ export class EditorComponent implements OnInit, OnChanges { return this.currentEntries.length; } - async openFindPanel(): Promise { + async toggleFindPanel(): Promise { + const isFindPanelOpen = untracked(this.isSearchOpen); const editor = this.showDiffEditor ? this._diffEditor.getOriginalEditor() : this.codeEditor; - await editor.getAction('actions.find').run(); + if (isFindPanelOpen) { + await (editor.getContribution('editor.contrib.findController') as any).closeFindWidget(); + } else { + await editor.getAction('actions.find').run(); + } } onPaste(event: ClipboardEvent) { @@ -127,11 +133,13 @@ export class EditorComponent implements OnInit, OnChanges { this._diffEditor.getModifiedEditor().onDidChangeModelContent(() => { this.value = this._diffEditor.getModel().modified.getValue(); }); + this._initializeFindWidget(editor.getOriginalEditor()); this.#setTheme(); } onCodeEditorInit(editor: MonacoStandaloneCodeEditor): void { this.codeEditor = editor; + this._initializeFindWidget(editor); this.#setTheme(); } @@ -143,6 +151,15 @@ export class EditorComponent implements OnInit, OnChanges { this._editorTextChanged$.next(this.value); } + private _initializeFindWidget(editor: MonacoStandaloneCodeEditor): void { + this.isSearchOpen.set(false); + (editor.getContribution('editor.contrib.findController') as any).getState().onFindReplaceStateChange(event => { + if (event.isRevealed) { + this.isSearchOpen.update(v => !v); + } + }); + } + #getDecorations(newText: string) { const currentEntries = newText.split('\n'); const newDecorations: IModelDeltaDecoration[] = []; diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 764732cc2..50041f13e 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -1234,11 +1234,8 @@ "save": "Speichern", "title": "{label} bearbeiten" }, - "entries": "{length} {length, plural, one{Eintrag} other{Einträge}}", "entries-count": "", - "false-positive-entries": "{length} {length, plural, one{Falsch-Positiver} other{Falsch-Positive}}", "false-positives": "Falsch-Positive ({count})", - "false-recommendation-entries": "{length} {length, plural, one{falsche Empfehlung} other{falsche Empfehlungen}}", "false-recommendations": "Falsche Empfehlungen ({count})", "to-redact": "Schwärzungen ({count})" }, diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index a703911d6..aa4e95273 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -1234,11 +1234,8 @@ "save": "Save", "title": "Edit {label}" }, - "entries": "{length} {length, plural, one{entry} other{entries}} to redact", "entries-count": "{count} {count, plural, one{entry} other{entries}}", - "false-positive-entries": "{length} false positive {length, plural, one{entry} other{entries}}", "false-positives": "False positives ({count})", - "false-recommendation-entries": "{length} false recommendation {length, plural, one{entry} other{entries}}", "false-recommendations": "False recommendations ({count})", "to-redact": "Entries ({count})" }, diff --git a/apps/red-ui/src/assets/i18n/scm/de.json b/apps/red-ui/src/assets/i18n/scm/de.json index 91caf05d7..535bff45e 100644 --- a/apps/red-ui/src/assets/i18n/scm/de.json +++ b/apps/red-ui/src/assets/i18n/scm/de.json @@ -1234,11 +1234,8 @@ "save": "", "title": "" }, - "entries": "{length} {length, plural, one{entry} other{entries}} to {hint, select, true{annotate} other{redact}}", "entries-count": "", - "false-positive-entries": "{length} false positive {length, plural, one{entry} other{entries}}", "false-positives": "False positives ({count})", - "false-recommendation-entries": "{length} false recommendation {length, plural, one{entry} other{entries}}", "false-recommendations": "False recommendations ({count})", "to-redact": "To redact ({count})" }, diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index ccb133a4a..c2269268f 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -1234,11 +1234,8 @@ "save": "", "title": "" }, - "entries": "{length} {length, plural, one{entry} other{entries}} to {hint, select, true{annotate} other{redact}}", "entries-count": "{count} {count, plural, one{entry} other{entries}}", - "false-positive-entries": "{length} false positive {length, plural, one{entry} other{entries}}", "false-positives": "False positives ({count})", - "false-recommendation-entries": "{length} false recommendation {length, plural, one{entry} other{entries}}", "false-recommendations": "False recommendations ({count})", "to-redact": "To redact ({count})" },