zet-lib 1.2.56 → 1.2.58

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
@@ -423,6 +423,14 @@ Form.field = (obj) => {
423
423
  displayForm += `<textarea ${classview} ${id} ${name} ${placeholder} ${readonly} ${style} ${htmlOptions} rows="4">${JSON.stringify(obj.value)}</textarea>${information}${append}`
424
424
  break
425
425
 
426
+ case 'json_array':
427
+ displayForm += `<textarea ${classview} ${id} ${name} ${placeholder} ${readonly} ${style} ${htmlOptions} rows="4">${JSON.stringify(obj.value)}</textarea>${information}${append}`
428
+ break
429
+
430
+ case 'array':
431
+ displayForm += `<textarea ${classview} ${id} ${name} ${placeholder} ${readonly} ${style} ${htmlOptions} rows="4">${JSON.stringify(obj.value)}</textarea>${information}${append}`
432
+ break
433
+
426
434
  case 'virtual':
427
435
  displayForm = `${prepend}<input autocomplete="off" autofocus="" ${tabindex} ${style} type="text" ${classview} readonly ${id} ${placeholder} ${required} value="${value}" ${htmlOptions}>${information}${append}`
428
436
  break
package/lib/Util.js CHANGED
@@ -1137,6 +1137,32 @@ Util.attributeOptions = (obj = {}, defaultObj = {}) => {
1137
1137
  return html
1138
1138
  }
1139
1139
 
1140
+ /*
1141
+ array to update json array at postgresql
1142
+ */
1143
+ Util.array_to_jsonb = (arr = []) => {
1144
+ let value = ''
1145
+ let myarr = []
1146
+ if (arr.length > 0) {
1147
+ arr.map((item) => {
1148
+ myarr.push(JSON.stringify(item))
1149
+ })
1150
+ }
1151
+ value = JSON.stringify(myarr).replace('[', '{').replaceAll(']', '}')
1152
+ return value
1153
+ }
1154
+
1155
+ /*
1156
+ array to update array at postgresql
1157
+ */
1158
+ Util.array_to_arraypg = (arr = []) => {
1159
+ let value = null
1160
+ if (arr.length > 0) {
1161
+ value = JSON.stringify(arr).replace('[', '{').replaceAll(']', '}')
1162
+ }
1163
+ return value
1164
+ }
1165
+
1140
1166
  Util.userAvatar = (img = '') => {
1141
1167
  return img ? (img.includes('http') ? img : `/uploads/user/${img}`) : `/img/user.png`
1142
1168
  }
package/lib/zRoute.js CHANGED
@@ -147,6 +147,7 @@ zRoute.post = (req, res, MYMODEL, routeName, body) => {
147
147
  let widgets = MYMODEL.widgets
148
148
  let tags = []
149
149
  let val
150
+ let myval
150
151
  for (let key in post[routeName]) {
151
152
  let widgetName = widgets[key].name
152
153
  val = post[routeName][key]
@@ -295,6 +296,28 @@ zRoute.post = (req, res, MYMODEL, routeName, body) => {
295
296
  case 'numeric':
296
297
  post[routeName][key] = val ? val : null
297
298
  break
299
+
300
+ case 'json_array':
301
+ myval = null
302
+ if (val) {
303
+ let myarr = JSON.parse(val) || []
304
+ if (myarr.length > 0) {
305
+ myval = Util.array_to_jsonb(myarr)
306
+ }
307
+ }
308
+ post[routeName][key] = myval
309
+ break
310
+
311
+ case 'array':
312
+ myval = null
313
+ if (val) {
314
+ let myarr = JSON.parse(val) || []
315
+ if (myarr.length > 0) {
316
+ myval = Util.array_to_arraypg(myarr)
317
+ }
318
+ }
319
+ post[routeName][key] = myval
320
+ break
298
321
  }
299
322
  }
300
323
  //check if widget have a tag default null
@@ -927,6 +950,14 @@ zRoute.dataTableData = (key, value, MYMODEL, relations, myid = '') => {
927
950
  myvalue = value ? JSON.stringify(value).replaceAll('","', '", "') : ''
928
951
  break
929
952
 
953
+ case 'json_array':
954
+ myvalue = value ? JSON.stringify(value).replaceAll('","', '", "') : ''
955
+ break
956
+
957
+ case 'array':
958
+ myvalue = value ? JSON.stringify(value).replaceAll('","', '", "') : ''
959
+ break
960
+
930
961
  default:
931
962
  value = value || ''
932
963
  myvalue = value.length > 50 ? value.substring(0, 50) : value
@@ -1842,6 +1873,7 @@ zRoute.listData = async (req, res, MYMODEL, zRole, actionButtonsFn) => {
1842
1873
  const select = Util.selectParser(fields, MYMODEL)
1843
1874
  const asDate = []
1844
1875
  const asJSONb = []
1876
+ const asArray = []
1845
1877
  for (let key in MYMODEL.widgets) {
1846
1878
  if (MYMODEL.widgets[key].name == 'datetime') {
1847
1879
  asDate.push(key)
@@ -1855,6 +1887,9 @@ zRoute.listData = async (req, res, MYMODEL, zRole, actionButtonsFn) => {
1855
1887
  if (MYMODEL.widgets[key].name == 'dropdown_checkbox') {
1856
1888
  asJSONb.push(key)
1857
1889
  }
1890
+ if (MYMODEL.widgets[key].name == 'json_array' || MYMODEL.widgets[key].name == 'array') {
1891
+ asArray.push(key)
1892
+ }
1858
1893
  }
1859
1894
  let whereArray = []
1860
1895
  const columns = body.columns
@@ -1875,6 +1910,9 @@ zRoute.listData = async (req, res, MYMODEL, zRole, actionButtonsFn) => {
1875
1910
  if (asJSONb.includes(fields[item.data])) {
1876
1911
  astype = 'jsonb'
1877
1912
  }
1913
+ if (asArray.includes(fields[item.data])) {
1914
+ astype = 'array'
1915
+ }
1878
1916
  if (astype === 'jsonb') {
1879
1917
  whereArray.push({
1880
1918
  field: fields[item.data],
@@ -1883,6 +1921,14 @@ zRoute.listData = async (req, res, MYMODEL, zRole, actionButtonsFn) => {
1883
1921
  operator: 'AND',
1884
1922
  type: 'inline',
1885
1923
  })
1924
+ } else if (astype === 'array') {
1925
+ whereArray.push({
1926
+ field: '',
1927
+ option: '',
1928
+ value: ` ${fields[item.data]}::text ILIKE '${item.search.value}' `,
1929
+ operator: 'AND',
1930
+ type: 'inline',
1931
+ })
1886
1932
  } else {
1887
1933
  whereArray.push({
1888
1934
  field: fields[item.data],
@@ -2346,6 +2392,12 @@ zRoute.forms = (req, res, MYMODEL, relations, data = {}) => {
2346
2392
  obj.type = 'json'
2347
2393
  obj.data = relations[key]
2348
2394
  break
2395
+ case 'json_array':
2396
+ obj.type = 'json_array'
2397
+ break
2398
+ case 'array':
2399
+ obj.type = 'array'
2400
+ break
2349
2401
  case 'virtual':
2350
2402
  obj.type = 'virtual'
2351
2403
  break
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zet-lib",
3
- "version": "1.2.56",
3
+ "version": "1.2.58",
4
4
  "description": "zet is a library that part of zet generator.",
5
5
  "engines": {
6
6
  "node": ">=18"