From a5392cad24aed0273e638cbfaba6602b8ed88321 Mon Sep 17 00:00:00 2001 From: Taher Barakat Date: Fri, 22 Mar 2024 19:57:10 +0300 Subject: [PATCH] integrate sweetalert library to handle multiple cases --- index.html | 77 ++++++++++++++++++++++++++++----------------- package-lock.json | 21 +++++++++++++ script.js | 80 +++++++++++++++++++++++++++++++++-------------- 3 files changed, 125 insertions(+), 53 deletions(-) create mode 100644 package-lock.json diff --git a/index.html b/index.html index 7445a44..1175af4 100644 --- a/index.html +++ b/index.html @@ -1,31 +1,50 @@ - - - - - Excel Sheet Generator - - - - - - -
-

Excel Sheet Generator

- - -
- - -
-
-
- - -
-
- - - - \ No newline at end of file + + + + + Excel Sheet Generator + + + + + + +
+

Excel Sheet Generator

+ + +
+ + +
+
+
+ + +
+
+ + + + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..29284b3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,21 @@ +{ + "name": "excel-sheet-generator", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "sweetalert2": "^11.10.6" + } + }, + "node_modules/sweetalert2": { + "version": "11.10.6", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.10.6.tgz", + "integrity": "sha512-CINZPLZXZRSZqSOE7H7j1F7X8e8O1kLOiXPmtJn1DYxvXsKBr3d16d90+IcwTTs7dJww20h8r8QIxIwsLGX+6A==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + } + } +} diff --git a/script.js b/script.js index bb93c4d..5051a33 100644 --- a/script.js +++ b/script.js @@ -1,29 +1,61 @@ let table = document.getElementsByClassName("sheet-body")[0], -rows = document.getElementsByClassName("rows")[0], -columns = document.getElementsByClassName("columns")[0] -tableExists = false + rows = document.getElementsByClassName("rows")[0], + columns = document.getElementsByClassName("columns")[0]; +tableExists = false; const generateTable = () => { - let rowsNumber = parseInt(rows.value), columnsNumber = parseInt(columns.value) - table.innerHTML = "" - for(let i=0; i` - } - table.innerHTML += tableRow - } - if(rowsNumber>0 && columnsNumber>0){ - tableExists = true - } -} + let rowsNumber = parseInt(rows.value), + columnsNumber = parseInt(columns.value); + + if (!rowsNumber || !columnsNumber) { + Swal.fire({ + icon: "error", + title: "Oops...", + text: "Enter a valid number for both inputs", + }); + return; + } + + table.innerHTML = ""; + for (let i = 0; i < rowsNumber; i++) { + var tableRow = ""; + for (let j = 0; j < columnsNumber; j++) { + tableRow += ``; + } + table.innerHTML += tableRow; + } + if (rowsNumber > 0 && columnsNumber > 0) { + tableExists = true; + } +}; const ExportToExcel = (type, fn, dl) => { - if(!tableExists){ - return - } - var elt = table - var wb = XLSX.utils.table_to_book(elt, { sheet: "sheet1" }) - return dl ? XLSX.write(wb, { bookType: type, bookSST: true, type: 'base64' }) - : XLSX.writeFile(wb, fn || ('MyNewSheet.' + (type || 'xlsx'))) -} \ No newline at end of file + if (!tableExists) { + Swal.fire({ + icon: "error", + title: "Oops...", + text: "Generate the table before export!", + }); + return; + } + + var elt = table; + let exportable = true; + elt.querySelectorAll("td").forEach((it) => { + if (it.innerText === "") { + Swal.fire({ + icon: "error", + title: "Oops...", + text: "Please fill all table's fields before export", + }); + exportable = false; + return; + } + }); + if (!exportable) return; + var wb = XLSX.utils.table_to_book(elt, { sheet: "sheet1" }); + console.log("d"); + return dl + ? XLSX.write(wb, { bookType: type, bookSST: true, type: "base64" }) + : XLSX.writeFile(wb, fn || "MyNewSheet." + (type || "xlsx")); +};