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.
Files changed (2) hide show
  1. package/lib/zRoute.js +67 -6
  2. 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
- t = !callback(result, field) ? relations[field][result[field]].zname || '' : callback(result, field)
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 (MYMODEL.widgets[keys[prop]].name === 'integer') {
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zet-lib",
3
- "version": "1.2.36",
3
+ "version": "1.2.37",
4
4
  "description": "zet is a library that part of zet generator.",
5
5
  "engines": {
6
6
  "node": ">=18"