diff --git a/apps/red-ui/src/app/models/file/annotation.wrapper.ts b/apps/red-ui/src/app/models/file/annotation.wrapper.ts index c2bb7923d..1a8f5db59 100644 --- a/apps/red-ui/src/app/models/file/annotation.wrapper.ts +++ b/apps/red-ui/src/app/models/file/annotation.wrapper.ts @@ -66,6 +66,7 @@ export class AnnotationWrapper implements IListable { isRemovedLocally = false; hiddenInWorkload = false; lastManualChange: ManualRedactionType; + entry: IEntityLogEntry; get isRuleBased() { return this.engines.includes(LogEntryEngines.RULE); @@ -214,7 +215,6 @@ export class AnnotationWrapper implements IListable { static fromData( logEntry: IEntityLogEntry, - allLogEntries: IEntityLogEntry[], dictionary: Dictionary, changeLogType: ChangeType, legalBasisList: ILegalBasis[], @@ -275,10 +275,6 @@ export class AnnotationWrapper implements IListable { const lastRelevantManualChange = logEntry.manualChanges?.at(-1); annotationWrapper.lastManualChange = lastRelevantManualChange?.manualRedactionType; - if (annotationWrapper.pending) { - const removedEntry = allLogEntries.find((e: IEntityLogEntry) => e.id === annotationWrapper.id); - logEntry.oldState = removedEntry?.state; - } annotationWrapper.superType = SuperTypeMapper[logEntry.entryType][logEntry.state](logEntry); annotationWrapper.superTypeLabel = annotationTypesTranslations[annotationWrapper.superType]; @@ -295,7 +291,7 @@ export class AnnotationWrapper implements IListable { annotationWrapper.color = dictionary ? (dictionary[colorKey] as string) : (defaultColors[defaultColor] as string); } - annotationWrapper['entry'] = logEntry; + annotationWrapper.entry = logEntry; return annotationWrapper; } diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.html b/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.html index 7ea57cc77..5b47b90b7 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.html +++ b/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.html @@ -1,6 +1,6 @@
diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.scss b/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.scss index 3de6f374c..39e801093 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.scss +++ b/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.scss @@ -170,6 +170,11 @@ } } +.filename-edit-button:hover { + background-color: var(--iqser-grey-6); + border-radius: 50%; +} + .file-attribute:hover { &.workflow-attribute { background-color: var(--iqser-grey-6); diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.ts b/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.ts index 1c3ef8a1f..9346306ed 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.ts +++ b/apps/red-ui/src/app/modules/dossier-overview/components/file-attribute/file-attribute.component.ts @@ -150,7 +150,13 @@ export class FileAttributeComponent extends BaseFormComponent implements OnDestr this.#subscriptions.unsubscribe(); } - async editFileAttribute($event: MouseEvent): Promise { + handleFieldClick($event: MouseEvent) { + if (!this.fileNameColumn) { + this.editFileAttribute($event); + } + } + + editFileAttribute($event: MouseEvent) { if ( !this.file.isInitialProcessing && this.permissionsService.canEditFileAttributes(this.file, this.dossier) && diff --git a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/table-item.component.scss b/apps/red-ui/src/app/modules/dossier-overview/components/table-item/table-item.component.scss index f46bac911..ca71f0d3b 100644 --- a/apps/red-ui/src/app/modules/dossier-overview/components/table-item/table-item.component.scss +++ b/apps/red-ui/src/app/modules/dossier-overview/components/table-item/table-item.component.scss @@ -31,9 +31,10 @@ .file-name-cell:hover { ::ng-deep.file-name-column { - background: var(--iqser-grey-6); + .filename-edit-button { + width: 24px; + height: 24px; - div { mat-icon { visibility: visible; } diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/redact-text-dialog/redact-text-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/redact-text-dialog/redact-text-dialog.component.ts index 1404a02fe..5399600be 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/redact-text-dialog/redact-text-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/redact-text-dialog/redact-text-dialog.component.ts @@ -40,6 +40,16 @@ export class RedactTextDialogComponent readonly #manualRedactionTypeExists = inject(DictionaryService).hasManualType(this.#dossier.dossierTemplateId); #applyToAllDossiers = this.data.applyToAllDossiers ?? true; + get defaultOption() { + const inDossierOption = this.options.find(option => option.value === RedactOrHintOptions.IN_DOSSIER); + this.dictionaryRequest = !!inDossierOption && !inDossierOption.disabled; + if (this.dictionaryRequest) { + this.#setDictionaries(); + return inDossierOption; + } + return this.options[0]; + } + constructor( private readonly _justificationsService: JustificationsService, private readonly _dictionaryService: DictionaryService, @@ -49,6 +59,7 @@ export class RedactTextDialogComponent this.options = getRedactOrHintOptions(this.#dossier, this.#applyToAllDossiers, this.data.isApprover, this.data.isPageExcluded); this.form = this.#getForm(); + this.#setupValidators(this.dictionaryRequest ? RedactOrHintOptions.IN_DOSSIER : RedactOrHintOptions.ONLY_HERE); this.form.controls.option.valueChanges .pipe( @@ -152,10 +163,10 @@ export class RedactTextDialogComponent #getForm(): FormGroup { return this._formBuilder.group({ selectedText: this.data?.manualRedactionEntryWrapper?.manualRedactionEntry?.value, - reason: [null as LegalBasisOption, Validators.required], + reason: [null as LegalBasisOption], comment: [null], dictionary: [this.#manualRedactionTypeExists ? SuperTypes.ManualRedaction : null], - option: this.options[0], + option: this.defaultOption, }); } diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.html b/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.html index 922ac7054..927e7d284 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.html +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.html @@ -1,35 +1,28 @@
-
-
+
    -
  • - {{ +
+ + + +
diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.scss b/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.scss index 9f1efc631..fd8ec46a6 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.scss +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.scss @@ -1,11 +1,10 @@ @use 'common-mixins'; .dialog-content { - height: 408px; + height: 470px; } cdk-virtual-scroll-viewport { - margin-top: 8px; @include common-mixins.scroll-bar; } diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.ts index d34385035..214503f57 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/remove-redaction-dialog/remove-redaction-dialog.component.ts @@ -1,9 +1,12 @@ import { Component } from '@angular/core'; -import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { FormBuilder, UntypedFormGroup } from '@angular/forms'; import { DetailsRadioOption, IconButtonTypes, IqserDialogComponent } from '@iqser/common-ui'; -import { tap } from 'rxjs/operators'; -import { getRemoveRedactionOptions, RemoveAnnotationOptions, RemoveRedactionOption } from '../../utils/dialog-options'; +import { + getRemoveRedactionOptions, + RemoveAnnotationOptions, + RemoveRedactionOption, + RemoveRedactionOptions, +} from '../../utils/dialog-options'; import { RemoveRedactionData, RemoveRedactionResult } from '../../utils/dialog-types'; import { Roles } from '@users/roles'; import { DialogHelpModeKeys } from '../../utils/constants'; @@ -17,58 +20,52 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent< RemoveRedactionData, RemoveRedactionResult > { - #applyToAllDossiers: boolean; readonly iconButtonTypes = IconButtonTypes; - readonly options: DetailsRadioOption[]; - readonly recommendation: boolean; - readonly hint: boolean; - readonly skipped: boolean; - readonly redactedTexts: string[]; + readonly options: DetailsRadioOption[] = getRemoveRedactionOptions(this.data); + readonly recommendation = this.data.redactions.every(redaction => redaction.isRecommendation); + readonly hint = this.data.redactions[0].HINT; + readonly skipped = this.data.redactions.some(annotation => annotation.isSkipped); + readonly redactedTexts = this.data.redactions.map(annotation => annotation.value); + readonly isImage = this.data.redactions.every(redaction => redaction.isImage); protected readonly roles = Roles; form!: UntypedFormGroup; constructor(private readonly _formBuilder: FormBuilder) { super(); - this.recommendation = this.data.redactions[0].isRecommendation; - this.hint = this.data.redactions[0].HINT; - this.skipped = this.data.redactions.some(annotation => annotation.isSkipped); - this.options = getRemoveRedactionOptions(this.data); - this.redactedTexts = this.data.redactions.map(annotation => annotation.value); this.form = this.#getForm(); - this.#applyToAllDossiers = this.data.applyToAllDossiers ?? true; - - this.form - .get('option') - .valueChanges.pipe( - tap(() => { - for (const option of this.options) { - if (option.extraOption) { - option.extraOption.checked = this.#applyToAllDossiers; - } - } - }), - takeUntilDestroyed(), - ) - .subscribe(); } get isFalsePositive(): boolean { - return this.form.get('option').value.value === RemoveAnnotationOptions['FALSE' + '_POSITIVE']; + return this.form.get('option').value.value === RemoveAnnotationOptions.FALSE_POSITIVE; } get helpButtonKey() { if (this.hint) { - return DialogHelpModeKeys.HINT_REMOVE + return DialogHelpModeKeys.HINT_REMOVE; } if (this.recommendation) { - return DialogHelpModeKeys.RECOMMENDATION_REMOVE + return DialogHelpModeKeys.RECOMMENDATION_REMOVE; } if (this.skipped) { - return DialogHelpModeKeys.SKIPPED_REMOVE + return DialogHelpModeKeys.SKIPPED_REMOVE; } return DialogHelpModeKeys.REDACTION_REMOVE; } + get defaultOption() { + const removeHereOption = this.options.find(option => option.value === RemoveRedactionOptions.ONLY_HERE); + if (!!removeHereOption && !removeHereOption.disabled) return removeHereOption; + return this.options[0]; + } + + get typeTranslationArg() { + return { type: this.hint ? 'hint' : this.recommendation ? 'recommendation' : 'redaction' }; + } + + get isBulk() { + return this.data.redactions.length > 1; + } + save(): void { this.close(this.form.getRawValue()); } @@ -76,7 +73,7 @@ export class RemoveRedactionDialogComponent extends IqserDialogComponent< #getForm() { return this._formBuilder.group({ comment: [null], - option: [this.options[0]], + option: [this.defaultOption], }); } } diff --git a/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts b/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts index 6f4db12a1..90bc7b784 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/file-data.service.ts @@ -228,9 +228,16 @@ export class FileDataService extends EntitiesService= 0; i--) { + const annotation = annotations[i]; + if (annotation.positions[0].page !== pendingEntry.positions[0].pageNumber) { + return; + } + if (annotation.id === pendingEntry.id) { + return annotation; + } + } + } } diff --git a/apps/red-ui/src/app/modules/file-preview/utils/dialog-options.ts b/apps/red-ui/src/app/modules/file-preview/utils/dialog-options.ts index cee558c76..82894b5db 100644 --- a/apps/red-ui/src/app/modules/file-preview/utils/dialog-options.ts +++ b/apps/red-ui/src/app/modules/file-preview/utils/dialog-options.ts @@ -177,14 +177,14 @@ export const getRemoveRedactionOptions = ( extraOption: !isDocumine ? { label: translations.IN_DOSSIER.extraOptionLabel, - checked: applyToAllDossiers ?? true, + checked: redactions[0].isRecommendation && applyToAllDossiers, hidden: !isApprover, } : null, }); } if (permissions.canMarkAsFalsePositive) { - if (data.redactions[0].isRecommendation) { + if (redactions[0].isRecommendation) { options.push({ label: translations.DO_NOT_RECOMMEND.label, description: isBulk ? translations.DO_NOT_RECOMMEND.descriptionBulk : translations.DO_NOT_RECOMMEND.description, @@ -198,7 +198,7 @@ export const getRemoveRedactionOptions = ( extraOption: !isDocumine ? { label: translations.DO_NOT_RECOMMEND.extraOptionLabel, - checked: applyToAllDossiers ?? true, + checked: applyToAllDossiers, hidden: !isApprover, } : null, @@ -217,8 +217,9 @@ export const getRemoveRedactionOptions = ( extraOption: !isDocumine ? { label: translations.FALSE_POSITIVE.extraOptionLabel, - checked: applyToAllDossiers ?? true, + checked: false, hidden: !isApprover, + description: translations.FALSE_POSITIVE.extraOptionDescription, } : null, }); diff --git a/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts b/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts index e167d6a94..b888686b6 100644 --- a/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts +++ b/apps/red-ui/src/app/modules/pdf-viewer/services/annotation-draw.service.ts @@ -132,7 +132,7 @@ export class AnnotationDrawService { return; } - if (annotationWrapper.pending) { + if (annotationWrapper.pending && annotationWrapper.id.includes('pending')) { const polylineAnnot = this._pdf.polyline(); polylineAnnot.ReadOnly = true; polylineAnnot.StrokeColor = this.convertColor(annotationWrapper.color); @@ -140,8 +140,6 @@ export class AnnotationDrawService { polylineAnnot.Id = annotationWrapper.id; polylineAnnot.PageNumber = pageNumber; polylineAnnot.Opacity = polylineAnnot.Id.endsWith('pending') ? 0 : 0.5; - console.log(polylineAnnot.Id); - console.log(polylineAnnot.Id.split('-')); const points = this.#computePolylinePoints(annotationWrapper.positions, annotationWrapper.pageNumber); for (let i = 0; i < points.length; i++) { @@ -190,7 +188,7 @@ export class AnnotationDrawService { annotation.setCustomData('skipped', String(annotationWrapper.isSkipped)); annotation.setCustomData('changeLog', String(annotationWrapper.isChangeLogEntry)); annotation.setCustomData('changeLogRemoved', String(annotationWrapper.isRemoved)); - annotation.setCustomData('opacity', String(!annotationWrapper.pending ? annotation.Opacity : annotation.Opacity / 2)); + annotation.setCustomData('opacity', String(annotation.Opacity)); const redactionColor = this._defaultColorsService.getColor(dossierTemplateId, 'previewColor'); annotation.setCustomData('redactionColor', String(redactionColor)); diff --git a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.html b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.html index 6b7b5ba69..8f14cfd59 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.html +++ b/apps/red-ui/src/app/modules/shared-dossiers/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.html @@ -48,6 +48,7 @@ [disabled]="disabled" [label]="'edit-dossier-dialog.attributes.upload-image' | translate" [type]="iconButtonTypes.dark" + [buttonId]="'upload-image-attribute-' + (attr.label | snakeCase)" class="upload-button" icon="iqser:upload" > diff --git a/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts b/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts index 6cc42f3b7..01552d1e0 100644 --- a/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts +++ b/apps/red-ui/src/app/modules/shared-dossiers/shared-dossiers.module.ts @@ -29,6 +29,7 @@ import { DossiersListingActionsComponent } from './components/dossiers-listing-a import { IqserUsersModule } from '@iqser/common-ui/lib/users'; import { SideNavComponent, SmallChipComponent, StatusBarComponent } from '@iqser/common-ui/lib/shared'; import { SelectComponent } from '@shared/components/select/select.component'; +import { SnakeCasePipe } from '@common-ui/pipes/snake-case.pipe'; const components = [ FileActionsComponent, @@ -67,6 +68,7 @@ const dialogs = [EditDossierDialogComponent, AssignReviewerApproverDialogCompone IqserAllowDirective, IqserDenyDirective, SelectComponent, + SnakeCasePipe, ], }) export class SharedDossiersModule {} diff --git a/apps/red-ui/src/app/translations/redact-text-translations.ts b/apps/red-ui/src/app/translations/redact-text-translations.ts index 529e01f22..76bfadb81 100644 --- a/apps/red-ui/src/app/translations/redact-text-translations.ts +++ b/apps/red-ui/src/app/translations/redact-text-translations.ts @@ -6,6 +6,7 @@ export interface DialogOption { description: string; descriptionBulk?: string; extraOptionLabel?: string; + extraOptionDescription?: string; } export const redactTextTranslations: Record<'onlyHere' | 'inDossier', DialogOption> = { diff --git a/apps/red-ui/src/app/translations/remove-redaction-translations.ts b/apps/red-ui/src/app/translations/remove-redaction-translations.ts index a6abfa7eb..615cb7bb9 100644 --- a/apps/red-ui/src/app/translations/remove-redaction-translations.ts +++ b/apps/red-ui/src/app/translations/remove-redaction-translations.ts @@ -20,6 +20,7 @@ export const removeRedactionTranslations: { [key in RemoveRedactionOption]: Dial description: _('remove-redaction.dialog.content.options.false-positive.description'), descriptionBulk: _('remove-redaction.dialog.content.options.false-positive.description-bulk'), extraOptionLabel: _('remove-redaction.dialog.content.options.false-positive.extraOptionLabel'), + extraOptionDescription: _('remove-redaction.dialog.content.options.false-positive.extraOptionDescription'), }, DO_NOT_RECOMMEND: { label: _('remove-redaction.dialog.content.options.do-not-recommend.label'), diff --git a/apps/red-ui/src/assets/i18n/redact/de.json b/apps/red-ui/src/assets/i18n/redact/de.json index 809c12a9f..0ce6aed5b 100644 --- a/apps/red-ui/src/assets/i18n/redact/de.json +++ b/apps/red-ui/src/assets/i18n/redact/de.json @@ -2017,19 +2017,19 @@ "list-item-false-positive": "", "options": { "false-positive": { - "description": "''{value}'' is not a ''{type}'' in this context: ''{context}''.", + "description": "Mark this redaction as a false-positive. The term will not be redacted in this dossier if it occurs in the same context.", "description-bulk": "", - "label": "False positive" + "label": "Remove from dossier in this context" }, "in-dossier": { - "description": "Do not annotate ''{value}'' as ''{type}'' in any dossier.", + "description": "Do not annotate the term in this dossier.", "description-bulk": "", - "label": "No longer annotate as ''{type}''", + "label": "Do not annotate as {type}", "label-bulk": "" }, "only-here": { - "description": "Do not annotate ''{value}'' at this position in the current document.", - "description-bulk": "Do not annotate the selected terms at this position in the current document.", + "description": "Do not annotate the term at this position in the current document.", + "description-bulk": "Do not auto-annotate the selected terms at this position in the current document.", "label": "Remove here" } }, @@ -2048,29 +2048,29 @@ "comment": "Comment", "comment-placeholder": "Add remarks or mentions...", "list-item": "{text}", - "list-item-false-positive": "''{text}'' in the context: ''{context}''", + "list-item-false-positive": "{text} as {type} in the context: {context}", "options": { "do-not-recommend": { - "description": "Do not recommend ''{value}''as {type} in any document of the current dossier.", - "description-bulk": "Do not recommend the selected terms in any document of the current dossier.", + "description": "Do not recommend the selected term in any document of this dossier.", + "description-bulk": "Do not recommend the selected terms in any document of this dossier.", "extraOptionLabel": "Apply to all active and future dossiers", "label": "Remove from dossier" }, "false-positive": { - "description": "''{value}'' is not a ''{type}'' in this context: ''{context}''.", - "description-bulk": "Do not redact the selected terms in their respective context.", + "description": "Mark this redaction as a false-positive. The term will not be redacted in this dossier if it occurs in the same context.", + "description-bulk": "Mark these redactions as false-positives. The terms will not be redacted in this dossier if they occur in the same context.", "extraOptionLabel": "Apply to all active and future dossiers", - "label": "False positive" + "label": "Remove from dossier in this context" }, "in-dossier": { - "description": "Do not {type, select, hint{annotate} other{redact}} ''{value}'' in any document of the current dossier.", - "description-bulk": "Do not redact the selected terms as their respective types in any dossier.", + "description": "Do not {type, select, hint{annotate} other{redact}} the selected term in any document of this dossier.", + "description-bulk": "Do not auto-redact the selected term in this dossier.", "extraOptionLabel": "Apply to all active and future dossiers", "label": "Remove from dossier", - "label-bulk": "No longer redact in any dossier" + "label-bulk": "Remove from dossier" }, "only-here": { - "description": "Do not {type, select, hint{annotate} other{redact}} ''{value}'' at this position in the current document.", + "description": "Do not {type, select, hint{annotate} other{redact}} the term at this position in the current document.", "description-bulk": "Do not redact the selected terms at this position in the current document.", "label": "Remove here" } diff --git a/apps/red-ui/src/assets/i18n/redact/en.json b/apps/red-ui/src/assets/i18n/redact/en.json index ea81e20cf..2c4f039fb 100644 --- a/apps/red-ui/src/assets/i18n/redact/en.json +++ b/apps/red-ui/src/assets/i18n/redact/en.json @@ -2017,19 +2017,19 @@ "list-item-false-positive": "", "options": { "false-positive": { - "description": "''{value}'' is not a ''{type}'' in this context: ''{context}''.", + "description": "Mark this redaction as a false-positive. The term will not be redacted in this dossier if it occurs in the same context.", "description-bulk": "", - "label": "False positive" + "label": "Remove from dossier in this context" }, "in-dossier": { - "description": "Do not annotate ''{value}'' as ''{type}'' in any dossier.", + "description": "Do not annotate the term in this dossier.", "description-bulk": "", - "label": "No longer annotate as ''{type}''", + "label": "Do not annotate as {type}", "label-bulk": "" }, "only-here": { - "description": "Do not annotate ''{value}'' at this position in the current document.", - "description-bulk": "Do not annotate the selected terms at this position in the current document.", + "description": "Do not annotate the term at this position in the current document.", + "description-bulk": "Do not auto-annotate the selected terms at this position in the current document.", "label": "Remove here" } }, @@ -2048,34 +2048,37 @@ "comment": "Comment", "comment-placeholder": "Add remarks or mentions...", "list-item": "{text}", - "list-item-false-positive": "''{text}'' in the context: ''{context}''", + "list-item-false-positive": "{text} as {type} in the context: {context}", + "list-item-false-recommendation": "{text} as {type}", "options": { "do-not-recommend": { - "description": "Do not recommend ''{value}''as {type} in any document of the current dossier.", - "description-bulk": "Do not recommend the selected terms in any document of the current dossier.", + "description": "Do not recommend the selected term in any document of this dossier.", + "description-bulk": "Do not recommend the selected terms in any document of this dossier.", "extraOptionLabel": "Apply to all active and future dossiers", "label": "Remove from dossier" }, "false-positive": { - "description": "''{value}'' is not a ''{type}'' in this context: ''{context}''.", - "description-bulk": "Do not redact the selected terms in their respective context.", + "description": "Mark this redaction as a false-positive. The term will not be redacted in this dossier if it occurs in the same context.", + "description-bulk": "Mark these redactions as false-positives. The terms will not be redacted in this dossier if they occur in the same context.", + "extraOptionDescription": "Dossier template access is required to reverse this action. As a regular user you can only reverse it for the current dossier.", "extraOptionLabel": "Apply to all active and future dossiers", - "label": "False positive" + "label": "Remove from dossier in this context" }, "in-dossier": { - "description": "Do not {type, select, hint{annotate} other{redact}} ''{value}'' in any document of the current dossier.", - "description-bulk": "Do not redact the selected terms as their respective types in any dossier.", + "description": "Do not {type, select, hint{annotate} other{redact}} the selected term in any document of this dossier.", + "description-bulk": "Do not auto-redact the selected term in this dossier.", "extraOptionLabel": "Apply to all active and future dossiers", "label": "Remove from dossier", - "label-bulk": "No longer redact in any dossier" + "label-bulk": "Remove from dossier" }, "only-here": { - "description": "Do not {type, select, hint{annotate} other{redact}} ''{value}'' at this position in the current document.", + "description": "Do not {type, select, hint{annotate} other{redact}} the term at this position in the current document.", "description-bulk": "Do not redact the selected terms at this position in the current document.", "label": "Remove here" } }, - "redacted-text": "Selected {type}" + "redacted-text": "Selected {type}", + "redacted-text-bulk": "Selected {type, select, redaction{redactions} recommendation{recommendations} other{hints}}" }, "title": "Remove {type, select, redaction{redaction} recommendation{recommendation} other{hint}}", "title-bulk": "Remove {type, select, redaction{redactions} recommendation{recommendations} other{hints}}" diff --git a/apps/red-ui/src/assets/i18n/scm/en.json b/apps/red-ui/src/assets/i18n/scm/en.json index 12e2bc996..616fb6daa 100644 --- a/apps/red-ui/src/assets/i18n/scm/en.json +++ b/apps/red-ui/src/assets/i18n/scm/en.json @@ -2049,6 +2049,7 @@ "comment-placeholder": "Add remarks or mentions...", "list-item": "", "list-item-false-positive": "", + "list-item-false-recommendation": "", "options": { "do-not-recommend": { "description": "Do not recommend ''{value}'' as {type} in any document of the current dossier.", @@ -2059,6 +2060,7 @@ "false-positive": { "description": "''{value}'' is not a {type} in this context: ''{context}''.", "description-bulk": "", + "extraOptionDescription": "", "extraOptionLabel": "Apply to all dossiers", "label": "False positive" }, @@ -2075,7 +2077,8 @@ "label": "Remove here" } }, - "redacted-text": "" + "redacted-text": "", + "redacted-text-bulk": "" }, "title": "Remove {type}", "title-bulk": "" diff --git a/libs/common-ui b/libs/common-ui index 292573f3b..48a5160d6 160000 --- a/libs/common-ui +++ b/libs/common-ui @@ -1 +1 @@ -Subproject commit 292573f3b3766a2e2ffef4be6d6b702d779b259e +Subproject commit 48a5160d6fccfe72de2e024e4359a97cbc52c942