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 +8 -0
- package/lib/Util.js +26 -0
- package/lib/zRoute.js +52 -0
- package/package.json +1 -1
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
|