zet-lib 1.3.24 → 1.3.26
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/Util.js +32 -7
- package/lib/zGeneratorRouter.js +4 -6
- package/lib/zRoute.js +232 -135
- package/package.json +1 -1
package/lib/Util.js
CHANGED
|
@@ -1176,10 +1176,10 @@ Util.userAvatar = (img = '') => {
|
|
|
1176
1176
|
}
|
|
1177
1177
|
|
|
1178
1178
|
/*
|
|
1179
|
-
|
|
1179
|
+
SQL HELPER
|
|
1180
1180
|
*/
|
|
1181
1181
|
Util.selectParser = (fields = [], MYMODEL = {}) => {
|
|
1182
|
-
|
|
1182
|
+
let table = MYMODEL.table
|
|
1183
1183
|
let virtuals = []
|
|
1184
1184
|
let select = ''
|
|
1185
1185
|
for (var key in MYMODEL.widgets) {
|
|
@@ -1190,19 +1190,44 @@ Util.selectParser = (fields = [], MYMODEL = {}) => {
|
|
|
1190
1190
|
let arr = []
|
|
1191
1191
|
fields.forEach((item) => {
|
|
1192
1192
|
if (virtuals.includes(item)) {
|
|
1193
|
-
select += MYMODEL.widgets[item].fields
|
|
1193
|
+
select += `${MYMODEL.widgets[item].fields},`
|
|
1194
1194
|
} else if (item === 'no') {
|
|
1195
|
-
arr.push(
|
|
1195
|
+
arr.push(`${table}.id`)
|
|
1196
1196
|
} else if (item === 'actionColumn') {
|
|
1197
|
-
arr.push(
|
|
1197
|
+
arr.push(`${table}.lock`)
|
|
1198
1198
|
} else {
|
|
1199
|
-
arr.push(item)
|
|
1199
|
+
arr.push(Util.fieldWithTable(item, MYMODEL))
|
|
1200
1200
|
}
|
|
1201
1201
|
})
|
|
1202
|
-
select += `"${arr.join('","')}"`
|
|
1202
|
+
//select += `"${arr.join('","')}"`
|
|
1203
|
+
select += arr.join(',')
|
|
1203
1204
|
return select
|
|
1204
1205
|
}
|
|
1205
1206
|
|
|
1207
|
+
Util.fieldWithTable = (field, MYMODEL, isWhere = false) => {
|
|
1208
|
+
let name = ''
|
|
1209
|
+
let joinList = MYMODEL.joins && MYMODEL.joins.list.length > 0 ? MYMODEL.joins.list : []
|
|
1210
|
+
if (joinList.length > 0) {
|
|
1211
|
+
if (joinList.includes(field)) {
|
|
1212
|
+
let split = field.split('___')
|
|
1213
|
+
if (isWhere) {
|
|
1214
|
+
name = `${split[0]}.${split[1]}`
|
|
1215
|
+
} else {
|
|
1216
|
+
name = `${split[0]}.${split[1]} as ${field}`
|
|
1217
|
+
}
|
|
1218
|
+
} else {
|
|
1219
|
+
name = `${MYMODEL.table}.${field}`
|
|
1220
|
+
}
|
|
1221
|
+
} else {
|
|
1222
|
+
name = `${MYMODEL.table}.${field}`
|
|
1223
|
+
}
|
|
1224
|
+
return name
|
|
1225
|
+
}
|
|
1226
|
+
|
|
1227
|
+
Util.tableWithJoin = (MYMODEL) => {
|
|
1228
|
+
return MYMODEL.joins && MYMODEL.joins.list.length > 0 ? MYMODEL.joins.sql : []
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1206
1231
|
Util.selectMysql = (fields = [], relations = {}) => {
|
|
1207
1232
|
let obj = {}
|
|
1208
1233
|
let arr = []
|
package/lib/zGeneratorRouter.js
CHANGED
|
@@ -670,8 +670,6 @@ const buildJoin = async (MYMODEL, result) => {
|
|
|
670
670
|
if (result.joins && Object.keys(joins).length > 0) {
|
|
671
671
|
let newDataObj = {}
|
|
672
672
|
for (let key in joins) {
|
|
673
|
-
//find relation
|
|
674
|
-
//sql.push(` LEFT JOIN ${key} ON ${key}.id = ${table}.${key}_id `)
|
|
675
673
|
let THEIR_MODEL = require(`${dirRoot}/models/${key}`)
|
|
676
674
|
//console.log(THEIR_MODEL)
|
|
677
675
|
let arr = joins[key] || []
|
|
@@ -680,7 +678,8 @@ const buildJoin = async (MYMODEL, result) => {
|
|
|
680
678
|
arr.map((item) => {
|
|
681
679
|
//console.log(item)
|
|
682
680
|
//console.log(typeof item)
|
|
683
|
-
const originKey = key.replace(`${key}___`, '')
|
|
681
|
+
const originKey = item.key.replace(`${key}___`, '')
|
|
682
|
+
console.log(originKey)
|
|
684
683
|
newDataObj[item.key] = item.value
|
|
685
684
|
MYMODEL.keys.push(item.key)
|
|
686
685
|
MYMODEL.keysExcel.push(item.key)
|
|
@@ -689,7 +688,7 @@ const buildJoin = async (MYMODEL, result) => {
|
|
|
689
688
|
MYMODEL.options[item.key] = THEIR_MODEL.options[originKey]
|
|
690
689
|
MYMODEL.grids.invisibles.push(item.key)
|
|
691
690
|
MYMODEL.datas[item.key] = THEIR_MODEL.datas[originKey]
|
|
692
|
-
|
|
691
|
+
MYMODEL.widgets[item.key] = THEIR_MODEL.widgets[originKey]
|
|
693
692
|
join_list.push(item.key)
|
|
694
693
|
})
|
|
695
694
|
}
|
|
@@ -744,7 +743,7 @@ const buildJoin = async (MYMODEL, result) => {
|
|
|
744
743
|
foreignTables.push(row.foreign_table_name)
|
|
745
744
|
foreign_table_name[row.foreign_table_name] = ` LEFT JOIN ${row.foreign_table_name} ON ${row.foreign_table_name}.id = ${table_steps_item}.${row.column_name} `
|
|
746
745
|
})
|
|
747
|
-
console.log(foreignTables)
|
|
746
|
+
//console.log(foreignTables)
|
|
748
747
|
table_joins.map((item) => {
|
|
749
748
|
if (!table_steps.includes(item)) {
|
|
750
749
|
if (foreignTables.includes(item)) {
|
|
@@ -1392,7 +1391,6 @@ const scanning = async (MYMODEL, result) => {
|
|
|
1392
1391
|
newModel += `${Util.newLine}`
|
|
1393
1392
|
newModel += `}`
|
|
1394
1393
|
fs.writeFileSync(`${dirRoot}/models/${MYMODEL.table}.js`, newModel)
|
|
1395
|
-
|
|
1396
1394
|
//return MYMODEL;
|
|
1397
1395
|
}
|
|
1398
1396
|
|
package/lib/zRoute.js
CHANGED
|
@@ -512,7 +512,7 @@ zRoute.selectData = (MYMODEL) => {
|
|
|
512
512
|
return data
|
|
513
513
|
}
|
|
514
514
|
|
|
515
|
-
zRoute.
|
|
515
|
+
zRoute.relationTable = async (req, res, table) => {
|
|
516
516
|
try {
|
|
517
517
|
const MYMODELS = myCache.get('MYMODELS')
|
|
518
518
|
const MYMODEL = MYMODELS[table]
|
|
@@ -523,7 +523,7 @@ zRoute.relations = async (req, res, table) => {
|
|
|
523
523
|
let hasAttributes = false
|
|
524
524
|
let zattributes = {}
|
|
525
525
|
let company_id = res.locals.companyId
|
|
526
|
-
//
|
|
526
|
+
//widgets
|
|
527
527
|
for (let key in MYMODEL.widgets) {
|
|
528
528
|
const keyRow = key + 'Row'
|
|
529
529
|
const keyFields = key + 'Fields'
|
|
@@ -717,7 +717,6 @@ zRoute.relations = async (req, res, table) => {
|
|
|
717
717
|
}
|
|
718
718
|
}
|
|
719
719
|
//console.log(relations);
|
|
720
|
-
|
|
721
720
|
let selectZvirtuals = ''
|
|
722
721
|
for (let key in relations['zvirtuals']) {
|
|
723
722
|
selectZvirtuals += `${relations['zvirtuals'][key]} , `
|
|
@@ -733,6 +732,51 @@ zRoute.relations = async (req, res, table) => {
|
|
|
733
732
|
}
|
|
734
733
|
}
|
|
735
734
|
|
|
735
|
+
zRoute.relations = async (req, res, table) => {
|
|
736
|
+
try {
|
|
737
|
+
const MYMODELS = myCache.get('MYMODELS')
|
|
738
|
+
const MYMODEL = MYMODELS[table]
|
|
739
|
+
let relation = await zRoute.relationTable(req, res, table)
|
|
740
|
+
let relations = {}
|
|
741
|
+
if (MYMODEL.joins && MYMODEL.joins.list) {
|
|
742
|
+
let joinOfTables = MYMODEL.joins.tables
|
|
743
|
+
for (let key of joinOfTables) {
|
|
744
|
+
relations[key] = await zRoute.relationTable(req, res, key)
|
|
745
|
+
}
|
|
746
|
+
let listData = MYMODEL.joins.list || []
|
|
747
|
+
listData.map((item) => {
|
|
748
|
+
let split = item.split('___')
|
|
749
|
+
let mytable = split[0]
|
|
750
|
+
let key = split[1]
|
|
751
|
+
const itemRow = item + 'Row'
|
|
752
|
+
const itemFields = item + 'Fields'
|
|
753
|
+
const itemObject = item + 'Object'
|
|
754
|
+
const keyRow = key + 'Row'
|
|
755
|
+
const keyFields = key + 'Fields'
|
|
756
|
+
const keyObject = key + 'Object'
|
|
757
|
+
|
|
758
|
+
let relName = relations[mytable]
|
|
759
|
+
if (relName[key]) {
|
|
760
|
+
relation[item] = relName[key]
|
|
761
|
+
}
|
|
762
|
+
if (relName[keyRow]) {
|
|
763
|
+
relation[itemRow] = relName[keyRow]
|
|
764
|
+
}
|
|
765
|
+
if (relName[keyFields]) {
|
|
766
|
+
relation[itemFields] = relName[keyFields]
|
|
767
|
+
}
|
|
768
|
+
if (relName[keyObject]) {
|
|
769
|
+
relation[itemObject] = relName[keyObject]
|
|
770
|
+
}
|
|
771
|
+
})
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
return relation
|
|
775
|
+
} catch (e) {
|
|
776
|
+
console.log(e)
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
|
|
736
780
|
/*
|
|
737
781
|
Function to create filter elements on data table grid
|
|
738
782
|
*/
|
|
@@ -1901,12 +1945,16 @@ zRoute.listDataTable = async (req, res, objData = {}) => {
|
|
|
1901
1945
|
try {
|
|
1902
1946
|
const body = req.body
|
|
1903
1947
|
const MYMODEL = objData.MYMODEL || {}
|
|
1948
|
+
const table = MYMODEL.table
|
|
1904
1949
|
const fields = Object.prototype.hasOwnProperty.call(objData, 'fields') ? objData.fields : req.body.fields
|
|
1905
|
-
|
|
1950
|
+
let relations = await zRoute.relations(req, res, MYMODEL.table)
|
|
1951
|
+
//find relation with joins
|
|
1952
|
+
|
|
1906
1953
|
const select = Object.prototype.hasOwnProperty.call(objData, 'select') ? objData.select : Util.selectParser(fields, MYMODEL)
|
|
1907
1954
|
const columns = Object.prototype.hasOwnProperty.call(objData, 'columns') ? objData.columns : body.columns
|
|
1908
1955
|
const asDate = []
|
|
1909
1956
|
const asJSONb = []
|
|
1957
|
+
const asArray = []
|
|
1910
1958
|
for (let key in MYMODEL.widgets) {
|
|
1911
1959
|
if (MYMODEL.widgets[key].name == 'datetime') {
|
|
1912
1960
|
asDate.push(key)
|
|
@@ -1917,16 +1965,23 @@ zRoute.listDataTable = async (req, res, objData = {}) => {
|
|
|
1917
1965
|
if (MYMODEL.widgets[key].name == 'dropdown_multi') {
|
|
1918
1966
|
asJSONb.push(key)
|
|
1919
1967
|
}
|
|
1968
|
+
if (MYMODEL.widgets[key].name == 'dragdrop') {
|
|
1969
|
+
asJSONb.push(key)
|
|
1970
|
+
}
|
|
1920
1971
|
if (MYMODEL.widgets[key].name == 'dropdown_checkbox') {
|
|
1921
1972
|
asJSONb.push(key)
|
|
1922
1973
|
}
|
|
1974
|
+
if (MYMODEL.widgets[key].name == 'json_array' || MYMODEL.widgets[key].name == 'array' || MYMODEL.widgets[key].name == 'dropzone') {
|
|
1975
|
+
asArray.push(key)
|
|
1976
|
+
}
|
|
1923
1977
|
}
|
|
1924
1978
|
let whereArray = []
|
|
1925
1979
|
if (objData.hasOwnProperty('whereArray')) {
|
|
1926
1980
|
whereArray = objData['whereArray']
|
|
1927
1981
|
}
|
|
1982
|
+
|
|
1928
1983
|
whereArray.push({
|
|
1929
|
-
field:
|
|
1984
|
+
field: `${table}.company_id`,
|
|
1930
1985
|
option: '=',
|
|
1931
1986
|
value: res.locals.companyId,
|
|
1932
1987
|
operator: 'AND',
|
|
@@ -1941,17 +1996,28 @@ zRoute.listDataTable = async (req, res, objData = {}) => {
|
|
|
1941
1996
|
if (asJSONb.includes(fields[item.data])) {
|
|
1942
1997
|
astype = 'jsonb'
|
|
1943
1998
|
}
|
|
1999
|
+
if (asArray.includes(fields[item.data])) {
|
|
2000
|
+
astype = 'array'
|
|
2001
|
+
}
|
|
1944
2002
|
if (astype === 'jsonb') {
|
|
1945
2003
|
whereArray.push({
|
|
1946
|
-
field: fields[item.data],
|
|
2004
|
+
field: Util.fieldWithTable(fields[item.data], MYMODEL, true),
|
|
1947
2005
|
option: ' ',
|
|
1948
2006
|
value: ` @> '["${item.search.value}"]'`,
|
|
1949
2007
|
operator: 'AND',
|
|
1950
2008
|
type: 'inline',
|
|
1951
2009
|
})
|
|
2010
|
+
} else if (astype === 'array') {
|
|
2011
|
+
whereArray.push({
|
|
2012
|
+
field: '',
|
|
2013
|
+
option: '',
|
|
2014
|
+
value: ` ${Util.fieldWithTable(fields[item.data], MYMODEL, true)}::text ILIKE '${item.search.value}' `,
|
|
2015
|
+
operator: 'AND',
|
|
2016
|
+
type: 'inline',
|
|
2017
|
+
})
|
|
1952
2018
|
} else {
|
|
1953
2019
|
whereArray.push({
|
|
1954
|
-
field: fields[item.data],
|
|
2020
|
+
field: Util.fieldWithTable(fields[item.data], MYMODEL, true),
|
|
1955
2021
|
option: MYMODEL.options[fields[item.data]],
|
|
1956
2022
|
value: item.search.value,
|
|
1957
2023
|
operator: 'AND',
|
|
@@ -1960,20 +2026,31 @@ zRoute.listDataTable = async (req, res, objData = {}) => {
|
|
|
1960
2026
|
}
|
|
1961
2027
|
}
|
|
1962
2028
|
})
|
|
1963
|
-
|
|
1964
|
-
const
|
|
2029
|
+
|
|
2030
|
+
const orderColumn = fields[body.order[0].column] == 'actionColumn' ? `${table}.id` : fields[body.order[0].column] == 'no' ? `${table}.id` : fields[body.order[0].column] == 'actionColum' ? `${table}.id` : fields[body.order[0].column]
|
|
2031
|
+
let gridData = {
|
|
1965
2032
|
select: select,
|
|
1966
2033
|
table: MYMODEL.table,
|
|
1967
2034
|
whereArray: whereArray,
|
|
1968
2035
|
limit: body.length,
|
|
1969
2036
|
offset: body.start,
|
|
1970
|
-
|
|
1971
|
-
}
|
|
1972
|
-
|
|
1973
|
-
|
|
2037
|
+
order_by: [`${orderColumn} ${body.order[0].dir}`],
|
|
2038
|
+
}
|
|
2039
|
+
let joins = Util.tableWithJoin(MYMODEL)
|
|
2040
|
+
if (joins.length > 0) {
|
|
2041
|
+
gridData.joins = joins
|
|
2042
|
+
}
|
|
2043
|
+
const rows = await connection.results(gridData)
|
|
2044
|
+
let gridCount = {
|
|
2045
|
+
select: `count(${table}.id) as count`,
|
|
1974
2046
|
table: MYMODEL.table,
|
|
1975
2047
|
whereArray: whereArray,
|
|
1976
|
-
}
|
|
2048
|
+
}
|
|
2049
|
+
if (joins.length > 0) {
|
|
2050
|
+
gridCount.joins = joins
|
|
2051
|
+
}
|
|
2052
|
+
const count = await connection.result(gridCount)
|
|
2053
|
+
|
|
1977
2054
|
let datas = []
|
|
1978
2055
|
const zRole = objData.zRole || require('./zRole')
|
|
1979
2056
|
const levels = objData.hasOwnProperty('levels') ? objData.levels : zRole.myLevel(req, res, MYMODEL.table)
|
|
@@ -2014,6 +2091,7 @@ zRoute.listDataTable = async (req, res, objData = {}) => {
|
|
|
2014
2091
|
|
|
2015
2092
|
zRoute.listData = async (req, res, MYMODEL, zRole, actionButtonsFn) => {
|
|
2016
2093
|
const room = res.locals.token || 'aa'
|
|
2094
|
+
const table = MYMODEL.table
|
|
2017
2095
|
try {
|
|
2018
2096
|
actionButtonsFn = actionButtonsFn || function () {}
|
|
2019
2097
|
const relations = await zRoute.relations(req, res, MYMODEL.table)
|
|
@@ -2040,7 +2118,7 @@ zRoute.listData = async (req, res, MYMODEL, zRole, actionButtonsFn) => {
|
|
|
2040
2118
|
if (MYMODEL.widgets[key].name == 'dropdown_checkbox') {
|
|
2041
2119
|
asJSONb.push(key)
|
|
2042
2120
|
}
|
|
2043
|
-
if (MYMODEL.widgets[key].name == 'json_array' || MYMODEL.widgets[key].name == 'array') {
|
|
2121
|
+
if (MYMODEL.widgets[key].name == 'json_array' || MYMODEL.widgets[key].name == 'array' || MYMODEL.widgets[key].name == 'dropzone') {
|
|
2044
2122
|
asArray.push(key)
|
|
2045
2123
|
}
|
|
2046
2124
|
}
|
|
@@ -2048,12 +2126,13 @@ zRoute.listData = async (req, res, MYMODEL, zRole, actionButtonsFn) => {
|
|
|
2048
2126
|
const columns = body.columns
|
|
2049
2127
|
if (MYMODEL.keys.includes('company_id')) {
|
|
2050
2128
|
whereArray.push({
|
|
2051
|
-
field:
|
|
2129
|
+
field: `${table}.company_id`,
|
|
2052
2130
|
option: '=',
|
|
2053
2131
|
value: res.locals.companyId,
|
|
2054
2132
|
operator: 'AND',
|
|
2055
2133
|
})
|
|
2056
2134
|
}
|
|
2135
|
+
|
|
2057
2136
|
columns.forEach(function (item) {
|
|
2058
2137
|
if (item.search.value) {
|
|
2059
2138
|
let astype = 'text'
|
|
@@ -2068,7 +2147,7 @@ zRoute.listData = async (req, res, MYMODEL, zRole, actionButtonsFn) => {
|
|
|
2068
2147
|
}
|
|
2069
2148
|
if (astype === 'jsonb') {
|
|
2070
2149
|
whereArray.push({
|
|
2071
|
-
field: fields[item.data],
|
|
2150
|
+
field: Util.fieldWithTable(fields[item.data], MYMODEL, true),
|
|
2072
2151
|
option: ' ',
|
|
2073
2152
|
value: ` @> '["${item.search.value}"]'`,
|
|
2074
2153
|
operator: 'AND',
|
|
@@ -2078,13 +2157,13 @@ zRoute.listData = async (req, res, MYMODEL, zRole, actionButtonsFn) => {
|
|
|
2078
2157
|
whereArray.push({
|
|
2079
2158
|
field: '',
|
|
2080
2159
|
option: '',
|
|
2081
|
-
value: ` ${fields[item.data]}::text ILIKE '${item.search.value}' `,
|
|
2160
|
+
value: ` ${Util.fieldWithTable(fields[item.data], MYMODEL, true)}::text ILIKE '${item.search.value}' `,
|
|
2082
2161
|
operator: 'AND',
|
|
2083
2162
|
type: 'inline',
|
|
2084
2163
|
})
|
|
2085
2164
|
} else {
|
|
2086
2165
|
whereArray.push({
|
|
2087
|
-
field: fields[item.data],
|
|
2166
|
+
field: Util.fieldWithTable(fields[item.data], MYMODEL, true),
|
|
2088
2167
|
option: MYMODEL.options[fields[item.data]],
|
|
2089
2168
|
value: item.search.value,
|
|
2090
2169
|
operator: 'AND',
|
|
@@ -2093,20 +2172,30 @@ zRoute.listData = async (req, res, MYMODEL, zRole, actionButtonsFn) => {
|
|
|
2093
2172
|
}
|
|
2094
2173
|
}
|
|
2095
2174
|
})
|
|
2096
|
-
|
|
2097
|
-
const
|
|
2175
|
+
|
|
2176
|
+
const orderColumn = fields[body.order[0].column] == 'actionColumn' ? `${table}.id` : fields[body.order[0].column] == 'no' ? `${table}.id` : fields[body.order[0].column] == 'actionColum' ? `${table}.id` : fields[body.order[0].column]
|
|
2177
|
+
let gridData = {
|
|
2098
2178
|
select: select,
|
|
2099
2179
|
table: MYMODEL.table,
|
|
2100
2180
|
whereArray: whereArray,
|
|
2101
2181
|
limit: body.length,
|
|
2102
2182
|
offset: body.start,
|
|
2103
|
-
|
|
2104
|
-
}
|
|
2105
|
-
|
|
2106
|
-
|
|
2183
|
+
order_by: [`${orderColumn} ${body.order[0].dir}`],
|
|
2184
|
+
}
|
|
2185
|
+
let joins = Util.tableWithJoin(MYMODEL)
|
|
2186
|
+
if (joins.length > 0) {
|
|
2187
|
+
gridData.joins = joins
|
|
2188
|
+
}
|
|
2189
|
+
const rows = await connection.results(gridData)
|
|
2190
|
+
let gridCount = {
|
|
2191
|
+
select: `count(${table}.id) as count`,
|
|
2107
2192
|
table: MYMODEL.table,
|
|
2108
2193
|
whereArray: whereArray,
|
|
2109
|
-
}
|
|
2194
|
+
}
|
|
2195
|
+
if (joins.length > 0) {
|
|
2196
|
+
gridCount.joins = joins
|
|
2197
|
+
}
|
|
2198
|
+
const count = await connection.result(gridCount)
|
|
2110
2199
|
let datas = []
|
|
2111
2200
|
const levels = zRole.myLevel(req, res, MYMODEL.table)
|
|
2112
2201
|
rows.forEach(function (row, index) {
|
|
@@ -3216,70 +3305,76 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = '', data = {}) => {
|
|
|
3216
3305
|
let lexicals = []
|
|
3217
3306
|
let mapKey = ''
|
|
3218
3307
|
let hasAttributes = []
|
|
3308
|
+
let joinsFields = []
|
|
3309
|
+
if (MYMODEL.joins) {
|
|
3310
|
+
joinsFields = MYMODEL.joins.list
|
|
3311
|
+
}
|
|
3219
3312
|
for (let key in widgets) {
|
|
3220
|
-
if (
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3225
|
-
|
|
3226
|
-
|
|
3227
|
-
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
// has chains
|
|
3273
|
-
if (widgets[key].name == 'relation') {
|
|
3274
|
-
if (widgets[key].isChain) {
|
|
3275
|
-
if (widgets[key].chains.length) {
|
|
3276
|
-
chainsObj[key] = widgets[key].chains
|
|
3277
|
-
hasChain = true
|
|
3278
|
-
}
|
|
3313
|
+
if (!joinsFields.includes(key)) {
|
|
3314
|
+
if (widgets[key].name == 'datepicker') {
|
|
3315
|
+
hasDatePicker = true
|
|
3316
|
+
} else if (widgets[key].name == 'number') {
|
|
3317
|
+
hasNumber = true
|
|
3318
|
+
} else if (widgets[key].name == 'clockpicker') {
|
|
3319
|
+
hasClockPicker = true
|
|
3320
|
+
} else if (widgets[key].name == 'editor') {
|
|
3321
|
+
hasEditor = true
|
|
3322
|
+
} else if (widgets[key].name == 'ide_editor') {
|
|
3323
|
+
hasIde = true
|
|
3324
|
+
} else if (widgets[key].name == 'switch') {
|
|
3325
|
+
let switchObj = moduleLib.switch(req, res, `#${key}`, widgets[key].fields)
|
|
3326
|
+
scriptForm += switchObj.script
|
|
3327
|
+
headObj.switch = switchObj.head
|
|
3328
|
+
endObj.switch = switchObj.end
|
|
3329
|
+
} else if (widgets[key].name == 'typeahead') {
|
|
3330
|
+
let typeaheadObj = moduleLib.typeahead(req, res, MYMODEL.table, `#${key}Typeahead`)
|
|
3331
|
+
scriptForm += typeaheadObj.script
|
|
3332
|
+
headObj.typeahead = typeaheadObj.head
|
|
3333
|
+
endObj.typeahead = typeaheadObj.end
|
|
3334
|
+
} else if (widgets[key].name == 'location') {
|
|
3335
|
+
let locationObj = moduleLib.location(req, res, key)
|
|
3336
|
+
scriptForm += locationObj.script
|
|
3337
|
+
endObj.location = locationObj.end
|
|
3338
|
+
hasLocation = true
|
|
3339
|
+
mapKey = key
|
|
3340
|
+
} else if (widgets[key].name == 'dragdrop') {
|
|
3341
|
+
let dragdropObj = moduleLib.dragdrop(req, res, key)
|
|
3342
|
+
scriptForm += dragdropObj.script
|
|
3343
|
+
headObj.dragdrop = dragdropObj.head
|
|
3344
|
+
endObj.dragdrop = dragdropObj.end
|
|
3345
|
+
} else if (widgets[key].name == 'datetime') {
|
|
3346
|
+
hasDateTimePicker = true
|
|
3347
|
+
} else if (widgets[key].name == 'table') {
|
|
3348
|
+
hasTable = true
|
|
3349
|
+
hasDateTimePicker = true
|
|
3350
|
+
hasClockPicker = true
|
|
3351
|
+
hasDatePicker = true
|
|
3352
|
+
} else if (widgets[key].name == 'tags') {
|
|
3353
|
+
hasTags = true
|
|
3354
|
+
} else if (widgets[key].name == 'lexical') {
|
|
3355
|
+
let lexicalObj = moduleLib.lexical(req, res, `#${key}`)
|
|
3356
|
+
hasLexical = true
|
|
3357
|
+
headObj.lexical = lexicalObj.head
|
|
3358
|
+
endObj.lexical = lexicalObj.end
|
|
3359
|
+
lexicals.push(key)
|
|
3360
|
+
} else if (widgets[key].name == 'tinymce') {
|
|
3361
|
+
hasTinymce = true
|
|
3362
|
+
} else if (widgets[key].name == 'dropzone') {
|
|
3363
|
+
hasDropzone = true
|
|
3364
|
+
dropzones.push(key)
|
|
3279
3365
|
}
|
|
3280
|
-
//
|
|
3281
|
-
if (widgets[key].
|
|
3282
|
-
|
|
3366
|
+
// has chains
|
|
3367
|
+
if (widgets[key].name == 'relation') {
|
|
3368
|
+
if (widgets[key].isChain) {
|
|
3369
|
+
if (widgets[key].chains.length) {
|
|
3370
|
+
chainsObj[key] = widgets[key].chains
|
|
3371
|
+
hasChain = true
|
|
3372
|
+
}
|
|
3373
|
+
}
|
|
3374
|
+
//relation_all_attributes
|
|
3375
|
+
if (widgets[key].isAttributes) {
|
|
3376
|
+
hasAttributes.push(key)
|
|
3377
|
+
}
|
|
3283
3378
|
}
|
|
3284
3379
|
}
|
|
3285
3380
|
}
|
|
@@ -3517,10 +3612,11 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = '', data = {}) => {
|
|
|
3517
3612
|
});`
|
|
3518
3613
|
|
|
3519
3614
|
for (let keys in widgets) {
|
|
3520
|
-
|
|
3521
|
-
|
|
3522
|
-
|
|
3523
|
-
|
|
3615
|
+
if (!joinsFields.includes(keys)) {
|
|
3616
|
+
let widgetName = widgets[keys].name
|
|
3617
|
+
switch (widgetName) {
|
|
3618
|
+
case 'multi_line_editor':
|
|
3619
|
+
scriptForm += `$(".text-toggle").on("click", function(){
|
|
3524
3620
|
let editorId = $(this).data("id");
|
|
3525
3621
|
$("#"+editorId).attr("type","text");
|
|
3526
3622
|
$("#a_"+editorId).hide();
|
|
@@ -3536,10 +3632,10 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = '', data = {}) => {
|
|
|
3536
3632
|
}
|
|
3537
3633
|
}
|
|
3538
3634
|
});`
|
|
3539
|
-
|
|
3635
|
+
break
|
|
3540
3636
|
|
|
3541
|
-
|
|
3542
|
-
|
|
3637
|
+
case 'dropdown_multi':
|
|
3638
|
+
scriptForm += ` $("#dropdownadd${keys}").on("click", function () {
|
|
3543
3639
|
var val = $("#${keys}").val();
|
|
3544
3640
|
if(val == ""){
|
|
3545
3641
|
alert("Please select data");
|
|
@@ -3550,25 +3646,25 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = '', data = {}) => {
|
|
|
3550
3646
|
$("#dropdownbox${keys}").append(data);
|
|
3551
3647
|
$("#${keys}").val("");
|
|
3552
3648
|
});${Util.newLine}`
|
|
3553
|
-
|
|
3649
|
+
break
|
|
3554
3650
|
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
|
|
3651
|
+
case 'table':
|
|
3652
|
+
let MODEL_TABLE = MYMODELS[MYMODEL.widgets[keys].table] || require(`${dirRoot}/models/${MYMODEL.widgets[keys].table}`)
|
|
3653
|
+
//let MODEL_TABLE_RELATIONS = await zRoute.relations(req, res, MODEL_TABLE.table);
|
|
3654
|
+
//relations[key + "TABLE"]
|
|
3655
|
+
let RELATIONS_MODEL_TABLE = relations && relations.hasOwnProperty(keys + 'TABLE') ? relations[keys + 'TABLE'] : {}
|
|
3656
|
+
let zForm = zRoute.formField(req, res, MODEL_TABLE, RELATIONS_MODEL_TABLE)
|
|
3657
|
+
zRoute.moduleLib(req, res, MODEL_TABLE, RELATIONS_MODEL_TABLE, zForms)
|
|
3658
|
+
let trash = `trash_${keys}_${MYMODEL.widgets[keys].table}`
|
|
3659
|
+
let subname = MYMODEL.table + '_' + keys
|
|
3660
|
+
let relationsWithKeys = relations ? relations[keys] : {}
|
|
3661
|
+
let dropdownMultis = []
|
|
3662
|
+
|
|
3663
|
+
for (let qq in MODEL_TABLE.widgets) {
|
|
3664
|
+
//check if have dropdown_multi
|
|
3665
|
+
if (MODEL_TABLE.widgets[qq].name == 'dropdown_multi') {
|
|
3666
|
+
dropdownMultis.push(qq)
|
|
3667
|
+
scriptForm += `$("#body-${keys}").on("click", "#dropdownadd${qq}",function () {
|
|
3572
3668
|
let elm = $(this).siblings("#${qq}");
|
|
3573
3669
|
var val = elm.val();
|
|
3574
3670
|
if(val == ""){
|
|
@@ -3582,13 +3678,13 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = '', data = {}) => {
|
|
|
3582
3678
|
$(this).parent().parent().find("#dropdownbox${qq}").append(data);
|
|
3583
3679
|
$(this).siblings("#${qq}").val("");
|
|
3584
3680
|
});${Util.newLine}`
|
|
3681
|
+
}
|
|
3585
3682
|
}
|
|
3586
|
-
}
|
|
3587
3683
|
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
3591
|
-
|
|
3684
|
+
scriptForm += `var append${keys} = (increment, callback) => { buildform(increment,'${MYMODEL.table}','${keys}','${JSON.stringify(relationsWithKeys)}', (data) => callback(data)) } `
|
|
3685
|
+
scriptForm += Util.newLine
|
|
3686
|
+
scriptForm += `var append${keys}Max = $('tbody#body-${keys}>tr').length;${Util.newLine}`
|
|
3687
|
+
scriptForm += `function ${keys}Handler(){
|
|
3592
3688
|
var index = $("#body-${keys}>tr").length || 0;
|
|
3593
3689
|
$("#body-${keys}>tr").each(function (index, tr) {
|
|
3594
3690
|
let dataname = $(tr).data("name") || "";
|
|
@@ -3628,12 +3724,12 @@ $("#body-${keys}>tr").each(function (index, tr) {
|
|
|
3628
3724
|
|
|
3629
3725
|
}); ${Util.newLine}};${Util.newLine}`
|
|
3630
3726
|
|
|
3631
|
-
|
|
3727
|
+
scriptForm += ` $('#add${keys}').on('click',function(){
|
|
3632
3728
|
append${keys}(append${keys}Max, (data) => $('#body-${keys}').append(data));
|
|
3633
3729
|
append${keys}Max++;
|
|
3634
3730
|
${keys}Handler();
|
|
3635
3731
|
}); ${Util.newLine}`
|
|
3636
|
-
|
|
3732
|
+
scriptForm += `function set${keys}value(index,myobj) {
|
|
3637
3733
|
for(var key in myobj){
|
|
3638
3734
|
if($(".${subname}_" + key).eq(index).attr("type") == "checkbox" && myobj[key] == 1){
|
|
3639
3735
|
$(".${subname}_" + key).eq(index).prop("checked", true);
|
|
@@ -3666,7 +3762,7 @@ $("#body-${keys}>tr").each(function (index, tr) {
|
|
|
3666
3762
|
}
|
|
3667
3763
|
`
|
|
3668
3764
|
|
|
3669
|
-
|
|
3765
|
+
scriptForm += `function build${keys}form(index, myobj) {
|
|
3670
3766
|
append${keys}(index, (data) => {
|
|
3671
3767
|
$("#body-${keys}").append(data);
|
|
3672
3768
|
${keys}Handler();
|
|
@@ -3678,24 +3774,24 @@ $("#body-${keys}>tr").each(function (index, tr) {
|
|
|
3678
3774
|
}
|
|
3679
3775
|
`
|
|
3680
3776
|
|
|
3681
|
-
|
|
3777
|
+
/* scriptForm += ` $(function () {
|
|
3682
3778
|
var ${keys} = $("#body-${keys}").data("value") ? $("#body-${keys}").data("value") : [];
|
|
3683
3779
|
${keys}.forEach(function (myobj, index) {
|
|
3684
3780
|
build${keys}form(index, myobj);
|
|
3685
3781
|
});
|
|
3686
3782
|
});${Util.newLine}`*/
|
|
3687
3783
|
|
|
3688
|
-
|
|
3784
|
+
break
|
|
3689
3785
|
|
|
3690
|
-
|
|
3691
|
-
|
|
3692
|
-
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
|
-
|
|
3696
|
-
|
|
3697
|
-
|
|
3698
|
-
|
|
3786
|
+
case 'ide_editor':
|
|
3787
|
+
//var additionalScripts = `if (!!session.$worker) {session.$worker.send("setOptions", [{"esversion": 9,"esnext": false,}]);}`;
|
|
3788
|
+
let script_annotaions = ''
|
|
3789
|
+
let script_enabled = ''
|
|
3790
|
+
let script_looping = ''
|
|
3791
|
+
if (widgets[keys].language == 'javascript') {
|
|
3792
|
+
script_annotaions = `editor_${keys}.session.setOption("useWorker", true);`
|
|
3793
|
+
script_enabled = `editor_${keys}.session.setOption("useWorker", true);`
|
|
3794
|
+
script_looping = `
|
|
3699
3795
|
var errors = editor_${keys}.getSession().getAnnotations().filter(a=>a.type==='error');
|
|
3700
3796
|
arr = [];
|
|
3701
3797
|
errors.forEach(function(erItem) {
|
|
@@ -3707,8 +3803,8 @@ ${keys}.forEach(function (myobj, index) {
|
|
|
3707
3803
|
editor_${keys}.getSession().setAnnotations(arr);
|
|
3708
3804
|
editor_${keys}.session.setOption("useWorker", true);
|
|
3709
3805
|
`
|
|
3710
|
-
|
|
3711
|
-
|
|
3806
|
+
}
|
|
3807
|
+
scriptForm += `var editor_${keys} = ace.edit("editor_${keys}");
|
|
3712
3808
|
editor_${keys}.getSession().setMode("ace/mode/${widgets[keys].language}");
|
|
3713
3809
|
editor_${keys}.setValue(ace_value(ide_editor_${keys}));
|
|
3714
3810
|
$("#${keys}").text(ace_value(ide_editor_${keys}));
|
|
@@ -3719,7 +3815,8 @@ ${keys}.forEach(function (myobj, index) {
|
|
|
3719
3815
|
});
|
|
3720
3816
|
`
|
|
3721
3817
|
|
|
3722
|
-
|
|
3818
|
+
break
|
|
3819
|
+
}
|
|
3723
3820
|
}
|
|
3724
3821
|
}
|
|
3725
3822
|
|