zet-lib 1.2.36 → 1.2.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/zRoute.js +61 -7
- package/package.json +1 -1
package/lib/zRoute.js
CHANGED
|
@@ -1348,6 +1348,25 @@ zRoute.excel = async (req, res, MYMODEL, fields, rows, callback, fileName) => {
|
|
|
1348
1348
|
worksheet.getCell('A3').font = bold
|
|
1349
1349
|
worksheet.getCell('A3').alignment = center
|
|
1350
1350
|
|
|
1351
|
+
let aliasRelations = []
|
|
1352
|
+
let selectRelations = ''
|
|
1353
|
+
let aliasResults = {}
|
|
1354
|
+
for (let key in MYMODEL.widgets) {
|
|
1355
|
+
if (MYMODEL.widgets[key].name == 'relation' || MYMODEL.widgets[key].name == 'typeahead') {
|
|
1356
|
+
if (MYMODEL.widgets[key].import_field && MYMODEL.widgets[key].import_field != 'id') {
|
|
1357
|
+
aliasResults[key] = Util.arrayToObject(
|
|
1358
|
+
await connection.results({
|
|
1359
|
+
select: `id, ${MYMODEL.widgets[key].import_field}`,
|
|
1360
|
+
table: MYMODEL.widgets[key].table,
|
|
1361
|
+
}),
|
|
1362
|
+
'id'
|
|
1363
|
+
)
|
|
1364
|
+
//console.log(aliasResults[key])
|
|
1365
|
+
aliasRelations.push(key)
|
|
1366
|
+
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} `
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1351
1370
|
//check relations
|
|
1352
1371
|
let isRelations = false
|
|
1353
1372
|
let relations = [],
|
|
@@ -1365,7 +1384,7 @@ zRoute.excel = async (req, res, MYMODEL, fields, rows, callback, fileName) => {
|
|
|
1365
1384
|
tableObj[key] = widget.fields
|
|
1366
1385
|
} else if (widget.name == 'switch') {
|
|
1367
1386
|
tableObj[key] = widget.fields
|
|
1368
|
-
} else if (widget.name == 'relation') {
|
|
1387
|
+
} else if (widget.name == 'relation' || widget.name == 'typeahead') {
|
|
1369
1388
|
var rowsarr = await connection.results({
|
|
1370
1389
|
table: widget.table,
|
|
1371
1390
|
select: widget.fields[0] + ',' + widget.fields[1] + ' as zname ',
|
|
@@ -1422,7 +1441,6 @@ zRoute.excel = async (req, res, MYMODEL, fields, rows, callback, fileName) => {
|
|
|
1422
1441
|
} else if (widgets.hasOwnProperty(field) && widgets[field].name == 'datetime') {
|
|
1423
1442
|
result[field] = Util.dateOriginal(result[field])
|
|
1424
1443
|
worksheet.getCell(sequence[i] + start).numFmt = '@'
|
|
1425
|
-
//console.log(result[field])
|
|
1426
1444
|
if (isRaws) {
|
|
1427
1445
|
t = !callback(result, field) ? Util.timeSql(result[field]) : callback(result, field)
|
|
1428
1446
|
} else {
|
|
@@ -1441,13 +1459,25 @@ zRoute.excel = async (req, res, MYMODEL, fields, rows, callback, fileName) => {
|
|
|
1441
1459
|
} else {
|
|
1442
1460
|
t = !callback(result, field) ? tableObj[field][result[field]] || '' : callback(result, field)
|
|
1443
1461
|
}
|
|
1444
|
-
} else if (widgets.hasOwnProperty(field) && widgets[field].name == 'relation') {
|
|
1462
|
+
} else if ((widgets.hasOwnProperty(field) && widgets[field].name == 'relation') || (widgets.hasOwnProperty(field) && widgets[field].name == 'typeahead')) {
|
|
1463
|
+
let myvalue = ''
|
|
1464
|
+
if (widgets[field].import_field && widgets[field].import_field != 'id') {
|
|
1465
|
+
/*console.log(result[field])
|
|
1466
|
+
console.log(widgets[field].import_field)
|
|
1467
|
+
console.log([result[field]][widgets[field].import_field])*/
|
|
1468
|
+
if (isNaN(result[field])) {
|
|
1469
|
+
myvalue = result[field]
|
|
1470
|
+
} else {
|
|
1471
|
+
myvalue = result[field] ? aliasResults[field][result[field]][widgets[field].import_field] : ''
|
|
1472
|
+
result[field] = aliasResults[field][result[field]][widgets[field].import_field]
|
|
1473
|
+
}
|
|
1474
|
+
} else {
|
|
1475
|
+
myvalue = result[field] ? relations[field][result[field]].zname : ''
|
|
1476
|
+
}
|
|
1445
1477
|
if (isRaws) {
|
|
1446
1478
|
t = !callback(result, field) ? result[field] : callback(result, field)
|
|
1447
1479
|
} else {
|
|
1448
|
-
|
|
1449
|
-
t = !callback(result, field) ? relations[field][result[field]].zname || '' : callback(result, field)
|
|
1450
|
-
}
|
|
1480
|
+
t = !callback(result, field) ? myvalue : callback(result, field)
|
|
1451
1481
|
}
|
|
1452
1482
|
} else {
|
|
1453
1483
|
t = !callback(result, field) ? result[field] : callback(result, field)
|
|
@@ -3399,6 +3429,18 @@ zRoute.import = async (req, res, MYMODEL) => {
|
|
|
3399
3429
|
datas: datas,
|
|
3400
3430
|
}
|
|
3401
3431
|
let json = Util.jsonSuccess(LANGUAGE['import_success'])
|
|
3432
|
+
let aliasRelations = []
|
|
3433
|
+
let selectRelations = ''
|
|
3434
|
+
for (let key in MYMODEL.widgets) {
|
|
3435
|
+
if (MYMODEL.widgets[key]) {
|
|
3436
|
+
if (MYMODEL.widgets[key].name == 'relation' || MYMODEL.widgets[key].name == 'typeahead') {
|
|
3437
|
+
if (MYMODEL.widgets[key].import_field && MYMODEL.widgets[key].import_field != 'id') {
|
|
3438
|
+
aliasRelations.push(key)
|
|
3439
|
+
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} `
|
|
3440
|
+
}
|
|
3441
|
+
}
|
|
3442
|
+
}
|
|
3443
|
+
}
|
|
3402
3444
|
try {
|
|
3403
3445
|
if (Object.keys(req.files).length == 0) {
|
|
3404
3446
|
return res.json(Util.flashError(LANGUAGE['import_no_file']))
|
|
@@ -3459,7 +3501,19 @@ zRoute.import = async (req, res, MYMODEL) => {
|
|
|
3459
3501
|
for (var prop in keys) {
|
|
3460
3502
|
let value = result[i][prop]
|
|
3461
3503
|
if (value) {
|
|
3462
|
-
if (
|
|
3504
|
+
if (aliasRelations.includes(keys[prop])) {
|
|
3505
|
+
let result_alias = await connection.result({
|
|
3506
|
+
select: `id, ${MYMODEL.widgets[keys[prop]].import_field} `,
|
|
3507
|
+
table: MYMODEL.widgets[keys[prop]].table,
|
|
3508
|
+
whereArray: [
|
|
3509
|
+
//{field:"your_field",option:"=>",value:"12",operator:"AND",type:"text,json,date"}
|
|
3510
|
+
{ field: MYMODEL.widgets[keys[prop]].import_field, option: 'ILIKE', value: value },
|
|
3511
|
+
],
|
|
3512
|
+
})
|
|
3513
|
+
if (result_alias.id) {
|
|
3514
|
+
data[keys[prop]] = result_alias.id
|
|
3515
|
+
}
|
|
3516
|
+
} else if (MYMODEL.widgets[keys[prop]].name === 'integer') {
|
|
3463
3517
|
data[keys[prop]] = parseInt(value) || null
|
|
3464
3518
|
} else if (MYMODEL.widgets[keys[prop]].name === 'virtual') {
|
|
3465
3519
|
//empty
|