RED-8907: removed resize in dictionary option for forced annotations.

This commit is contained in:
Nicoleta Panaghiu 2024-04-11 15:22:54 +03:00
parent 68a1be0800
commit 309ef93512
8 changed files with 35 additions and 7 deletions

View File

@ -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) =>

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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();
}

View File

@ -223,7 +223,7 @@ export class AnnotationActionsService {
this._annotationManager.select(viewerAnnotation);
}
async acceptResize(annotation: AnnotationWrapper): Promise<void> {
async acceptResize(annotation: AnnotationWrapper, permissions: AnnotationPermissions): Promise<void> {
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();

View File

@ -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();

View File

@ -113,6 +113,7 @@ export const getResizeRedactionOptions = (
isRss: boolean,
applyToAllDossiers: boolean,
isApprover: boolean,
canResizeInDictionary: boolean,
): DetailsRadioOption<ResizeRedactionOption>[] => {
const translations = resizeRedactionTranslations;
const options: DetailsRadioOption<ResizeRedactionOption>[] = [
@ -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,

View File

@ -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 {