zet-lib 1.2.7 → 1.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/zRoute.js +121 -117
  2. package/package.json +1 -1
package/lib/zRoute.js CHANGED
@@ -1437,131 +1437,135 @@ zRoute.excel = async (req, res, MYMODEL, fields, rows, callback, fileName) => {
1437
1437
 
1438
1438
  //for pdf
1439
1439
  zRoute.pdf = async (req, res, MYMODEL, fields, rows, callback) => {
1440
- io.to(res.locals.token).emit('message', 'Please wait, compiling..')
1441
- callback = callback || function () {}
1442
- let labels = MYMODEL.labels
1443
- let html = ``
1444
- html += `<h2>${MYMODEL.title}</h2>`
1445
- html += `<br>`
1446
- html += `<div class="container">`
1447
- html += `<table class="table">`
1448
- html += `<thead><tr>`
1449
- for (var i = 0; i < fields.length; i++) {
1450
- html += `<td>${labels[fields[i]]}</td>`
1451
- }
1452
- html += `</tr></thead>`
1453
- //check relations
1454
- let isRelations = false
1455
- let relations = [],
1456
- tableObj = {},
1457
- obj = {},
1458
- dropdowns = [],
1459
- passwords = []
1460
- let usersObj = await zRoute.getUsers()
1461
- if (Object.prototype.hasOwnProperty.call(MYMODEL, 'widgets')) {
1462
- for (let key in MYMODEL.widgets) {
1463
- let widget = MYMODEL.widgets[key]
1464
- if (widget.name == 'password') {
1465
- passwords.push(key)
1466
- } else if (widget.name == 'select') {
1467
- tableObj[key] = widget.fields
1468
- } else if (widget.name == 'switch') {
1469
- tableObj[key] = widget.fields
1470
- } else if (widget.name == 'relation') {
1471
- const rowsarr = await connection.results({
1472
- table: widget.table,
1473
- select: widget.fields[0] + ',' + widget.fields[1] + ' as zname ',
1474
- })
1475
- //save to object
1476
- relations[key] = Util.arrayToObject(rowsarr, 'id')
1440
+ try {
1441
+ io.to(res.locals.token).emit('message', 'Please wait, compiling..')
1442
+ callback = callback || function () {}
1443
+ let labels = MYMODEL.labels
1444
+ let html = ``
1445
+ html += `<h2>${MYMODEL.title}</h2>`
1446
+ html += `<br>`
1447
+ html += `<div class="container">`
1448
+ html += `<table class="table">`
1449
+ html += `<thead><tr>`
1450
+ for (var i = 0; i < fields.length; i++) {
1451
+ html += `<td>${labels[fields[i]]}</td>`
1452
+ }
1453
+ html += `</tr></thead>`
1454
+ //check relations
1455
+ let isRelations = false
1456
+ let relations = [],
1457
+ tableObj = {},
1458
+ obj = {},
1459
+ dropdowns = [],
1460
+ passwords = []
1461
+ let usersObj = await zRoute.getUsers()
1462
+ if (Object.prototype.hasOwnProperty.call(MYMODEL, 'widgets')) {
1463
+ for (let key in MYMODEL.widgets) {
1464
+ let widget = MYMODEL.widgets[key]
1465
+ if (widget.name == 'password') {
1466
+ passwords.push(key)
1467
+ } else if (widget.name == 'select') {
1468
+ tableObj[key] = widget.fields
1469
+ } else if (widget.name == 'switch') {
1470
+ tableObj[key] = widget.fields
1471
+ } else if (widget.name == 'relation') {
1472
+ const rowsarr = await connection.results({
1473
+ table: widget.table,
1474
+ select: widget.fields[0] + ',' + widget.fields[1] + ' as zname ',
1475
+ })
1476
+ //save to object
1477
+ relations[key] = Util.arrayToObject(rowsarr, 'id')
1478
+ }
1477
1479
  }
1478
1480
  }
1479
- }
1480
- html += `<tbody>`
1481
- rows.forEach(function (result) {
1482
- html += `<tr>`
1483
- fields.forEach((field, i) => {
1484
- var t
1485
- if (field == 'company_id') {
1486
- t = !callback(result, field) ? result.company_id : callback(result, field)
1487
- } else if (field == 'created_at' || field == 'created_at') {
1488
- t = !callback(result, field) ? Util.timeSql(result[field]) : callback(result, field)
1489
- } else if (field == 'updated_at' || field == 'updated_at') {
1490
- t = !callback(result, field) ? Util.timeSql(result[field]) : callback(result, field)
1491
- } else if (Util.in_array(field, ['created_by', 'updated_by'])) {
1492
- t = !callback(result, field) ? usersObj[result[field]] : callback(result, field)
1493
- } else {
1494
- // callback will call if you have
1495
- if (Util.in_array(field, relations)) {
1496
- const objectData = tableObj[field] || {}
1497
- if (!callback(result, field)) {
1498
- if (result[field] && Object.hasOwn(objectData[result[field]], 'zname')) {
1499
- t = objectData[result[field]]['zname']
1481
+ html += `<tbody>`
1482
+ rows.forEach(function (result) {
1483
+ html += `<tr>`
1484
+ fields.forEach((field, i) => {
1485
+ var t
1486
+ if (field == 'company_id') {
1487
+ t = !callback(result, field) ? result.company_id : callback(result, field)
1488
+ } else if (field == 'created_at' || field == 'created_at') {
1489
+ t = !callback(result, field) ? Util.timeSql(result[field]) : callback(result, field)
1490
+ } else if (field == 'updated_at' || field == 'updated_at') {
1491
+ t = !callback(result, field) ? Util.timeSql(result[field]) : callback(result, field)
1492
+ } else if (Util.in_array(field, ['created_by', 'updated_by'])) {
1493
+ t = !callback(result, field) ? usersObj[result[field]] : callback(result, field)
1494
+ } else {
1495
+ // callback will call if you have
1496
+ if (Util.in_array(field, relations)) {
1497
+ const objectData = tableObj[field] || {}
1498
+ if (!callback(result, field)) {
1499
+ if (result[field] && Object.hasOwn(objectData[result[field]], 'zname')) {
1500
+ t = objectData[result[field]]['zname']
1501
+ } else {
1502
+ t = result[field]
1503
+ }
1500
1504
  } else {
1501
- t = result[field]
1505
+ t = callback(result, field)
1506
+ }
1507
+ } else if (Util.in_array(field, dropdowns)) {
1508
+ t = !callback(result, field) ? MYMODEL.dropdowns[field].fields[result[field]] : callback(result, field)
1509
+ } else if (Util.in_array(field, passwords)) {
1510
+ t = 'xxxxxx'
1511
+ } else if (MYMODEL.widgets[field].name == 'select') {
1512
+ t = !callback(result, field) ? (Object.hasOwn(tableObj[field], result[field]) ? tableObj[field][result[field]] : result[field]) : callback(result, field)
1513
+ } else if (MYMODEL.widgets[field].name == 'datetime') {
1514
+ t = !callback(result, field) ? Util.timeSql(result[field]) : callback(result, field)
1515
+ } else if (MYMODEL.widgets[field].name == 'datepicker') {
1516
+ t = !callback(result, field) ? Util.dateFormat(result[field]) : callback(result, field)
1517
+ } else if (MYMODEL.widgets[field].name == 'switch') {
1518
+ t = !callback(result, field) ? tableObj[field][result[field]] || '' : callback(result, field)
1519
+ } else if (MYMODEL.widgets[field].name == 'relation') {
1520
+ if (relations[field][result[field]]) {
1521
+ t = !callback(result, field) ? relations[field][result[field]].zname || '' : callback(result, field)
1502
1522
  }
1503
1523
  } else {
1504
- t = callback(result, field)
1524
+ t = !callback(result, field) ? result[field] || '' : callback(result, field)
1505
1525
  }
1506
- } else if (Util.in_array(field, dropdowns)) {
1507
- t = !callback(result, field) ? MYMODEL.dropdowns[field].fields[result[field]] : callback(result, field)
1508
- } else if (Util.in_array(field, passwords)) {
1509
- t = 'xxxxxx'
1510
- } else if (MYMODEL.widgets[field].name == 'select') {
1511
- t = !callback(result, field) ? (Object.hasOwn(tableObj[field], result[field]) ? tableObj[field][result[field]] : result[field]) : callback(result, field)
1512
- } else if (MYMODEL.widgets[field].name == 'datetime') {
1513
- t = !callback(result, field) ? Util.timeSql(result[field]) : callback(result, field)
1514
- } else if (MYMODEL.widgets[field].name == 'datepicker') {
1515
- t = !callback(result, field) ? Util.dateFormat(result[field]) : callback(result, field)
1516
- } else if (MYMODEL.widgets[field].name == 'switch') {
1517
- t = !callback(result, field) ? tableObj[field][result[field]] || '' : callback(result, field)
1518
- } else if (MYMODEL.widgets[field].name == 'relation') {
1519
- if (relations[field][result[field]]) {
1520
- t = !callback(result, field) ? relations[field][result[field]].zname || '' : callback(result, field)
1521
- }
1522
- } else {
1523
- t = !callback(result, field) ? result[field] || '' : callback(result, field)
1524
1526
  }
1525
- }
1526
- //worksheet.getCell(sequence[i] + start).value = t;
1527
- html += `<td>${t}</td>`
1527
+ //worksheet.getCell(sequence[i] + start).value = t;
1528
+ html += `<td>${t}</td>`
1529
+ })
1530
+ html += `</tr>`
1528
1531
  })
1529
- html += `</tr>`
1530
- })
1531
1532
 
1532
- html += `</tbody></table></div>`
1533
- let time = Util.timeSql()
1534
- time = Util.replaceAll(time, ' ', '_')
1535
- let file = { content: html }
1536
- let count = fields.length
1537
- let options = {}
1538
- if (count > 8) {
1539
- options = {
1540
- landscape: true,
1541
- }
1542
- } else if (count > 10) {
1543
- options = {
1544
- format: 'A3',
1545
- //landscape:true
1546
- }
1547
- } else if (count > 12) {
1548
- options = {
1549
- format: 'A3',
1550
- landscape: true,
1551
- }
1552
- } else if (count > 14) {
1553
- options = {
1554
- format: 'A2',
1555
- //landscape:true
1556
- }
1557
- } else if (count > 16) {
1558
- options = {
1559
- format: 'A0',
1560
- landscape: true,
1561
- }
1562
- }
1563
- const pdf = await zRoute.generatePDF(file, 'pdf_blank', options)
1564
- res.download(pdf, MYMODEL.table + time + '.pdf')
1533
+ html += `</tbody></table></div>`
1534
+ let time = Util.timeSql()
1535
+ time = Util.replaceAll(time, ' ', '_')
1536
+ let file = { content: html }
1537
+ let count = fields.length
1538
+ let options = {}
1539
+ if (count > 8) {
1540
+ options = {
1541
+ landscape: true,
1542
+ }
1543
+ } else if (count > 10) {
1544
+ options = {
1545
+ format: 'A3',
1546
+ //landscape:true
1547
+ }
1548
+ } else if (count > 12) {
1549
+ options = {
1550
+ format: 'A3',
1551
+ landscape: true,
1552
+ }
1553
+ } else if (count > 14) {
1554
+ options = {
1555
+ format: 'A2',
1556
+ //landscape:true
1557
+ }
1558
+ } else if (count > 16) {
1559
+ options = {
1560
+ format: 'A0',
1561
+ landscape: true,
1562
+ }
1563
+ }
1564
+ const pdf = await zRoute.generatePDF(file, 'pdf_blank', options)
1565
+ res.download(pdf, MYMODEL.table + time + '.pdf')
1566
+ } catch (err) {
1567
+ res.json(Util.jsonError(err))
1568
+ }
1565
1569
  }
1566
1570
 
1567
1571
  /*
@@ -1598,7 +1602,7 @@ zRoute.generatePDF = async (file, layout = 'pdf_bootstrap', options = {}) => {
1598
1602
  } else {
1599
1603
  await page.goto(file.url, {
1600
1604
  waitUntil: 'load',
1601
- timeout: 60000, // wait for page to load completely
1605
+ timeout: 300000, // wait for page to load completely
1602
1606
  })
1603
1607
  }
1604
1608
  let fileName = new Date().getTime() + '.pdf'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zet-lib",
3
- "version": "1.2.7",
3
+ "version": "1.2.8",
4
4
  "description": "zet is a library that part of zet generator.",
5
5
  "engines": {
6
6
  "node": ">=18"