import { Component } from '@angular/core' import { ConfirmDialogComponent } from '../confirm-dialog.component' import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { DocumentService } from 'src/app/services/rest/document.service' import { PDFDocumentProxy } from '../../pdf-viewer/typings' @Component({ selector: 'pngx-split-confirm-dialog', templateUrl: './split-confirm-dialog.component.html', styleUrl: './split-confirm-dialog.component.scss', }) export class SplitConfirmDialogComponent extends ConfirmDialogComponent { public get pagesString(): string { let pagesStr = '' let lastPage = 1 for (let i = 1; i <= this.totalPages; i++) { if (this.pages.has(i) || i === this.totalPages) { if (lastPage === i) { pagesStr += `${i},` lastPage = Math.min(i + 1, this.totalPages) } else { pagesStr += `${lastPage}-${i},` lastPage = Math.min(i + 1, this.totalPages) } } } return pagesStr.replace(/,$/, '') } private pages: Set<number> = new Set() public documentID: number public page: number = 1 public totalPages: number public get pdfSrc(): string { return this.documentService.getPreviewUrl(this.documentID) } constructor( activeModal: NgbActiveModal, private documentService: DocumentService ) { super(activeModal) this.confirmButtonEnabled = this.pages.size > 0 } pdfPreviewLoaded(pdf: PDFDocumentProxy) { this.totalPages = pdf.numPages } addSplit() { if (this.page === this.totalPages) return this.pages.add(this.page) this.pages = new Set(Array.from(this.pages).sort()) this.confirmButtonEnabled = this.pages.size > 0 } removeSplit(i: number) { let page = Array.from(this.pages)[Math.min(i, this.pages.size - 1)] this.pages.delete(page) this.confirmButtonEnabled = this.pages.size > 0 } }