diff --git a/public/index.php b/public/index.php index f974fff..0b729ff 100644 --- a/public/index.php +++ b/public/index.php @@ -1,6 +1,8 @@ '; + echo ''; ?> diff --git a/src/modules/dom/elements.js b/src/modules/dom/elements.js index 024726a..f3a9884 100644 --- a/src/modules/dom/elements.js +++ b/src/modules/dom/elements.js @@ -5,8 +5,10 @@ const clearButton = document.getElementById('clear'); const clearStateButton = document.getElementById('clear-state'); const saveButton = document.getElementById('save'); const inputIdOficio = document.getElementById('id_oficio'); +const inputDBTable = document.getElementById('db_table'); export { + inputDBTable, inputIdOficio, saveButton, clearStateButton, diff --git a/src/modules/handlers/savePdfHandler.js b/src/modules/handlers/savePdfHandler.js index 45c8384..e1e4c50 100644 --- a/src/modules/handlers/savePdfHandler.js +++ b/src/modules/handlers/savePdfHandler.js @@ -1,23 +1,21 @@ -import jsPDF from 'jspdf'; -import { inputIdOficio } from '../dom/elements'; +import jsPDF from "jspdf"; +import { inputIdOficio, inputDBTable } from "../dom/elements"; const savePdfHandler = (container, store) => { - if (container.children.length > 0) { let state = store.getState(); - - //integra con el estado para solo unir las imagenes dibujadas /// + //integra con el estado para solo unir las imagenes dibujadas /// let pages = container.children; - let doc = new jsPDF('p', 'pt', 'letter', true, true); - let pdfName = 'sample.pdf'; + let doc = new jsPDF("p", "pt", "letter", true, true); + let pdfName = "sample.pdf"; //preparacion pdf - let tempCanvas = document.createElement('canvas'); + let tempCanvas = document.createElement("canvas"); let tempContext = tempCanvas.getContext("2d"); - + console.time("loop"); - for (let i = 0; i < pages.length; i++){ + for (let i = 0; i < pages.length; i++) { //page let imagePDF = pages[i].children[0]; //draw @@ -26,80 +24,155 @@ const savePdfHandler = (container, store) => { let height = doc.internal.pageSize.getHeight(); let isDrawn = false; - - tempCanvas.width=Math.floor((imagePDF.width)/1.3); - tempCanvas.height=Math.floor((imagePDF.height)/1.3); + tempCanvas.width = Math.floor(imagePDF.width / 1.3); + tempCanvas.height = Math.floor(imagePDF.height / 1.3); state.forEach((page) => { if (page.idPage === imageCanvas.id) { isDrawn = true; } - }) + }); - if(isDrawn) { - tempContext.drawImage(imagePDF, 0, 0, imagePDF.width, imagePDF.height, 0, 0, tempCanvas.width, tempCanvas.height); - tempContext.drawImage(imageCanvas,0, 0, imageCanvas.width, imageCanvas.height, 0, 0, tempCanvas.width, tempCanvas.height); - - doc.addImage(tempCanvas.toDataURL("image/jpeg",0.3),'JPG',0,0,width,height,undefined,'SLOW'); - }else { - tempContext.drawImage(imagePDF, 0, 0, imagePDF.width, imagePDF.height, 0, 0, tempCanvas.width, tempCanvas.height); - doc.addImage(tempCanvas.toDataURL("image/jpeg",0.3),'JPG',0,0,width,height,undefined,'SLOW'); + if (isDrawn) { + tempContext.drawImage( + imagePDF, + 0, + 0, + imagePDF.width, + imagePDF.height, + 0, + 0, + tempCanvas.width, + tempCanvas.height + ); + tempContext.drawImage( + imageCanvas, + 0, + 0, + imageCanvas.width, + imageCanvas.height, + 0, + 0, + tempCanvas.width, + tempCanvas.height + ); + doc.addImage( + tempCanvas.toDataURL("image/jpeg", 0.3), + "JPG", + 0, + 0, + width, + height, + undefined, + "SLOW" + ); + } else { + tempContext.drawImage( + imagePDF, + 0, + 0, + imagePDF.width, + imagePDF.height, + 0, + 0, + tempCanvas.width, + tempCanvas.height + ); + doc.addImage( + tempCanvas.toDataURL("image/jpeg", 0.3), + "JPG", + 0, + 0, + width, + height, + undefined, + "SLOW" + ); } - if(i+1 !== pages.length) { + if (i + 1 !== pages.length) { doc.addPage(); } } console.timeEnd("loop"); - + //API CALL // doc.save('d'); - let blob = doc.output('blob'); + let blob = doc.output("blob"); let size = (bytes) => { - return bytes/1024/1024 - } - console.log('MB', size(blob.size)); + return bytes / 1024 / 1024; + }; + console.log("MB", size(blob.size)); let formData = new FormData(); - formData.append('pdf', blob); - + formData.append("pdf", blob); //revisamos el estado para sacar la informacion y enviarla al servidor - let pagesArray = [], messageArray = [] + let pagesArray = [], + messageArray = []; + + state.forEach((page) => { + pagesArray.push(parseInt(page.numPage)); + page.rectangles.forEach((rectangle) => { + if (!messageArray.includes(rectangle.text.replace(/,/gi, "-"))) { + messageArray.push(rectangle.text.replace(/,/gi, "-")); + } + }); + }); - state.forEach( - page => { - pagesArray.push(page.numPage) - page.rectangles.forEach( - rectangle => { - if(!messageArray.includes(rectangle.text.replace(/,/gi,'-'))) { - messageArray.push(rectangle.text.replace(/,/gi,'-')) - } + //loop + let start = 0; + let string = []; + for (let i = 0; i < pagesArray.length; i++) { + if (i === 0) { + start = pagesArray[0]; + if (pagesArray.length === i + 1) string.push(start.toString()); + } else { + if (pagesArray[i] === pagesArray[i - 1] + 1) { + if (pagesArray.length === i + 1) { + //tambien checar si es igual el start y el anterior + string.push(`${start}-${pagesArray[i]}`); } - ) + } else { + if (start === pagesArray[i - 1]) { + string.push(start.toString()); + start = pagesArray[i]; + } else { + string.push(`${start}-${pagesArray[i - 1]}`); + start = pagesArray[i]; + } + if (i === pagesArray.length - 1) { + string.push(pagesArray[i].toString()); + } + } } - ) - formData.append('pages', pagesArray); - formData.append('messages', messageArray); - formData.append('id_oficio', inputIdOficio.value); - fetch('http://localhost/SIGTRANS/ajax/pdfupload.ajax.php', { - method: 'POST', - body: formData - }) - .then( response => response.json()) - .then(data => { - window.close(); - console.log(data.url); - window.location.replace(data.url); - console.log('holo') + } + //loop + formData.append("pages", string); + formData.append("messages", messageArray); + formData.append("id_oficio", inputIdOficio.value); + formData.append("db_table", inputDBTable.value); + fetch("http://10.13.1.3/SIGTRANS/ajax/pdfupload.ajax.php", { + method: "POST", + body: formData, }) - .catch(er => console.log(er)); - - - - + .then((response) => { + console.log("primera respuesta"); + return response.text(); + }) + .then((data) => { + try { + let json = JSON.parse(data); + window.close(); + console.log(json.url); + window.location.replace(json.url); + } catch (e) { + console.log(data); + } + }) + .catch((er) => console.log(er)); } -} +}; export default savePdfHandler;