diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts index d7d2e2c94..7b6cd87ff 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/pdf-viewer/pdf-viewer.component.ts @@ -11,7 +11,7 @@ import { SimpleChanges, ViewChild, } from '@angular/core'; -import { Dossier, File, IManualRedactionEntry, ViewMode } from '@red/domain'; +import { Dossier, File, IManualRedactionEntry } from '@red/domain'; import WebViewer, { Core, WebViewerInstance } from '@pdftron/webviewer'; import { TranslateService } from '@ngx-translate/core'; import { @@ -35,6 +35,7 @@ import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { ActivatedRoute } from '@angular/router'; import { toPosition } from '../../../../utils/pdf-calculation.utils'; import { DossiersService } from '@services/entity-services/dossiers.service'; +import { ViewModeService } from '../../services/view-mode.service'; import Tools = Core.Tools; import TextTool = Tools.TextTool; import Annotation = Core.Annotations.Annotation; @@ -94,19 +95,9 @@ export class PdfViewerComponent implements OnInit, OnChanges { private readonly _configService: ConfigService, private readonly _loadingService: LoadingService, private readonly _dossiersService: DossiersService, + readonly viewModeService: ViewModeService, ) {} - private _viewMode: ViewMode = 'STANDARD'; - - get viewMode(): ViewMode { - return this._viewMode; - } - - set viewMode(value: ViewMode) { - this._viewMode = value; - this.utils.viewMode = value; - } - private get _dossier(): Dossier { return this._dossiersService.find(this.file.dossierId); } @@ -163,7 +154,7 @@ export class PdfViewerComponent implements OnInit, OnChanges { this.instance, this.file, () => { - this.viewMode = 'COMPARE'; + this.viewModeService.set('COMPARE'); }, () => { this.utils.navigateToPage(1); @@ -200,7 +191,7 @@ export class PdfViewerComponent implements OnInit, OnChanges { } async closeCompareMode() { - this.viewMode = 'STANDARD'; + this.viewModeService.set('STANDARD'); const pdfNet = this.instance.Core.PDFNet; await pdfNet.initialize(environment.licenseKey ? atob(environment.licenseKey) : null); const currentDocument = await pdfNet.PDFDoc.createFromBuffer(await this.fileData.arrayBuffer()); @@ -215,7 +206,7 @@ export class PdfViewerComponent implements OnInit, OnChanges { private _setInitialDisplayMode() { this.instance.UI.setFitMode('FitPage'); const instanceDisplayMode = this.documentViewer.getDisplayModeManager().getDisplayMode(); - instanceDisplayMode.mode = this.viewMode === 'STANDARD' ? 'Single' : 'Facing'; + instanceDisplayMode.mode = this.viewModeService.isStandard ? 'Single' : 'Facing'; this.documentViewer.getDisplayModeManager().setDisplayMode(instanceDisplayMode); } @@ -237,7 +228,7 @@ export class PdfViewerComponent implements OnInit, OnChanges { this.documentViewer = this.instance.Core.documentViewer; this.annotationManager = this.instance.Core.annotationManager; - this.utils = new PdfViewerUtils(this.instance, this.viewMode, this.multiSelectActive); + this.utils = new PdfViewerUtils(this.instance, this.viewModeService, this.multiSelectActive); this._setSelectionMode(); this._disableElements(); diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/view-switch/view-switch.component.html b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/view-switch/view-switch.component.html new file mode 100644 index 000000000..4daf4a4ee --- /dev/null +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/view-switch/view-switch.component.html @@ -0,0 +1,33 @@ + +
+ {{ 'file-preview.standard' | translate }} +
+ +
+ {{ 'file-preview.delta' | translate }} +
+ +
+ {{ 'file-preview.redacted' | translate }} +
+
diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/view-switch/view-switch.component.scss b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/view-switch/view-switch.component.scss new file mode 100644 index 000000000..b7ca8fa44 --- /dev/null +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/view-switch/view-switch.component.scss @@ -0,0 +1,3 @@ +:host { + display: contents; +} diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/view-switch/view-switch.component.ts b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/view-switch/view-switch.component.ts new file mode 100644 index 000000000..283aa7f62 --- /dev/null +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/components/view-switch/view-switch.component.ts @@ -0,0 +1,33 @@ +import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core'; +import { File, ViewMode } from '@red/domain'; +import { ViewModeService } from '../../services/view-mode.service'; +import { FileDataModel } from '@models/file/file-data.model'; + +@Component({ + selector: 'redaction-view-switch [file] [fileData]', + templateUrl: './view-switch.component.html', + styleUrls: ['./view-switch.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class ViewSwitchComponent implements OnChanges { + @Output() readonly switchView = new EventEmitter(); + @Input() file: File; + @Input() fileData: FileDataModel; + + canSwitchToDeltaView = false; + canSwitchToRedactedView = false; + + constructor(readonly viewModeService: ViewModeService) {} + + ngOnChanges(changes: SimpleChanges) { + if (changes.fileData) { + const fileData = changes.fileData.currentValue as FileDataModel; + this.canSwitchToDeltaView = fileData?.hasChangeLog; + } + + if (changes.file) { + const file = changes?.file.currentValue as File; + this.canSwitchToRedactedView = !file.analysisRequired && !file.excluded; + } + } +} diff --git a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.html b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.html index adf78b835..80c24d4af 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.html +++ b/apps/red-ui/src/app/modules/dossier/screens/file-preview-screen/file-preview-screen.component.html @@ -3,37 +3,7 @@