{"version":3,"file":"documents-1QvkVR5P.js","sources":["../../../app/frontend/entrypoints/controllers/ticket/overview/show/documents.ts"],"sourcesContent":["import jQuery from 'jquery/dist/jquery';\nimport * as pdfjsLib from \"pdfjs-dist\"\nimport SignaturePad from \"signature_pad\";\nimport Swal from 'sweetalert2';\nimport * as bootstrap from 'bootstrap'\nimport Utils from '../../../../utils'\nimport TicketServiceMapEntity from \"../../../ticket_service_map/entity\";\n\nexport default class TicketShowDocuments {\n private parent: any;\n private tableElem: any;\n private datatable: any;\n private entity = \"services\";\n private toastr: any;\n private datatableElem: any;\n\n private pdfDocumentId = \"\";\n private pdfDownloadUrl = \"\";\n private pdfSignModal: bootstrap.Modal;\n private pdfModal: bootstrap.Modal;\n private signaturePad: SignaturePad | undefined;\n\n\n constructor(parent: any) {\n this.parent = parent\n this.toastr = parent.toastr\n this.datatableElem = jQuery(\".datatables-ticket-order-document\")\n this.pdfModal = new bootstrap.Modal((document.querySelector(\"#erpOrderDocumentPdfModal\") as HTMLElement));\n this.pdfSignModal = new bootstrap.Modal((document.querySelector(\"#erpOrderDocumentPdfSignModal\") as HTMLElement));\n this.setupPdfReader()\n this.bindListeners();\n }\n\n\n async setupPdfReader() {\n pdfjsLib.GlobalWorkerOptions.workerSrc = '/pdf.worker.min.js';\n }\n\n async setupSigning() {\n const canvas = document.querySelector('#erpOrderDocumentPdfSignCanvas') as HTMLCanvasElement | null;\n if (canvas) {\n if (!this.signaturePad) {\n this.signaturePad = new SignaturePad(canvas);\n } else {\n this.signaturePad.clear();\n }\n }\n }\n\n async saveSignature() {\n if (this.signaturePad) {\n const image = this.signaturePad.toDataURL();\n await Utils.erp.saveSignature(this.pdfDocumentId, this.pdfDownloadUrl, image)\n }\n }\n\n async renderPdfPage(page) {\n console.log(\"Render\", page)\n const canvas = document.createElement(\"canvas\")\n const scale = 1.5;\n const viewport = page.getViewport({scale: scale});\n const context = canvas.getContext('2d');\n if (context) {\n canvas.height = viewport.height;\n canvas.width = viewport.width;\n const renderContext = {\n canvasContext: context,\n viewport: viewport\n };\n const renderTask = page.render(renderContext);\n await renderTask.promise\n }\n canvas.style.maxWidth = \"100%\"\n return canvas\n }\n\n async loadPdf(downloadUrl: string) {\n pdfjsLib.getDocument(`${document.location.origin}/${downloadUrl}`).promise.then(async (pdf) => {\n const canvasHolder = document.querySelector('#erpOrderDocumentPdfCanvases') as HTMLCanvasElement | null;\n if (canvasHolder) {\n for (let i = 1; i <= pdf.numPages; i++) {\n const c = await this.renderPdfPage((await pdf.getPage(i)))\n canvasHolder.appendChild(c)\n }\n }\n this.pdfModal.show();\n const button = document.querySelector('#erpOrderDocumentPdfModalSignButton') as HTMLButtonElement;\n\n button.style.bottom = `${window.siteConfig.document.y}px`\n button.style.right = `${window.siteConfig.document.x / 10}px`;\n button.style.width =`${window.siteConfig.document.width/ 3}px`;\n button.style.height = `${window.siteConfig.document.height / 3}px`;\n })\n }\n\n getEntityData(elem: any) {\n return {...TicketServiceMapEntity.getEntityData(elem), ticket_id: this.parent.id}\n }\n\n bindListeners() {\n\n jQuery(\".datatables-ticket-order-document tbody\").delegate(\".sign-record\", \"click\", async (e: JQuery.TriggeredEvent) => {\n this.pdfDownloadUrl = e.currentTarget.getAttribute(\"data-url\");\n this.pdfDocumentId = e.currentTarget.getAttribute(\"data-document-id\");\n\n /*await this.setupSigning();\n this.pdfSignModal.show();*/\n await this.loadPdf(this.pdfDownloadUrl);\n\n });\n (document.querySelector('#erpOrderDocumentPdfModalSignButton') as HTMLButtonElement).addEventListener(\"click\", async (e) => {\n e.preventDefault();\n await this.setupSigning();\n this.pdfSignModal.show();\n });\n (document.querySelector('#erpOrderDocumentPdfSignSave') as HTMLButtonElement).addEventListener(\"click\", async (e) => {\n e.preventDefault();\n await this.saveSignature();\n this.pdfSignModal.hide();\n this.pdfModal.hide();\n await this.parent.getEntity();\n });\n }\n\n createDataTable() {\n this.datatable = new DataTable(\".datatables-ticket-order-document\", {\n processing: true,\n dom:\n '<\"row mb-2 w-100 align-items-center justify-content-between\"' +\n '<\"col-3 col-md-1 dt-info-l\"<\"\"l>>' +\n '<\"col-9 col-md-2 dt-info-r\"<\"dt-action-buttons\"fB>>' +\n '>t' +\n '<\"row mx-2 align-items-center justify-content-between\"' +\n '<\"col-7\"i>' +\n '<\"col-5 d-flex justify-content-end mt-3\"p>' +\n '>',\n language: {\n sLengthMenu: '_MENU_',\n search: '',\n searchPlaceholder: `${Utils.translate('generic.search')}...`,\n \"zeroRecords\": `${Utils.translate('generic.datatable.no_results')}`,\n \"emptyTable\": `${Utils.translate('generic.datatable.no_results')}`,\n \"paginate\": {\n \"first\": `${Utils.translate('generic.datatable.pagination.first')}`,\n \"last\": `${Utils.translate('generic.datatable.pagination.last')}`,\n \"next\": `${Utils.translate('generic.datatable.pagination.next')}`,\n \"previous\": `${Utils.translate('generic.datatable.pagination.previous')}`\n },\n \"info\": `${Utils.translate('generic.datatable.info.info')}`,\n \"infoEmpty\": `${Utils.translate('generic.datatable.info.empty')}`,\n \"infoFiltered\": `${Utils.translate('generic.datatable.info.filtered')}`,\n },\n buttons: [\n ],\n layout: {\n bottomEnd: {\n paging: {\n firstLast: false\n }\n }\n }\n });\n }\n\n async update(data: any) {\n if (this.datatable) {\n this.datatable.destroy();\n }\n const table = document.querySelector(\".datatables-ticket-order-document tbody\") as HTMLElement;\n table.innerHTML = \"\";\n if (data.orders) {\n data.orders.forEach((order: any) => {\n order.documents.forEach((document: any) => {\n let tr = `\n ${new Date(Date.parse(document.created_at)).toLocaleString()} ${document.signed ? `(Signiert)` : ``}\n ${document.number}\n ${Utils.translate(`erp.document.types.${document.document_type}`)}\n
\n \n `\n if (!document.signed) {\n tr += ` `\n }\n tr += `
`\n table.innerHTML = table.innerHTML + tr;\n })\n });\n this.createDataTable();\n }\n }\n}"],"names":["bootstrap.Modal","pdfjsLib.GlobalWorkerOptions","pdfjsLib.getDocument","document"],"mappings":"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"}