zet-lib 1.3.36 → 1.3.38

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/zAppRouter.js CHANGED
@@ -1294,12 +1294,16 @@ router.post('/zdeleted-selected/:table', async (req, res) => {
1294
1294
  if (datas.length > 0) {
1295
1295
  for (const data of datas) {
1296
1296
  let id = data.name.replace('ck[', '').replace(']', '')
1297
- await connection.delete({
1298
- table: table,
1299
- where: {
1300
- id: id,
1301
- },
1302
- })
1297
+ try {
1298
+ await connection.delete({
1299
+ table: table,
1300
+ where: {
1301
+ id: id,
1302
+ },
1303
+ })
1304
+ } catch (e) {
1305
+ io.emit('error', e + '')
1306
+ }
1303
1307
  }
1304
1308
  } else {
1305
1309
  json = Util.flashError('No Data')
package/lib/zRoute.js CHANGED
@@ -1637,7 +1637,7 @@ zRoute.excel = async (req, res, MYMODEL, fields, rows, callback, fileName) => {
1637
1637
  let aliasResults = {}
1638
1638
  for (let key in MYMODEL.widgets) {
1639
1639
  if (!notJoins.includes(key)) {
1640
- if (MYMODEL.widgets[key].name == 'relation' || MYMODEL.widgets[key].name == 'typeahead') {
1640
+ if (MYMODEL.widgets[key].name == 'relation' || MYMODEL.widgets[key].name == 'typeahead' || MYMODEL.widgets[key].name == 'dropdown_multi') {
1641
1641
  if (MYMODEL.widgets[key].import_field && MYMODEL.widgets[key].import_field != 'id') {
1642
1642
  aliasResults[key] = Util.arrayToObject(
1643
1643
  await connection.results({
@@ -1671,7 +1671,7 @@ zRoute.excel = async (req, res, MYMODEL, fields, rows, callback, fileName) => {
1671
1671
  tableObj[key] = widget.fields
1672
1672
  } else if (widget.name == 'switch') {
1673
1673
  tableObj[key] = widget.fields
1674
- } else if (widget.name == 'relation' || widget.name == 'typeahead') {
1674
+ } else if (widget.name == 'relation' || widget.name == 'typeahead' || widget.name == 'dropdown_multi') {
1675
1675
  var rowsarr = await connection.results({
1676
1676
  table: widget.table,
1677
1677
  select: widget.fields[0] + ',' + widget.fields[1] + ' as zname ',
@@ -1747,20 +1747,31 @@ zRoute.excel = async (req, res, MYMODEL, fields, rows, callback, fileName) => {
1747
1747
  } else {
1748
1748
  t = !callback(result, field) ? tableObj[field][result[field]] || '' : callback(result, field)
1749
1749
  }
1750
- } else if ((widgets.hasOwnProperty(field) && widgets[field].name == 'relation') || (widgets.hasOwnProperty(field) && widgets[field].name == 'typeahead')) {
1750
+ } else if ((widgets.hasOwnProperty(field) && widgets[field].name == 'relation') || (widgets.hasOwnProperty(field) && widgets[field].name == 'typeahead') || (widgets.hasOwnProperty(field) && widgets[field].name == 'dropdown_multi')) {
1751
1751
  let myvalue = ''
1752
1752
  if (widgets[field].import_field && widgets[field].import_field != 'id') {
1753
- /*console.log(result[field])
1754
- console.log(widgets[field].import_field)
1755
- console.log([result[field]][widgets[field].import_field])*/
1756
- if (isNaN(result[field])) {
1757
- myvalue = result[field]
1753
+ if (widgets[field].name == 'dropdown_multi') {
1754
+ if (Array.isArray(result[field])) {
1755
+ let dropdownmultivalue = []
1756
+ result[field].map((item) => {
1757
+ dropdownmultivalue.push(relations[field][item].zname)
1758
+ })
1759
+ result[field] = result[field] ? JSON.stringify(dropdownmultivalue) : ''
1760
+ }
1758
1761
  } else {
1759
- myvalue = result[field] ? aliasResults[field][result[field]][widgets[field].import_field] : ''
1760
- result[field] = result[field] ? aliasResults[field][result[field]][widgets[field].import_field] : ''
1762
+ if (isNaN(result[field])) {
1763
+ myvalue = result[field]
1764
+ } else {
1765
+ myvalue = result[field] ? aliasResults[field][result[field]][widgets[field].import_field] : ''
1766
+ result[field] = result[field] ? aliasResults[field][result[field]][widgets[field].import_field] : ''
1767
+ }
1761
1768
  }
1762
1769
  } else {
1763
- myvalue = result[field] ? relations[field][result[field]].zname : ''
1770
+ if (widgets[field].name == 'dropdown_multi') {
1771
+ myvalue = result[field] ? result[field] : ''
1772
+ } else {
1773
+ myvalue = result[field] ? relations[field][result[field]].zname : ''
1774
+ }
1764
1775
  }
1765
1776
  if (isRaws) {
1766
1777
  t = !callback(result, field) ? result[field] : callback(result, field)
@@ -4180,6 +4191,8 @@ zRoute.import = async (req, res, MYMODEL) => {
4180
4191
  let json = Util.jsonSuccess(LANGUAGE['import_success'])
4181
4192
  let aliasRelations = []
4182
4193
  let selectRelations = ''
4194
+ let isDropdownWidgets = []
4195
+ let dropdownWidgetRelations = {}
4183
4196
  for (let key in MYMODEL.widgets) {
4184
4197
  if (MYMODEL.widgets[key]) {
4185
4198
  if (MYMODEL.widgets[key].name == 'relation' || MYMODEL.widgets[key].name == 'typeahead') {
@@ -4188,6 +4201,19 @@ zRoute.import = async (req, res, MYMODEL) => {
4188
4201
  selectRelations += `, (select ${MYMODEL.widgets[key].import_field} from "${MYMODEL.widgets[key].table}" where ${MYMODEL.widgets[key].table}.id = ${MYMODEL.table}.${key} limit 1) as ${key} `
4189
4202
  }
4190
4203
  }
4204
+
4205
+ if (MYMODEL.widgets[key].name == 'dropdown_multi') {
4206
+ if (MYMODEL.widgets[key].import_field && MYMODEL.widgets[key].import_field != 'id') {
4207
+ isDropdownWidgets.push(key)
4208
+ let cacheName = `${MYMODEL.widgets[key].table}_${MYMODEL.table}___${key}_${companyId}`
4209
+ let datasName = myCache.get(cacheName) || []
4210
+ let objDatas = {}
4211
+ datasName.map((item) => {
4212
+ objDatas[item.zname] = item.id
4213
+ })
4214
+ dropdownWidgetRelations[key] = objDatas
4215
+ }
4216
+ }
4191
4217
  }
4192
4218
  }
4193
4219
  try {
@@ -4253,12 +4279,26 @@ zRoute.import = async (req, res, MYMODEL) => {
4253
4279
  table: MYMODEL.widgets[keys[prop]].table,
4254
4280
  whereArray: [
4255
4281
  //{field:"your_field",option:"=>",value:"12",operator:"AND",type:"text,json,date"}
4256
- { field: MYMODEL.widgets[keys[prop]].import_field, option: 'ILIKE', value: value },
4282
+ //{ field: MYMODEL.widgets[keys[prop]].import_field, option: 'ILIKE', value: value },
4283
+ { field: MYMODEL.widgets[keys[prop]].import_field, option: '=', value: value },
4257
4284
  ],
4258
4285
  })
4259
4286
  if (result_alias.id) {
4260
4287
  data[keys[prop]] = result_alias.id
4261
4288
  }
4289
+ } else if (isDropdownWidgets.includes(keys[prop])) {
4290
+ value = value + ''.trim()
4291
+ let letter = value.charAt(0)
4292
+ if (letter == '[') {
4293
+ let dArray = []
4294
+ let dropdownMultiArrays = JSON.parse(value)
4295
+ dropdownMultiArrays.map((dropdownMultiArray) => {
4296
+ if (dropdownWidgetRelations[keys[prop]][dropdownMultiArray]) {
4297
+ dArray.push(dropdownWidgetRelations[keys[prop]][dropdownMultiArray])
4298
+ }
4299
+ })
4300
+ data[keys[prop]] = JSON.stringify(dArray)
4301
+ }
4262
4302
  } else {
4263
4303
  let name = MYMODEL.widgets[keys[prop]] && MYMODEL.widgets[keys[prop]].name ? MYMODEL.widgets[keys[prop]].name : ''
4264
4304
  if (name != 'virtual') {
package/lib/zdataTable.js CHANGED
@@ -159,7 +159,7 @@ class dataTable {
159
159
  html += `<button title="Lock/Unlock" style="background-color: #E4A11B; color:white" class="btn btn-danger buttons-lock buttons-html5 copy gridlock boxy-small dimens2x image-button" data-bs-toggle="modal" data-bs-target="#grid-lock" type="button"><img src="/assets/icons/lock-check.svg" class="icons-bg-white"> </span></span></button>`
160
160
  }
161
161
  if (this.levels.delete_all) {
162
- html += `<button title="Lock/Unlock" style="background-color: #DC4C64; color:white" class="btn btn-danger buttons-lock buttons-html5 copy griddeleteall boxy-small dimens2x image-button" data-bs-toggle="modal" data-bs-target="#grid-delete-all" type="button"><img src="/assets/icons/http-delete.svg" class="icons-bg-white"> </span></span></button>`
162
+ html += `<button title="Delete selected data" style="background-color: #DC4C64; color:white" class="btn btn-danger buttons-lock buttons-html5 copy griddeleteall boxy-small dimens2x image-button" data-bs-toggle="modal" data-bs-target="#grid-delete-all" type="button"><img src="/assets/icons/http-delete.svg" class="icons-bg-white"> </span></span></button>`
163
163
  }
164
164
  if (this.hasLevels) {
165
165
  html += `<button title="Approval" style="background-color: #E4A11B; color:white" class="btn buttons-html5 boxy-small dimens2x image-button" data-bs-toggle="modal" data-bs-target="#grid-approval" type="button"><img src="/assets/icons/rubber-stamp.svg" class="icons-bg-white"> </span></span></button>`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zet-lib",
3
- "version": "1.3.36",
3
+ "version": "1.3.38",
4
4
  "description": "zet is a library that part of zet generator.",
5
5
  "engines": {
6
6
  "node": ">=18"