1 import { Component, TemplateRef, ViewChild } from '@angular/core'
2 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
3 import { DocumentService } from 'src/app/services/rest/document.service'
4 import { ConfirmDialogComponent } from '../confirm-dialog.component'
5 import { PDFDocumentProxy, PdfViewerComponent } from 'ng2-pdf-viewer'
8 selector: 'pngx-delete-pages-confirm-dialog',
9 templateUrl: './delete-pages-confirm-dialog.component.html',
10 styleUrl: './delete-pages-confirm-dialog.component.scss',
12 export class DeletePagesConfirmDialogComponent extends ConfirmDialogComponent {
13 public documentID: number
14 public pages: number[] = []
15 public currentPage: number = 1
16 public totalPages: number
18 @ViewChild('pdfViewer') pdfViewer: PdfViewerComponent
19 @ViewChild('pageCheckOverlay') pageCheckOverlay!: TemplateRef<any>
20 private checks: HTMLElement[] = []
22 public get pagesString(): string {
23 return this.pages.join(', ')
26 public get pdfSrc(): string {
27 return this.documentService.getPreviewUrl(this.documentID)
31 activeModal: NgbActiveModal,
32 private documentService: DocumentService
37 public pdfPreviewLoaded(pdf: PDFDocumentProxy) {
38 this.totalPages = pdf.numPages
41 pageRendered(event: CustomEvent) {
42 const pageDiv = event.target as HTMLDivElement
43 const check = this.pageCheckOverlay.createEmbeddedView({
44 page: event.detail.pageNumber,
46 this.checks[event.detail.pageNumber - 1] = check.rootNodes[0]
47 pageDiv?.insertBefore(check.rootNodes[0], pageDiv.firstChild)
51 pageCheckChanged(pageNumber: number) {
52 if (!this.pages.includes(pageNumber)) this.pages.push(pageNumber)
53 else if (this.pages.includes(pageNumber))
54 this.pages.splice(this.pages.indexOf(pageNumber), 1)
58 private updateChecks() {
59 this.checks.forEach((check, i) => {
60 const input = check.getElementsByTagName('input')[0]
61 input.checked = this.pages.includes(i + 1)