1 import { Component, TemplateRef, ViewChild, inject } from '@angular/core'
2 import { FormsModule, ReactiveFormsModule } from '@angular/forms'
7 } from 'ng2-pdf-viewer'
8 import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe'
9 import { DocumentService } from 'src/app/services/rest/document.service'
10 import { ConfirmDialogComponent } from '../confirm-dialog.component'
13 selector: 'pngx-delete-pages-confirm-dialog',
14 templateUrl: './delete-pages-confirm-dialog.component.html',
15 styleUrl: './delete-pages-confirm-dialog.component.scss',
16 imports: [PdfViewerModule, FormsModule, ReactiveFormsModule, SafeHtmlPipe],
18 export class DeletePagesConfirmDialogComponent extends ConfirmDialogComponent {
19 private documentService = inject(DocumentService)
21 public documentID: number
22 public pages: number[] = []
23 public currentPage: number = 1
24 public totalPages: number
26 @ViewChild('pdfViewer') pdfViewer: PdfViewerComponent
27 @ViewChild('pageCheckOverlay') pageCheckOverlay!: TemplateRef<any>
28 private checks: HTMLElement[] = []
30 public get pagesString(): string {
31 return this.pages.join(', ')
34 public get pdfSrc(): string {
35 return this.documentService.getPreviewUrl(this.documentID)
42 public pdfPreviewLoaded(pdf: PDFDocumentProxy) {
43 this.totalPages = pdf.numPages
46 pageRendered(event: CustomEvent) {
47 const pageDiv = event.target as HTMLDivElement
48 const check = this.pageCheckOverlay.createEmbeddedView({
49 page: event.detail.pageNumber,
51 this.checks[event.detail.pageNumber - 1] = check.rootNodes[0]
52 pageDiv?.insertBefore(check.rootNodes[0], pageDiv.firstChild)
56 pageCheckChanged(pageNumber: number) {
57 if (!this.pages.includes(pageNumber)) this.pages.push(pageNumber)
58 else if (this.pages.includes(pageNumber))
59 this.pages.splice(this.pages.indexOf(pageNumber), 1)
63 private updateChecks() {
64 this.checks.forEach((check, i) => {
65 const input = check.getElementsByTagName('input')[0]
66 input.checked = this.pages.includes(i + 1)