diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/annotation-draw.service.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/annotation-draw.service.ts index b7cfc0435..5f3a32f1f 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/annotation-draw.service.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/services/annotation-draw.service.ts @@ -98,7 +98,9 @@ export class AnnotationDrawService { dossierId: string, compareMode: boolean, ) { - const annotations = annotationWrappers.map(annotation => this._computeAnnotation(activeViewer, annotation, dossierId, compareMode)); + const annotations = annotationWrappers + .map(annotation => this._computeAnnotation(activeViewer, annotation, dossierId, compareMode)) + .filter(a => !!a); const annotationManager = activeViewer.Core.annotationManager; annotationManager.addAnnotations(annotations, { imported: true }); await annotationManager.drawAnnotationsFromList(annotations); @@ -156,6 +158,10 @@ export class AnnotationDrawService { compareMode: boolean, ) { const pageNumber = compareMode ? annotationWrapper.pageNumber * 2 - 1 : annotationWrapper.pageNumber; + if (pageNumber > activeViewer.Core.documentViewer.getPageCount()) { + // skip imported annotations from files that have more pages than the current one + return; + } if (annotationWrapper.superType === 'text-highlight') { const rectangleAnnot = new activeViewer.Core.Annotations.RectangleAnnotation(); @@ -172,68 +178,68 @@ export class AnnotationDrawService { rectangleAnnot.Id = annotationWrapper.id; return rectangleAnnot; - } else { - const dossierTemplateId = this._dossiersService.find(dossierId).dossierTemplateId; + } - let annotation: Core.Annotations.RectangleAnnotation | Core.Annotations.TextHighlightAnnotation; - if (annotationWrapper.rectangle || annotationWrapper.isImage) { - annotation = new activeViewer.Core.Annotations.RectangleAnnotation(); - const pageHeight = activeViewer.Core.documentViewer.getPageHeight(pageNumber); - const firstPosition = annotationWrapper.positions[0]; - annotation.X = firstPosition.topLeft.x; - annotation.Y = pageHeight - (firstPosition.topLeft.y + firstPosition.height); - annotation.Width = firstPosition.width; - annotation.FillColor = this.getAndConvertColor( - activeViewer, - dossierTemplateId, - annotationWrapper.superType, - annotationWrapper.type, - ); - annotation.Opacity = annotationWrapper.isChangeLogRemoved - ? AnnotationDrawService.DEFAULT_REMOVED_ANNOTATION_OPACITY - : AnnotationDrawService.DEFAULT_RECTANGLE_ANNOTATION_OPACITY; - annotation.Height = firstPosition.height; - annotation.Intensity = 100; - } else { - annotation = new activeViewer.Core.Annotations.TextHighlightAnnotation(); - annotation.Quads = this._rectanglesToQuads(annotationWrapper.positions, activeViewer, pageNumber); - annotation.Opacity = annotationWrapper.isChangeLogRemoved - ? AnnotationDrawService.DEFAULT_REMOVED_ANNOTATION_OPACITY - : AnnotationDrawService.DEFAULT_TEXT_ANNOTATION_OPACITY; - } + const dossierTemplateId = this._dossiersService.find(dossierId).dossierTemplateId; - annotation.setContents(annotationWrapper.content); - - annotation.PageNumber = pageNumber; - annotation.StrokeColor = this.getAndConvertColor( + let annotation: Core.Annotations.RectangleAnnotation | Core.Annotations.TextHighlightAnnotation; + if (annotationWrapper.rectangle || annotationWrapper.isImage) { + annotation = new activeViewer.Core.Annotations.RectangleAnnotation(); + const pageHeight = activeViewer.Core.documentViewer.getPageHeight(pageNumber); + const firstPosition = annotationWrapper.positions[0]; + annotation.X = firstPosition.topLeft.x; + annotation.Y = pageHeight - (firstPosition.topLeft.y + firstPosition.height); + annotation.Width = firstPosition.width; + annotation.FillColor = this.getAndConvertColor( activeViewer, dossierTemplateId, annotationWrapper.superType, annotationWrapper.type, ); - annotation.Id = annotationWrapper.id; - annotation.ReadOnly = true; - // change log entries are drawn lighter - - annotation.Hidden = - annotationWrapper.isChangeLogRemoved || - (this._skippedService.hideSkipped && annotationWrapper.isSkipped) || - annotationWrapper.isOCR || - annotationWrapper.hidden; - annotation.setCustomData('redact-manager', 'true'); - annotation.setCustomData('redaction', String(annotationWrapper.previewAnnotation)); - annotation.setCustomData('skipped', String(annotationWrapper.isSkipped)); - annotation.setCustomData('changeLog', String(annotationWrapper.isChangeLogEntry)); - annotation.setCustomData('changeLogRemoved', String(annotationWrapper.isChangeLogRemoved)); - annotation.setCustomData('opacity', String(annotation.Opacity)); - annotation.setCustomData('redactionColor', String(this.getColor(activeViewer, dossierTemplateId, 'redaction', 'redaction'))); - annotation.setCustomData( - 'annotationColor', - String(this.getColor(activeViewer, dossierTemplateId, annotationWrapper.superType, annotationWrapper.type)), - ); - - return annotation; + annotation.Opacity = annotationWrapper.isChangeLogRemoved + ? AnnotationDrawService.DEFAULT_REMOVED_ANNOTATION_OPACITY + : AnnotationDrawService.DEFAULT_RECTANGLE_ANNOTATION_OPACITY; + annotation.Height = firstPosition.height; + annotation.Intensity = 100; + } else { + annotation = new activeViewer.Core.Annotations.TextHighlightAnnotation(); + annotation.Quads = this._rectanglesToQuads(annotationWrapper.positions, activeViewer, pageNumber); + annotation.Opacity = annotationWrapper.isChangeLogRemoved + ? AnnotationDrawService.DEFAULT_REMOVED_ANNOTATION_OPACITY + : AnnotationDrawService.DEFAULT_TEXT_ANNOTATION_OPACITY; } + + annotation.setContents(annotationWrapper.content); + + annotation.PageNumber = pageNumber; + annotation.StrokeColor = this.getAndConvertColor( + activeViewer, + dossierTemplateId, + annotationWrapper.superType, + annotationWrapper.type, + ); + annotation.Id = annotationWrapper.id; + annotation.ReadOnly = true; + // change log entries are drawn lighter + + annotation.Hidden = + annotationWrapper.isChangeLogRemoved || + (this._skippedService.hideSkipped && annotationWrapper.isSkipped) || + annotationWrapper.isOCR || + annotationWrapper.hidden; + annotation.setCustomData('redact-manager', 'true'); + annotation.setCustomData('redaction', String(annotationWrapper.previewAnnotation)); + annotation.setCustomData('skipped', String(annotationWrapper.isSkipped)); + annotation.setCustomData('changeLog', String(annotationWrapper.isChangeLogEntry)); + annotation.setCustomData('changeLogRemoved', String(annotationWrapper.isChangeLogRemoved)); + annotation.setCustomData('opacity', String(annotation.Opacity)); + annotation.setCustomData('redactionColor', String(this.getColor(activeViewer, dossierTemplateId, 'redaction', 'redaction'))); + annotation.setCustomData( + 'annotationColor', + String(this.getColor(activeViewer, dossierTemplateId, annotationWrapper.superType, annotationWrapper.type)), + ); + + return annotation; } private _rectanglesToQuads(positions: IRectangle[], activeViewer: WebViewerInstance, pageNumber: number): any[] { diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 9ee85116b..78d1498b2 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,7 +1,7 @@ { "ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_URL": null, - "API_URL": "https://dev-05.iqser.cloud/redaction-gateway-v1", + "API_URL": "https://dev-04.iqser.cloud/redaction-gateway-v1", "APP_NAME": "RedactManager", "AUTO_READ_TIME": 3, "BACKEND_APP_VERSION": "4.4.40", @@ -17,7 +17,7 @@ "MAX_RETRIES_ON_SERVER_ERROR": 3, "OAUTH_CLIENT_ID": "redaction", "OAUTH_IDP_HINT": null, - "OAUTH_URL": "https://dev-05.iqser.cloud/auth/realms/redaction", + "OAUTH_URL": "https://dev-04.iqser.cloud/auth/realms/redaction", "RECENT_PERIOD_IN_HOURS": 24, "SELECTION_MODE": "structural", "MANUAL_BASE_URL": "https://docs.redactmanager.com/preview"