zet-lib 1.2.36 → 1.2.37
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 +67 -6
- 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,32 @@ 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 = relations[field][result[field]].zname
|
|
1476
|
+
}
|
|
1445
1477
|
if (isRaws) {
|
|
1446
1478
|
t = !callback(result, field) ? result[field] : callback(result, field)
|
|
1447
1479
|
} else {
|
|
1480
|
+
t = !callback(result, field) ? myvalue : callback(result, field)
|
|
1481
|
+
/*
|
|
1448
1482
|
if (relations[field][result[field]]) {
|
|
1449
|
-
|
|
1450
|
-
|
|
1483
|
+
console.log('relation fieldssssss')
|
|
1484
|
+
t = !callback(result, field) ? myvalue : callback(result, field)
|
|
1485
|
+
} else {
|
|
1486
|
+
t = myvalue;
|
|
1487
|
+
}*/
|
|
1451
1488
|
}
|
|
1452
1489
|
} else {
|
|
1453
1490
|
t = !callback(result, field) ? result[field] : callback(result, field)
|
|
@@ -3399,6 +3436,18 @@ zRoute.import = async (req, res, MYMODEL) => {
|
|
|
3399
3436
|
datas: datas,
|
|
3400
3437
|
}
|
|
3401
3438
|
let json = Util.jsonSuccess(LANGUAGE['import_success'])
|
|
3439
|
+
let aliasRelations = []
|
|
3440
|
+
let selectRelations = ''
|
|
3441
|
+
for (let key in MYMODEL.widgets) {
|
|
3442
|
+
if (MYMODEL.widgets[key]) {
|
|
3443
|
+
if (MYMODEL.widgets[key].name == 'relation' || MYMODEL.widgets[key].name == 'typeahead') {
|
|
3444
|
+
if (MYMODEL.widgets[key].import_field && MYMODEL.widgets[key].import_field != 'id') {
|
|
3445
|
+
aliasRelations.push(key)
|
|
3446
|
+
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} `
|
|
3447
|
+
}
|
|
3448
|
+
}
|
|
3449
|
+
}
|
|
3450
|
+
}
|
|
3402
3451
|
try {
|
|
3403
3452
|
if (Object.keys(req.files).length == 0) {
|
|
3404
3453
|
return res.json(Util.flashError(LANGUAGE['import_no_file']))
|
|
@@ -3459,7 +3508,19 @@ zRoute.import = async (req, res, MYMODEL) => {
|
|
|
3459
3508
|
for (var prop in keys) {
|
|
3460
3509
|
let value = result[i][prop]
|
|
3461
3510
|
if (value) {
|
|
3462
|
-
if (
|
|
3511
|
+
if (aliasRelations.includes(keys[prop])) {
|
|
3512
|
+
let result_alias = await connection.result({
|
|
3513
|
+
select: `id, ${MYMODEL.widgets[keys[prop]].import_field} `,
|
|
3514
|
+
table: MYMODEL.widgets[keys[prop]].table,
|
|
3515
|
+
whereArray: [
|
|
3516
|
+
//{field:"your_field",option:"=>",value:"12",operator:"AND",type:"text,json,date"}
|
|
3517
|
+
{ field: MYMODEL.widgets[keys[prop]].import_field, option: 'ILIKE', value: value },
|
|
3518
|
+
],
|
|
3519
|
+
})
|
|
3520
|
+
if (result_alias.id) {
|
|
3521
|
+
data[keys[prop]] = result_alias.id
|
|
3522
|
+
}
|
|
3523
|
+
} else if (MYMODEL.widgets[keys[prop]].name === 'integer') {
|
|
3463
3524
|
data[keys[prop]] = parseInt(value) || null
|
|
3464
3525
|
} else if (MYMODEL.widgets[keys[prop]].name === 'virtual') {
|
|
3465
3526
|
//empty
|