RED-3850: reload file on specific page
This commit is contained in:
parent
9e609757f8
commit
c3f8a2c39d
@ -1,4 +1,4 @@
|
|||||||
import { ChangeDetectorRef, Component, ElementRef, Inject, ViewChild } from '@angular/core';
|
import { ChangeDetectorRef, Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';
|
||||||
import { PermissionsService } from '@services/permissions.service';
|
import { PermissionsService } from '@services/permissions.service';
|
||||||
import WebViewer, { WebViewerInstance } from '@pdftron/webviewer';
|
import WebViewer, { WebViewerInstance } from '@pdftron/webviewer';
|
||||||
import { environment } from '@environments/environment';
|
import { environment } from '@environments/environment';
|
||||||
@ -9,7 +9,6 @@ import { IWatermark, WatermarkOrientation, WatermarkOrientations } from '@red/do
|
|||||||
import { BASE_HREF } from '../../../../../tokens';
|
import { BASE_HREF } from '../../../../../tokens';
|
||||||
import { stampPDFPage } from '@utils/page-stamper';
|
import { stampPDFPage } from '@utils/page-stamper';
|
||||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||||
import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service';
|
|
||||||
import { WatermarkService } from '@shared/services/watermark.service';
|
import { WatermarkService } from '@shared/services/watermark.service';
|
||||||
import { firstValueFrom, Observable, of, switchMap } from 'rxjs';
|
import { firstValueFrom, Observable, of, switchMap } from 'rxjs';
|
||||||
import { catchError, tap } from 'rxjs/operators';
|
import { catchError, tap } from 'rxjs/operators';
|
||||||
@ -30,7 +29,7 @@ export const DEFAULT_WATERMARK: IWatermark = {
|
|||||||
templateUrl: './watermark-screen.component.html',
|
templateUrl: './watermark-screen.component.html',
|
||||||
styleUrls: ['./watermark-screen.component.scss'],
|
styleUrls: ['./watermark-screen.component.scss'],
|
||||||
})
|
})
|
||||||
export class WatermarkScreenComponent {
|
export class WatermarkScreenComponent implements OnInit {
|
||||||
readonly iconButtonTypes = IconButtonTypes;
|
readonly iconButtonTypes = IconButtonTypes;
|
||||||
readonly form: FormGroup = this._getForm();
|
readonly form: FormGroup = this._getForm();
|
||||||
readonly #dossierTemplateId: string;
|
readonly #dossierTemplateId: string;
|
||||||
@ -47,7 +46,6 @@ export class WatermarkScreenComponent {
|
|||||||
private readonly _http: HttpClient,
|
private readonly _http: HttpClient,
|
||||||
private readonly _changeDetectorRef: ChangeDetectorRef,
|
private readonly _changeDetectorRef: ChangeDetectorRef,
|
||||||
private readonly _formBuilder: FormBuilder,
|
private readonly _formBuilder: FormBuilder,
|
||||||
private readonly _dossierTemplatesService: DossierTemplatesService,
|
|
||||||
private readonly _loadingService: LoadingService,
|
private readonly _loadingService: LoadingService,
|
||||||
private readonly _route: ActivatedRoute,
|
private readonly _route: ActivatedRoute,
|
||||||
) {
|
) {
|
||||||
@ -179,43 +177,19 @@ export class WatermarkScreenComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _getForm(): FormGroup {
|
private _getForm(): FormGroup {
|
||||||
|
const defaultValue = {
|
||||||
|
value: null,
|
||||||
|
disabled: !this.permissionsService.isAdmin(),
|
||||||
|
};
|
||||||
|
const defaultFormControl = [{ ...defaultValue }, Validators.required];
|
||||||
|
|
||||||
return this._formBuilder.group({
|
return this._formBuilder.group({
|
||||||
text: [{ value: null, disabled: !this.permissionsService.isAdmin() }],
|
text: [{ ...defaultValue }],
|
||||||
hexColor: [
|
hexColor: [...defaultFormControl],
|
||||||
{
|
opacity: [...defaultFormControl],
|
||||||
value: null,
|
fontSize: [...defaultFormControl],
|
||||||
disabled: !this.permissionsService.isAdmin(),
|
fontType: [...defaultFormControl],
|
||||||
},
|
orientation: [...defaultFormControl],
|
||||||
Validators.required,
|
|
||||||
],
|
|
||||||
opacity: [
|
|
||||||
{
|
|
||||||
value: null,
|
|
||||||
disabled: !this.permissionsService.isAdmin(),
|
|
||||||
},
|
|
||||||
Validators.required,
|
|
||||||
],
|
|
||||||
fontSize: [
|
|
||||||
{
|
|
||||||
value: null,
|
|
||||||
disabled: !this.permissionsService.isAdmin(),
|
|
||||||
},
|
|
||||||
Validators.required,
|
|
||||||
],
|
|
||||||
fontType: [
|
|
||||||
{
|
|
||||||
value: null,
|
|
||||||
disabled: !this.permissionsService.isAdmin(),
|
|
||||||
},
|
|
||||||
Validators.required,
|
|
||||||
],
|
|
||||||
orientation: [
|
|
||||||
{
|
|
||||||
value: null,
|
|
||||||
disabled: !this.permissionsService.isAdmin(),
|
|
||||||
},
|
|
||||||
Validators.required,
|
|
||||||
],
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,7 +29,6 @@ import { ConfigService } from '@services/config.service';
|
|||||||
import { AutoUnsubscribe, ConfirmationDialogInput, LoadingService } from '@iqser/common-ui';
|
import { AutoUnsubscribe, ConfirmationDialogInput, LoadingService } from '@iqser/common-ui';
|
||||||
import { PdfViewer } from '../../services/pdf-viewer.service';
|
import { PdfViewer } from '../../services/pdf-viewer.service';
|
||||||
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
||||||
import { ActivatedRoute } from '@angular/router';
|
|
||||||
import { toPosition } from '../../../dossier/utils/pdf-calculation.utils';
|
import { toPosition } from '../../../dossier/utils/pdf-calculation.utils';
|
||||||
import { ViewModeService } from '../../services/view-mode.service';
|
import { ViewModeService } from '../../services/view-mode.service';
|
||||||
import { MultiSelectService } from '../../services/multi-select.service';
|
import { MultiSelectService } from '../../services/multi-select.service';
|
||||||
@ -39,7 +38,7 @@ import { PageRotationService } from '../../services/page-rotation.service';
|
|||||||
import { ALLOWED_KEYBOARD_SHORTCUTS, HeaderElements, TextPopups } from '../../shared/constants';
|
import { ALLOWED_KEYBOARD_SHORTCUTS, HeaderElements, TextPopups } from '../../shared/constants';
|
||||||
import { FilePreviewDialogService } from '../../services/file-preview-dialog.service';
|
import { FilePreviewDialogService } from '../../services/file-preview-dialog.service';
|
||||||
import { loadCompareDocumentWrapper } from '../../../dossier/utils/compare-mode.utils';
|
import { loadCompareDocumentWrapper } from '../../../dossier/utils/compare-mode.utils';
|
||||||
import { from, fromEvent } from 'rxjs';
|
import { from } from 'rxjs';
|
||||||
import { FileDataService } from '../../services/file-data.service';
|
import { FileDataService } from '../../services/file-data.service';
|
||||||
import { ViewerHeaderConfigService } from '../../services/viewer-header-config.service';
|
import { ViewerHeaderConfigService } from '../../services/viewer-header-config.service';
|
||||||
import { TooltipsService } from '../../services/tooltips.service';
|
import { TooltipsService } from '../../services/tooltips.service';
|
||||||
@ -73,7 +72,6 @@ export class PdfViewerComponent extends AutoUnsubscribe implements OnInit, OnCha
|
|||||||
private readonly _manualRedactionService: ManualRedactionService,
|
private readonly _manualRedactionService: ManualRedactionService,
|
||||||
private readonly _dialogService: FilePreviewDialogService,
|
private readonly _dialogService: FilePreviewDialogService,
|
||||||
private readonly _ngZone: NgZone,
|
private readonly _ngZone: NgZone,
|
||||||
private readonly _activatedRoute: ActivatedRoute,
|
|
||||||
private readonly _userPreferenceService: UserPreferenceService,
|
private readonly _userPreferenceService: UserPreferenceService,
|
||||||
private readonly _annotationDrawService: AnnotationDrawService,
|
private readonly _annotationDrawService: AnnotationDrawService,
|
||||||
private readonly _annotationActionsService: AnnotationActionsService,
|
private readonly _annotationActionsService: AnnotationActionsService,
|
||||||
@ -190,7 +188,7 @@ export class PdfViewerComponent extends AutoUnsubscribe implements OnInit, OnCha
|
|||||||
this._setSelectionMode();
|
this._setSelectionMode();
|
||||||
this._configureElements();
|
this._configureElements();
|
||||||
this.pdfViewer.disableHotkeys();
|
this.pdfViewer.disableHotkeys();
|
||||||
await this._configureTextPopup();
|
this._configureTextPopup();
|
||||||
|
|
||||||
this.annotationManager.addEventListener('annotationSelected', (annotations: Annotation[], action) => {
|
this.annotationManager.addEventListener('annotationSelected', (annotations: Annotation[], action) => {
|
||||||
let nextAnnotations: Annotation[];
|
let nextAnnotations: Annotation[];
|
||||||
@ -236,8 +234,6 @@ export class PdfViewerComponent extends AutoUnsubscribe implements OnInit, OnCha
|
|||||||
return this._handleCustomActions();
|
return this._handleCustomActions();
|
||||||
});
|
});
|
||||||
|
|
||||||
fromEvent(this.documentViewer, 'pageNumberUpdated').subscribe((page: number) => console.log(`Navigated to page ${page}`));
|
|
||||||
|
|
||||||
this.documentViewer.addEventListener('documentLoaded', this._setReadyAndInitialState);
|
this.documentViewer.addEventListener('documentLoaded', this._setReadyAndInitialState);
|
||||||
|
|
||||||
this.documentViewer.addEventListener('keyUp', ($event: KeyboardEvent) => {
|
this.documentViewer.addEventListener('keyUp', ($event: KeyboardEvent) => {
|
||||||
|
|||||||
@ -89,7 +89,7 @@
|
|||||||
#fileWorkloadComponent
|
#fileWorkloadComponent
|
||||||
(selectPage)="selectPage($event)"
|
(selectPage)="selectPage($event)"
|
||||||
*ngIf="!file.excluded"
|
*ngIf="!file.excluded"
|
||||||
[activeViewerPage]="pdf.currentPage"
|
[activeViewerPage]="pdf.currentPage$ | async"
|
||||||
[annotationActionsTemplate]="annotationActionsTemplate"
|
[annotationActionsTemplate]="annotationActionsTemplate"
|
||||||
[dialogRef]="dialogRef"
|
[dialogRef]="dialogRef"
|
||||||
[file]="file"
|
[file]="file"
|
||||||
|
|||||||
@ -9,9 +9,10 @@ import { environment } from '@environments/environment';
|
|||||||
import { DISABLED_HOTKEYS } from '../shared/constants';
|
import { DISABLED_HOTKEYS } from '../shared/constants';
|
||||||
import { Observable, Subject } from 'rxjs';
|
import { Observable, Subject } from 'rxjs';
|
||||||
import { NGXLogger } from 'ngx-logger';
|
import { NGXLogger } from 'ngx-logger';
|
||||||
import { tap } from 'rxjs/operators';
|
import { map, tap } from 'rxjs/operators';
|
||||||
import { ListingService, shareLast } from '@iqser/common-ui';
|
import { ListingService, shareDistinctLast, shareLast } from '@iqser/common-ui';
|
||||||
import { MultiSelectService } from './multi-select.service';
|
import { MultiSelectService } from './multi-select.service';
|
||||||
|
import { ActivatedRoute } from '@angular/router';
|
||||||
import Annotation = Core.Annotations.Annotation;
|
import Annotation = Core.Annotations.Annotation;
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
@ -19,17 +20,23 @@ export class PdfViewer {
|
|||||||
instance?: WebViewerInstance;
|
instance?: WebViewerInstance;
|
||||||
|
|
||||||
readonly documentLoaded$: Observable<boolean>;
|
readonly documentLoaded$: Observable<boolean>;
|
||||||
|
readonly currentPage$ = this._activatedRoute.queryParamMap.pipe(
|
||||||
|
map(params => Number(params.get('page') ?? '1')),
|
||||||
|
shareDistinctLast(),
|
||||||
|
);
|
||||||
readonly #documentLoaded$ = new Subject<boolean>();
|
readonly #documentLoaded$ = new Subject<boolean>();
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@Inject(BASE_HREF) private readonly _baseHref: string,
|
@Inject(BASE_HREF) private readonly _baseHref: string,
|
||||||
private readonly _viewModeService: ViewModeService,
|
private readonly _viewModeService: ViewModeService,
|
||||||
|
private readonly _activatedRoute: ActivatedRoute,
|
||||||
private readonly _multiSelectService: MultiSelectService,
|
private readonly _multiSelectService: MultiSelectService,
|
||||||
private readonly _listingService: ListingService<AnnotationWrapper>,
|
private readonly _listingService: ListingService<AnnotationWrapper>,
|
||||||
private readonly _logger: NGXLogger,
|
private readonly _logger: NGXLogger,
|
||||||
) {
|
) {
|
||||||
this.documentLoaded$ = this.#documentLoaded$.asObservable().pipe(
|
this.documentLoaded$ = this.#documentLoaded$.asObservable().pipe(
|
||||||
tap(() => this._logger.debug('[PDF] Loaded')),
|
tap(() => this._logger.debug('[PDF] Loaded')),
|
||||||
|
tap(() => this.#setCurrentPage()),
|
||||||
shareLast(),
|
shareLast(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -244,4 +251,9 @@ export class PdfViewer {
|
|||||||
#convertPath(path: string) {
|
#convertPath(path: string) {
|
||||||
return `${this._baseHref}${path}`;
|
return `${this._baseHref}${path}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#setCurrentPage() {
|
||||||
|
const currentDocPage = this._activatedRoute.snapshot.queryParamMap.get('page');
|
||||||
|
this.documentViewer.setCurrentPage(Number(currentDocPage ?? '1'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user