zet-lib 1.3.31 → 1.3.33

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.
package/lib/Form.js CHANGED
@@ -494,7 +494,12 @@ Form.field = (obj) => {
494
494
  break
495
495
 
496
496
  case 'dropzoneview':
497
- displayForm = `<div class="boxy-tiny">`
497
+ let countFiles = obj.value && obj.value.length ? obj.value.length + ' Files' : ''
498
+ let bodydropzoneview =
499
+ countFiles == '' ? '' : `<div class="card-header">${countFiles} <div class="float-end"><span class="icon-small icons-light" title="Download"><img onclick="location.href= '/zdownloads-dropzone/${obj.routeName}/${obj.key}/${obj.dataId}'" class="icons-bg-black gridview icon-image" src="/assets/icons/download.svg"></span></div> </div>`
500
+ displayForm = `<div class="card">
501
+ ${bodydropzoneview}
502
+ <div class="card-body">`
498
503
  if (obj.value && obj.value.length > 0) {
499
504
  obj.value.map((item) => {
500
505
  let extFile = Util.fileExtension(item)
@@ -506,7 +511,7 @@ Form.field = (obj) => {
506
511
  }
507
512
  })
508
513
  }
509
- displayForm += `</div>`
514
+ displayForm += `</div></div>`
510
515
 
511
516
  break
512
517
  default:
package/lib/zAppRouter.js CHANGED
@@ -20,6 +20,7 @@ const zCache = require('./zCache')
20
20
  const pm2 = require('pm2')
21
21
  const zFunction = require('./zFunction')
22
22
  const qs = require('qs')
23
+ const zip = require('express-zip')
23
24
 
24
25
  /*
25
26
  ajax Post
@@ -1569,4 +1570,33 @@ router.post('/zhistory-data', async (req, res) => {
1569
1570
  }
1570
1571
  })
1571
1572
 
1573
+ router.get('/zdownloads-dropzone/:table/:field/:id', async (req, res) => {
1574
+ try {
1575
+ let table = req.params.table
1576
+ let field = req.params.field
1577
+ let id = req.params.id
1578
+ const room = res.locals.token
1579
+ let result = await connection.result({
1580
+ table: table,
1581
+ where: {
1582
+ id: id,
1583
+ },
1584
+ })
1585
+ let dir = `${dirRoot}/public/uploads/${table}/${field}/`
1586
+ let arr = []
1587
+ let files = result[field]
1588
+ for (const file of files) {
1589
+ if (Util.fileExist(dir + file)) {
1590
+ let filename = file.substring(13)
1591
+ arr.push({ path: dir + file, name: filename })
1592
+ io.to(room).emit('info', `Zip file ${filename}`)
1593
+ }
1594
+ }
1595
+ io.to(room).emit('info', `Zip file completed...`)
1596
+ res.zip(arr, `${field}_${table}_${id}.zip`)
1597
+ } catch (e) {
1598
+ console.log(e)
1599
+ res.json(e + '')
1600
+ }
1601
+ })
1572
1602
  module.exports = router
package/lib/zRoute.js CHANGED
@@ -1139,7 +1139,7 @@ zRoute.dataTableData = (key, value, MYMODEL, relations, myid = '') => {
1139
1139
  break
1140
1140
 
1141
1141
  case 'dropdown_checkbox':
1142
- myvalue = value ? value.reduce((acc,item)=> `${acc} <u>${item}</u> `, '') : ''
1142
+ myvalue = value ? value.reduce((acc, item) => `${acc} <u>${item}</u> `, '') : ''
1143
1143
  break
1144
1144
 
1145
1145
  case 'array':
@@ -3035,6 +3035,7 @@ zRoute.viewForm = (req, res, MYMODEL, relations, data = {}, MODEL_TABLE = {}, ke
3035
3035
  obj[key].value = data[key] || []
3036
3036
  obj[key].table = MYMODEL.table
3037
3037
  obj[key].key = key
3038
+ obj[key].dataId = data.id || ''
3038
3039
  break
3039
3040
  }
3040
3041
  }
@@ -4102,6 +4103,8 @@ zRoute.deleteSQL = async (table, id, company_id) => {
4102
4103
  if (results[0].lock == 1) {
4103
4104
  throw Error('Data is locked')
4104
4105
  } else {
4106
+ //delete all files
4107
+ zRoute.deleteFiles(table, results[0])
4105
4108
  await connection.delete({ table: table, where: where })
4106
4109
  zRoute.modelsCacheRenew(table, company_id)
4107
4110
  }
@@ -4114,6 +4117,33 @@ zRoute.deleteSQL = async (table, id, company_id) => {
4114
4117
  }
4115
4118
  }
4116
4119
 
4120
+ zRoute.deleteFiles = (table, result) => {
4121
+ try {
4122
+ //check if has files then remove it
4123
+ const MYMODELS = myCache.get('MYMODELS')
4124
+ const MYMODEL = MYMODELS[table]
4125
+ const widgets = MYMODEL.widgets
4126
+ for (let key in widgets) {
4127
+ if (widgets[key].name == 'dropzone') {
4128
+ if (result[key]) {
4129
+ let dir = `${dirRoot}/public/uploads/${table}/${key}/`
4130
+ result[key].map((item) => {
4131
+ fs.remove(dir + item, () => {})
4132
+ })
4133
+ }
4134
+ }
4135
+ if (widgets[key].name == 'image' || widgets[key].name == 'file') {
4136
+ if (result[key]) {
4137
+ let dir = `${dirRoot}/public/uploads/${table}/`
4138
+ fs.remove(dir + result[key], () => {})
4139
+ }
4140
+ }
4141
+ }
4142
+ } catch (e) {
4143
+ console.log(e)
4144
+ }
4145
+ }
4146
+
4117
4147
  //for import
4118
4148
  zRoute.import = async (req, res, MYMODEL) => {
4119
4149
  const cacheRole = myCache.get('ROLES')[res.locals.roleId].params
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zet-lib",
3
- "version": "1.3.31",
3
+ "version": "1.3.33",
4
4
  "description": "zet is a library that part of zet generator.",
5
5
  "engines": {
6
6
  "node": ">=18"
@@ -34,6 +34,7 @@
34
34
  "dotenv": "^16.3.1",
35
35
  "ejs": "^3.1.9",
36
36
  "exceljs": "^4.4.0",
37
+ "express-zip": "^3.0.0",
37
38
  "fs-extra": "^11.1.1",
38
39
  "html-minifier-terser": "^7.2.0",
39
40
  "js-sha256": "^0.9.0",