From 309ef935126ca0d14e7302c366116121a7ee68aa Mon Sep 17 00:00:00 2001 From: Nicoleta Panaghiu Date: Thu, 11 Apr 2024 15:22:54 +0300 Subject: [PATCH] RED-8907: removed resize in dictionary option for forced annotations. --- .../src/app/models/file/annotation-permissions.utils.ts | 8 +++++++- .../red-ui/src/app/models/file/annotation.permissions.ts | 4 ++++ .../annotation-actions/annotation-actions.component.ts | 2 +- .../resize-redaction-dialog.component.ts | 9 ++++++++- .../file-preview/services/annotation-actions.service.ts | 8 ++++++-- .../services/pdf-annotation-actions.service.ts | 2 +- .../src/app/modules/file-preview/utils/dialog-options.ts | 3 ++- .../src/app/modules/file-preview/utils/dialog-types.ts | 6 ++++++ 8 files changed, 35 insertions(+), 7 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 e725d852a..dfb735ba7 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 @@ -28,7 +28,7 @@ export const canRemoveFromDictionary = (annotation: AnnotationWrapper, autoAnaly (annotation.isRedacted || annotation.isSkipped || annotation.isHint || (annotation.isIgnoredHint && !annotation.isRuleBased)) && (autoAnalysisDisabled || !annotation.pending) && !annotation.hasBeenResizedLocally && - (!annotation.hasBeenForcedHint || !annotation.hasBeenForcedRedaction); + !(annotation.hasBeenForcedHint || annotation.hasBeenForcedRedaction); export const canRemoveRedaction = (annotation: AnnotationWrapper, permissions: AnnotationPermissions) => (!annotation.isIgnoredHint || !annotation.isRuleBased) && @@ -58,6 +58,12 @@ export const canResizeAnnotation = ( (!annotation.isHint && hasDictionary && annotation.isRuleBased))) || annotation.isRecommendation; +export const canResizeInDictionary = (annotation: AnnotationWrapper, permissions: AnnotationPermissions) => + permissions.canResizeAnnotation && + annotation.isModifyDictionary && + !annotation.hasBeenResizedLocally && + !(annotation.hasBeenForcedHint || annotation.hasBeenForcedRedaction); + export const canEditAnnotation = (annotation: AnnotationWrapper) => (annotation.isRedacted || annotation.isSkipped) && !annotation.isImage; export const canEditHint = (annotation: AnnotationWrapper) => diff --git a/apps/red-ui/src/app/models/file/annotation.permissions.ts b/apps/red-ui/src/app/models/file/annotation.permissions.ts index bdb75e87d..01aa08e8d 100644 --- a/apps/red-ui/src/app/models/file/annotation.permissions.ts +++ b/apps/red-ui/src/app/models/file/annotation.permissions.ts @@ -16,6 +16,7 @@ import { canRemoveOnlyHere, canRemoveRedaction, canResizeAnnotation, + canResizeInDictionary, canUndo, } from './annotation-permissions.utils'; import { AnnotationWrapper } from './annotation.wrapper'; @@ -30,6 +31,7 @@ export class AnnotationPermissions { canForceRedaction = true; canChangeLegalBasis = true; canResizeAnnotation = true; + canResizeInDictionary = true; canRecategorizeAnnotation = true; canForceHint = true; canEditAnnotations = true; @@ -69,6 +71,7 @@ export class AnnotationPermissions { autoAnalysisDisabled, annotationEntity?.hasDictionary, ); + permissions.canResizeInDictionary = canResizeInDictionary(annotation, permissions); permissions.canEditAnnotations = canEditAnnotation(annotation); permissions.canEditHints = canEditHint(annotation); permissions.canEditImages = canEditImage(annotation); @@ -80,6 +83,7 @@ export class AnnotationPermissions { static reduce(permissions: AnnotationPermissions[]): AnnotationPermissions { const result = new AnnotationPermissions(); result.canResizeAnnotation = permissions.length === 1 && permissions[0].canResizeAnnotation; + result.canResizeInDictionary = permissions.length === 1 && permissions[0].canResizeInDictionary; result.canChangeLegalBasis = permissions.reduce((acc, next) => acc && next.canChangeLegalBasis, true); result.canRecategorizeAnnotation = permissions.reduce((acc, next) => acc && next.canRecategorizeAnnotation, true); result.canRemoveFromDictionary = permissions.reduce((acc, next) => acc && next.canRemoveFromDictionary, true); diff --git a/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.ts b/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.ts index 014cee3d9..af58071a9 100644 --- a/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/components/annotation-actions/annotation-actions.component.ts @@ -148,7 +148,7 @@ export class AnnotationActionsComponent implements OnChanges { acceptResize() { if (this.resized) { - return this.annotationActionsService.acceptResize(this.#annotations[0]); + return this.annotationActionsService.acceptResize(this.#annotations[0], this.annotationPermissions); } } diff --git a/apps/red-ui/src/app/modules/file-preview/dialogs/resize-redaction-dialog/resize-redaction-dialog.component.ts b/apps/red-ui/src/app/modules/file-preview/dialogs/resize-redaction-dialog/resize-redaction-dialog.component.ts index 7a9beeb07..e1e6b3f34 100644 --- a/apps/red-ui/src/app/modules/file-preview/dialogs/resize-redaction-dialog/resize-redaction-dialog.component.ts +++ b/apps/red-ui/src/app/modules/file-preview/dialogs/resize-redaction-dialog/resize-redaction-dialog.component.ts @@ -30,7 +30,14 @@ export class ResizeRedactionDialogComponent extends IqserDialogComponent< constructor(private readonly _formBuilder: FormBuilder) { super(); - this.options = getResizeRedactionOptions(this.redaction, this.#dossier, false, this.#applyToAllDossiers, this.data.isApprover); + this.options = getResizeRedactionOptions( + this.redaction, + this.#dossier, + false, + this.#applyToAllDossiers, + this.data.isApprover, + this.data.permissions.canResizeInDictionary, + ); this.form = this.#getForm(); } diff --git a/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts b/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts index a5e7058b4..52775b2dd 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/annotation-actions.service.ts @@ -223,7 +223,7 @@ export class AnnotationActionsService { this._annotationManager.select(viewerAnnotation); } - async acceptResize(annotation: AnnotationWrapper): Promise { + async acceptResize(annotation: AnnotationWrapper, permissions: AnnotationPermissions): Promise { const textAndPositions = await this.#extractTextAndPositions(annotation.id); if (annotation.isRecommendation) { const recommendation = { @@ -246,12 +246,16 @@ export class AnnotationActionsService { const dossierTemplate = this._dossierTemplatesService.find(this._state.dossierTemplateId); const isUnprocessed = annotation.pending; - const data = { + const data: ResizeRedactionData = { redaction: annotation, text, applyToAllDossiers: isApprover && dossierTemplate.applyDictionaryUpdatesToAllDossiersByDefault, isApprover, dossierId: dossier.dossierId, + permissions: { + canResizeAnnotation: permissions.canResizeAnnotation, + canResizeInDictionary: permissions.canResizeInDictionary, + }, }; const result = await this.#getResizeRedactionDialog(data).result(); diff --git a/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts b/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts index dae0111cf..c2086fa7f 100644 --- a/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts +++ b/apps/red-ui/src/app/modules/file-preview/services/pdf-annotation-actions.service.ts @@ -36,7 +36,7 @@ export class PdfAnnotationActionsService { let acceptResizeButton: IHeaderElement; if (this.#annotationManager.annotationHasBeenResized) { acceptResizeButton = this.#getButton('check', _('annotation-actions.resize-accept.label'), () => - this.#annotationActionsService.acceptResize(firstAnnotation), + this.#annotationActionsService.acceptResize(firstAnnotation, permissions), ); } else { acceptResizeButton = this.#getDisabledCheckButton(); 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 c949a3af1..5383cc324 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 @@ -113,6 +113,7 @@ export const getResizeRedactionOptions = ( isRss: boolean, applyToAllDossiers: boolean, isApprover: boolean, + canResizeInDictionary: boolean, ): DetailsRadioOption[] => { const translations = resizeRedactionTranslations; const options: DetailsRadioOption[] = [ @@ -127,7 +128,7 @@ export const getResizeRedactionOptions = ( if (isRss) { return options; } - if (!redaction.hasBeenResizedLocally) { + if (canResizeInDictionary) { const dictBasedType = redaction.isModifyDictionary; options.push({ label: translations.inDossier.label, diff --git a/apps/red-ui/src/app/modules/file-preview/utils/dialog-types.ts b/apps/red-ui/src/app/modules/file-preview/utils/dialog-types.ts index 7e8d33143..ff6228d21 100644 --- a/apps/red-ui/src/app/modules/file-preview/utils/dialog-types.ts +++ b/apps/red-ui/src/app/modules/file-preview/utils/dialog-types.ts @@ -46,6 +46,11 @@ export interface EditRedactResult { export type AddHintResult = RedactTextResult; export type AddAnnotationResult = RedactTextResult; +export interface ResizeRedactionPermissions { + canResizeAnnotation: boolean; + canResizeInDictionary: boolean; +} + export interface ResizeAnnotationData { redaction: AnnotationWrapper; text: string; @@ -55,6 +60,7 @@ export interface ResizeAnnotationData { export interface ResizeRedactionData extends ResizeAnnotationData { applyToAllDossiers?: boolean; isApprover?: boolean; + permissions: ResizeRedactionPermissions; } export interface ResizeAnnotationResult {