1 import { Component, OnInit } from '@angular/core'
2 import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
3 import { PDFDocumentProxy } from 'ng2-pdf-viewer'
4 import { Document } from 'src/app/data/document'
5 import { PermissionsService } from 'src/app/services/permissions.service'
6 import { DocumentService } from 'src/app/services/rest/document.service'
7 import { ConfirmDialogComponent } from '../confirm-dialog.component'
10 selector: 'pngx-split-confirm-dialog',
11 templateUrl: './split-confirm-dialog.component.html',
12 styleUrl: './split-confirm-dialog.component.scss',
14 export class SplitConfirmDialogComponent
15 extends ConfirmDialogComponent
18 public get pagesString(): string {
22 for (let i = 1; i <= this.totalPages; i++) {
23 if (this.pages.has(i) || i === this.totalPages) {
26 lastPage = Math.min(i + 1, this.totalPages)
28 pagesStr += `${lastPage}-${i},`
29 lastPage = Math.min(i + 1, this.totalPages)
34 return pagesStr.replace(/,$/, '')
37 private pages: Set<number> = new Set()
39 public documentID: number
40 private document: Document
41 public page: number = 1
42 public totalPages: number
43 public deleteOriginal: boolean = false
45 public get canSplit(): boolean {
47 this.page < this.totalPages &&
48 this.pages.size < this.totalPages - 1 &&
49 !this.pages.has(this.page)
53 public get pdfSrc(): string {
54 return this.documentService.getPreviewUrl(this.documentID)
58 activeModal: NgbActiveModal,
59 private documentService: DocumentService,
60 private permissionService: PermissionsService
63 this.confirmButtonEnabled = this.pages.size > 0
67 this.documentService.get(this.documentID).subscribe((r) => {
72 pdfPreviewLoaded(pdf: PDFDocumentProxy) {
73 this.totalPages = pdf.numPages
77 if (this.page === this.totalPages) return
78 this.pages.add(this.page)
79 this.pages = new Set(Array.from(this.pages).sort())
80 this.confirmButtonEnabled = this.pages.size > 0
83 removeSplit(i: number) {
84 let page = Array.from(this.pages)[Math.min(i, this.pages.size - 1)]
85 this.pages.delete(page)
86 this.confirmButtonEnabled = this.pages.size > 0
89 get userOwnsDocument(): boolean {
90 return this.permissionService.currentUserOwnsObject(this.document)