@xuda.io/xuda-worker-bundle-min 1.3.143 → 1.3.145
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/index.js +815 -406
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -5888,29 +5888,7 @@ func.utils.alerts.invoke = async function (
|
|
|
5888
5888
|
|
|
5889
5889
|
return;
|
|
5890
5890
|
}
|
|
5891
|
-
// if (!alert_type) {
|
|
5892
|
-
// // none alert
|
|
5893
|
-
// ALERT_IS_ACTIVE = false;
|
|
5894
|
-
// return;
|
|
5895
|
-
// }
|
|
5896
5891
|
|
|
5897
|
-
// if (_ds) {
|
|
5898
|
-
// if (alert_type === "error") {
|
|
5899
|
-
// _ds.error = title + " " + sourceP;
|
|
5900
|
-
// func.utils.debug_report(
|
|
5901
|
-
// SESSION_ID,
|
|
5902
|
-
// "func.datasource.callback",
|
|
5903
|
-
// title + " " + sourceP,
|
|
5904
|
-
// "E",
|
|
5905
|
-
// "",
|
|
5906
|
-
// _ds
|
|
5907
|
-
// );
|
|
5908
|
-
// }
|
|
5909
|
-
// // if (typeof _session.DS_GLB[dsSessionP].import_rowno !== "undefined") {
|
|
5910
|
-
// // ALERT_IS_ACTIVE = false;
|
|
5911
|
-
// // return;
|
|
5912
|
-
// // }
|
|
5913
|
-
// }
|
|
5914
5892
|
func.utils.alerts.execute(
|
|
5915
5893
|
SESSION_ID,
|
|
5916
5894
|
alert_type,
|
|
@@ -5932,6 +5910,9 @@ func.utils.alerts.execute = function (
|
|
|
5932
5910
|
) {
|
|
5933
5911
|
if (!UI_FRAMEWORK_INSTALLED) {
|
|
5934
5912
|
ALERT_IS_ACTIVE = false;
|
|
5913
|
+
if (alertDisplay !== "console") {
|
|
5914
|
+
return alert(title + "\n \n" + message);
|
|
5915
|
+
}
|
|
5935
5916
|
return console[alert_type === "error" ? "error" : "log"](
|
|
5936
5917
|
alert_type,
|
|
5937
5918
|
title,
|
|
@@ -8306,434 +8287,862 @@ func.expression.get = async function (
|
|
|
8306
8287
|
js_script_callback,
|
|
8307
8288
|
jobNo
|
|
8308
8289
|
) {
|
|
8309
|
-
|
|
8310
|
-
|
|
8311
|
-
|
|
8312
|
-
|
|
8290
|
+
class xu_class {
|
|
8291
|
+
async get() {
|
|
8292
|
+
var ret;
|
|
8293
|
+
var fields = {};
|
|
8294
|
+
var error;
|
|
8295
|
+
var warning;
|
|
8313
8296
|
|
|
8314
|
-
|
|
8315
|
-
|
|
8316
|
-
|
|
8317
|
-
|
|
8318
|
-
//==============================
|
|
8319
|
-
// check if str and convert
|
|
8320
|
-
|
|
8321
|
-
// if (typeof valP === "string") {
|
|
8322
|
-
// ret = valP;
|
|
8323
|
-
// } else {
|
|
8324
|
-
// ret = valP.toString(); //_.toString(valP);
|
|
8325
|
-
// }
|
|
8326
|
-
|
|
8327
|
-
if (valP === null) {
|
|
8328
|
-
ret = "";
|
|
8329
|
-
} else {
|
|
8330
|
-
switch (typeof valP) {
|
|
8331
|
-
case "string":
|
|
8332
|
-
ret = valP;
|
|
8333
|
-
break;
|
|
8297
|
+
function evalJson(text) {
|
|
8298
|
+
return eval("(" + text + ")");
|
|
8299
|
+
}
|
|
8334
8300
|
|
|
8335
|
-
|
|
8301
|
+
if (valP === null) {
|
|
8336
8302
|
ret = "";
|
|
8337
|
-
|
|
8303
|
+
} else {
|
|
8304
|
+
switch (typeof valP) {
|
|
8305
|
+
case "string":
|
|
8306
|
+
ret = valP;
|
|
8307
|
+
break;
|
|
8338
8308
|
|
|
8339
|
-
|
|
8340
|
-
|
|
8341
|
-
|
|
8309
|
+
case "undefined":
|
|
8310
|
+
ret = "";
|
|
8311
|
+
break;
|
|
8342
8312
|
|
|
8343
|
-
|
|
8344
|
-
|
|
8345
|
-
|
|
8346
|
-
}
|
|
8347
|
-
}
|
|
8313
|
+
case "boolean":
|
|
8314
|
+
ret = valP ? "Y" : "N";
|
|
8315
|
+
break;
|
|
8348
8316
|
|
|
8349
|
-
|
|
8350
|
-
|
|
8351
|
-
|
|
8352
|
-
for (const [key, val] of Object.entries(fields)) {
|
|
8353
|
-
if (typeof val === "string")
|
|
8354
|
-
ret = ret.replace('"' + val + '"', val.replace(/"/gi, ""));
|
|
8355
|
-
}
|
|
8356
|
-
return ret;
|
|
8357
|
-
};
|
|
8358
|
-
if (sourceP === "update" || sourceP === "javascript") {
|
|
8359
|
-
if (typeof ret === "string") ret = replace_quotes(ret);
|
|
8360
|
-
}
|
|
8361
|
-
const log_error = function () {
|
|
8362
|
-
if (SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP]) {
|
|
8363
|
-
func.utils.debug.log(
|
|
8364
|
-
SESSION_ID,
|
|
8365
|
-
SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId,
|
|
8366
|
-
{
|
|
8367
|
-
module: "expression",
|
|
8368
|
-
action: sourceP,
|
|
8369
|
-
source: calling_fieldIdP,
|
|
8370
|
-
prop: ret,
|
|
8371
|
-
details: ret,
|
|
8372
|
-
result: ret,
|
|
8373
|
-
error: error,
|
|
8374
|
-
warning: warning,
|
|
8375
|
-
fields: null,
|
|
8376
|
-
type: "exp",
|
|
8377
|
-
prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
|
|
8378
|
-
debug_info: debug_infoP,
|
|
8379
|
-
}
|
|
8380
|
-
);
|
|
8381
|
-
}
|
|
8382
|
-
};
|
|
8383
|
-
if (error) log_error();
|
|
8384
|
-
// if (error || warning) log_error();
|
|
8385
|
-
return {
|
|
8386
|
-
result: ret,
|
|
8387
|
-
fields: fields,
|
|
8388
|
-
res: res,
|
|
8389
|
-
explain: result,
|
|
8390
|
-
error: error,
|
|
8391
|
-
warning: warning,
|
|
8392
|
-
req: valP,
|
|
8393
|
-
var_error_found: var_error_found,
|
|
8394
|
-
};
|
|
8395
|
-
};
|
|
8396
|
-
const variable_not_exist = async function () {
|
|
8397
|
-
try {
|
|
8398
|
-
if (sourceP !== "arguments") {
|
|
8399
|
-
if (ret && ret.substr(0, 6) === "_DATE_") {
|
|
8400
|
-
ret = ret.substr(6);
|
|
8401
|
-
} else if (
|
|
8402
|
-
(ret &&
|
|
8403
|
-
ret.length === 10 &&
|
|
8404
|
-
ret.substr(4, 1) === "-" &&
|
|
8405
|
-
ret.substr(7, 1) === "-") ||
|
|
8406
|
-
ret === "self" // bypass eval for date 2017-03-22
|
|
8407
|
-
) {
|
|
8408
|
-
ret = ret;
|
|
8409
|
-
} else {
|
|
8410
|
-
// ret = secure_eval(ret); //eval(ret);
|
|
8411
|
-
ret = await func.expression.secure_eval(
|
|
8412
|
-
SESSION_ID,
|
|
8413
|
-
sourceP,
|
|
8414
|
-
ret,
|
|
8415
|
-
jobNo,
|
|
8416
|
-
dsSessionP,
|
|
8417
|
-
js_script_callback
|
|
8418
|
-
);
|
|
8419
|
-
}
|
|
8420
|
-
// console.log("AFTER OK", ret)
|
|
8421
|
-
return end_results();
|
|
8422
|
-
} else {
|
|
8423
|
-
// do eval for arithmetic vals
|
|
8424
|
-
ret = ret.replace(/_NULL/gi, "");
|
|
8425
|
-
return end_results();
|
|
8426
|
-
}
|
|
8427
|
-
} catch (err) {
|
|
8428
|
-
// console.error(err);
|
|
8429
|
-
return end_results();
|
|
8430
|
-
}
|
|
8431
|
-
};
|
|
8432
|
-
if (!func.expression.validate_variables(valP)) {
|
|
8433
|
-
return await variable_not_exist();
|
|
8434
|
-
}
|
|
8435
|
-
var split = [];
|
|
8436
|
-
var var_Arr = [];
|
|
8437
|
-
split = func.expression.parse(ret);
|
|
8438
|
-
for await (const [arr_key, val] of Object.entries(split)) {
|
|
8439
|
-
// run each field
|
|
8440
|
-
const key = Number(arr_key);
|
|
8441
|
-
var_Arr[key] = {};
|
|
8442
|
-
var_Arr[key].value = val.value;
|
|
8443
|
-
//--------------
|
|
8444
|
-
const replace_value_in_string = function (retP, fieldIdP) {
|
|
8445
|
-
if (
|
|
8446
|
-
iterate_info?.iterator_key === fieldIdP ||
|
|
8447
|
-
iterate_info?.iterator_val === fieldIdP
|
|
8448
|
-
) {
|
|
8449
|
-
if (iterate_info.iterator_key === fieldIdP) {
|
|
8450
|
-
retP.value = iterate_info._key;
|
|
8451
|
-
}
|
|
8452
|
-
if (iterate_info.iterator_val === fieldIdP) {
|
|
8453
|
-
retP.value = iterate_info._val;
|
|
8317
|
+
default:
|
|
8318
|
+
ret = valP.toString();
|
|
8319
|
+
break;
|
|
8454
8320
|
}
|
|
8455
8321
|
}
|
|
8456
8322
|
|
|
8457
|
-
|
|
8458
|
-
|
|
8459
|
-
|
|
8460
|
-
|
|
8461
|
-
|
|
8462
|
-
|
|
8463
|
-
|
|
8464
|
-
|
|
8323
|
+
ret = ret.replace(/\&/g, "&");
|
|
8324
|
+
const end_results = function () {
|
|
8325
|
+
const replace_quotes = function (ret) {
|
|
8326
|
+
for (const [key, val] of Object.entries(fields)) {
|
|
8327
|
+
if (typeof val === "string")
|
|
8328
|
+
ret = ret.replace('"' + val + '"', val.replace(/"/gi, ""));
|
|
8329
|
+
}
|
|
8330
|
+
return ret;
|
|
8331
|
+
};
|
|
8332
|
+
if (sourceP === "update" || sourceP === "javascript") {
|
|
8333
|
+
if (typeof ret === "string") ret = replace_quotes(ret);
|
|
8334
|
+
}
|
|
8335
|
+
const log_error = function () {
|
|
8336
|
+
if (SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP]) {
|
|
8337
|
+
func.utils.debug.log(
|
|
8338
|
+
SESSION_ID,
|
|
8339
|
+
SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId,
|
|
8340
|
+
{
|
|
8341
|
+
module: "expression",
|
|
8342
|
+
action: sourceP,
|
|
8343
|
+
source: calling_fieldIdP,
|
|
8344
|
+
prop: ret,
|
|
8345
|
+
details: ret,
|
|
8346
|
+
result: ret,
|
|
8347
|
+
error: error,
|
|
8348
|
+
warning: warning,
|
|
8349
|
+
fields: null,
|
|
8350
|
+
type: "exp",
|
|
8351
|
+
prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
|
|
8352
|
+
debug_info: debug_infoP,
|
|
8353
|
+
}
|
|
8354
|
+
);
|
|
8465
8355
|
}
|
|
8356
|
+
};
|
|
8357
|
+
if (error) log_error();
|
|
8358
|
+
// if (error || warning) log_error();
|
|
8359
|
+
return {
|
|
8360
|
+
result: ret,
|
|
8361
|
+
fields: fields,
|
|
8362
|
+
res: res,
|
|
8363
|
+
explain: result,
|
|
8364
|
+
error: error,
|
|
8365
|
+
warning: warning,
|
|
8366
|
+
req: valP,
|
|
8367
|
+
var_error_found: var_error_found,
|
|
8368
|
+
};
|
|
8369
|
+
};
|
|
8370
|
+
const variable_not_exist = async function () {
|
|
8371
|
+
try {
|
|
8372
|
+
if (sourceP !== "arguments") {
|
|
8373
|
+
if (ret && ret.substr(0, 6) === "_DATE_") {
|
|
8374
|
+
ret = ret.substr(6);
|
|
8375
|
+
} else if (
|
|
8376
|
+
(ret &&
|
|
8377
|
+
ret.length === 10 &&
|
|
8378
|
+
ret.substr(4, 1) === "-" &&
|
|
8379
|
+
ret.substr(7, 1) === "-") ||
|
|
8380
|
+
ret === "self" // bypass eval for date 2017-03-22
|
|
8381
|
+
) {
|
|
8382
|
+
ret = ret;
|
|
8383
|
+
} else {
|
|
8384
|
+
// ret = secure_eval(ret); //eval(ret);
|
|
8385
|
+
ret = await func.expression.secure_eval(
|
|
8386
|
+
SESSION_ID,
|
|
8387
|
+
sourceP,
|
|
8388
|
+
ret,
|
|
8389
|
+
jobNo,
|
|
8390
|
+
dsSessionP,
|
|
8391
|
+
js_script_callback
|
|
8392
|
+
);
|
|
8393
|
+
}
|
|
8394
|
+
// console.log("AFTER OK", ret)
|
|
8395
|
+
return end_results();
|
|
8396
|
+
} else {
|
|
8397
|
+
// do eval for arithmetic vals
|
|
8398
|
+
ret = ret.replace(/_NULL/gi, "");
|
|
8399
|
+
return end_results();
|
|
8400
|
+
}
|
|
8401
|
+
} catch (err) {
|
|
8402
|
+
// console.error(err);
|
|
8403
|
+
return end_results();
|
|
8466
8404
|
}
|
|
8467
8405
|
};
|
|
8468
|
-
|
|
8469
|
-
|
|
8470
|
-
|
|
8471
|
-
|
|
8472
|
-
|
|
8473
|
-
|
|
8474
|
-
|
|
8475
|
-
|
|
8476
|
-
|
|
8477
|
-
|
|
8478
|
-
|
|
8479
|
-
|
|
8480
|
-
|
|
8481
|
-
//check for split situation: @objB[@var].property 1: @objB[ 2:@var].property
|
|
8406
|
+
if (!func.expression.validate_variables(valP)) {
|
|
8407
|
+
return await variable_not_exist();
|
|
8408
|
+
}
|
|
8409
|
+
var split = [];
|
|
8410
|
+
var var_Arr = [];
|
|
8411
|
+
split = func.expression.parse(ret);
|
|
8412
|
+
for await (const [arr_key, val] of Object.entries(split)) {
|
|
8413
|
+
// run each field
|
|
8414
|
+
const key = Number(arr_key);
|
|
8415
|
+
var_Arr[key] = {};
|
|
8416
|
+
var_Arr[key].value = val.value;
|
|
8417
|
+
//--------------
|
|
8418
|
+
const replace_value_in_string = function (retP, fieldIdP) {
|
|
8482
8419
|
if (
|
|
8483
|
-
|
|
8484
|
-
|
|
8485
|
-
val.value.substr(0, 1) === "@"
|
|
8420
|
+
iterate_info?.iterator_key === fieldIdP ||
|
|
8421
|
+
iterate_info?.iterator_val === fieldIdP
|
|
8486
8422
|
) {
|
|
8487
|
-
|
|
8488
|
-
|
|
8489
|
-
var_Arr[key].value = prevData[data]; // @objB[@var]
|
|
8490
|
-
if (val.value.indexOf(".") > -1) {
|
|
8491
|
-
property2 = func.expression.get_property(val.value).property2; //val.value.substr(val.value.indexOf(".") + 1, val.value.length); // get .
|
|
8492
|
-
if (prevData[data]) set_value(prevData[data][property2]);
|
|
8493
|
-
// var_Arr[key].value = prevData[data][property2]; //@objB[@var].property
|
|
8423
|
+
if (iterate_info.iterator_key === fieldIdP) {
|
|
8424
|
+
retP.value = iterate_info._key;
|
|
8494
8425
|
}
|
|
8495
|
-
|
|
8496
|
-
|
|
8497
|
-
|
|
8498
|
-
|
|
8499
|
-
|
|
8500
|
-
|
|
8501
|
-
|
|
8502
|
-
|
|
8426
|
+
if (iterate_info.iterator_val === fieldIdP) {
|
|
8427
|
+
retP.value = iterate_info._val;
|
|
8428
|
+
}
|
|
8429
|
+
}
|
|
8430
|
+
|
|
8431
|
+
const set_value = function (valP) {
|
|
8432
|
+
if (typeof valP !== "undefined") {
|
|
8433
|
+
var_Arr[key].value = valP;
|
|
8434
|
+
if (typeof valP === "string") var_Arr[key].type = "string";
|
|
8435
|
+
} else {
|
|
8436
|
+
if (retP.type === "object") {
|
|
8437
|
+
var_Arr[key].value = "";
|
|
8438
|
+
var_Arr[key].type = "string";
|
|
8503
8439
|
}
|
|
8504
8440
|
}
|
|
8505
|
-
|
|
8441
|
+
};
|
|
8442
|
+
|
|
8443
|
+
if (sourceP === "exp" && retP.type !== "exp") {
|
|
8444
|
+
var_Arr[key].type = retP.type;
|
|
8445
|
+
return;
|
|
8446
|
+
}
|
|
8447
|
+
if (typeof retP.value !== "undefined") {
|
|
8448
|
+
var_Arr[key].type = retP.type;
|
|
8449
|
+
var_Arr[key].value = retP.value;
|
|
8450
|
+
if ((val.value.indexOf("[") > -1) | (val.value.indexOf(".") > -1)) {
|
|
8451
|
+
//get values from array '@var==="sss" && @var_B==="sss" && @obj.property===5 && @objA["value"]===123 | @objB["value"].property===1234'
|
|
8452
|
+
var data = retP.prop;
|
|
8453
|
+
if (retP.type === "object") data = retP.value;
|
|
8454
|
+
var property1, property2;
|
|
8455
|
+
//check for split situation: @objB[@var].property 1: @objB[ 2:@var].property
|
|
8506
8456
|
if (
|
|
8507
|
-
|
|
8457
|
+
val.value.indexOf("[") === -1 &&
|
|
8458
|
+
val.value.indexOf("]") > -1 &&
|
|
8459
|
+
val.value.substr(0, 1) === "@"
|
|
8508
8460
|
) {
|
|
8509
|
-
|
|
8461
|
+
//check situation 2
|
|
8462
|
+
var prevData = var_Arr[key - 1].value;
|
|
8463
|
+
var_Arr[key].value = prevData[data]; // @objB[@var]
|
|
8464
|
+
if (val.value.indexOf(".") > -1) {
|
|
8465
|
+
property2 = func.expression.get_property(val.value).property2; //val.value.substr(val.value.indexOf(".") + 1, val.value.length); // get .
|
|
8466
|
+
if (prevData[data]) set_value(prevData[data][property2]);
|
|
8467
|
+
// var_Arr[key].value = prevData[data][property2]; //@objB[@var].property
|
|
8468
|
+
}
|
|
8469
|
+
delete var_Arr[key - 1];
|
|
8470
|
+
} else {
|
|
8471
|
+
property1 = func.expression.get_property(val.value).property1;
|
|
8472
|
+
property2 = func.expression.get_property(val.value).property2;
|
|
8473
|
+
if (property1) {
|
|
8474
|
+
var_Arr[key].value = data[property1]; // @var["value"] or @var.property
|
|
8475
|
+
if (property2) {
|
|
8476
|
+
if (data[property1]) set_value(data[property1][property2]);
|
|
8477
|
+
}
|
|
8478
|
+
}
|
|
8479
|
+
if (property2 && !property1) {
|
|
8480
|
+
if (
|
|
8481
|
+
data //data[property2]
|
|
8482
|
+
) {
|
|
8483
|
+
set_value(data[property2]);
|
|
8484
|
+
}
|
|
8485
|
+
}
|
|
8510
8486
|
}
|
|
8487
|
+
fields[fieldIdP] = var_Arr[key].value; // added 051017 to allow @SYS_GLOBAL_OBJ_WIDGET_INFO.doc_id
|
|
8488
|
+
var_Arr[key].fieldId = fieldIdP;
|
|
8489
|
+
} else {
|
|
8490
|
+
fields[fieldIdP] = var_Arr[key].value; // update flat no warpers
|
|
8491
|
+
var_Arr[key].fieldId = fieldIdP;
|
|
8511
8492
|
}
|
|
8512
8493
|
}
|
|
8513
|
-
|
|
8514
|
-
|
|
8515
|
-
|
|
8516
|
-
|
|
8517
|
-
|
|
8518
|
-
|
|
8519
|
-
|
|
8520
|
-
|
|
8521
|
-
|
|
8522
|
-
|
|
8523
|
-
|
|
8524
|
-
|
|
8525
|
-
|
|
8526
|
-
|
|
8527
|
-
|
|
8528
|
-
|
|
8529
|
-
|
|
8530
|
-
|
|
8531
|
-
|
|
8532
|
-
|
|
8533
|
-
|
|
8534
|
-
|
|
8535
|
-
val.fieldId =
|
|
8536
|
-
calling_fieldIdP + val.fieldId(5, val.fieldId.length - 1);
|
|
8537
|
-
}
|
|
8538
|
-
if (!sourceP === "exp") {
|
|
8539
|
-
var_Arr[key].value = '""';
|
|
8540
|
-
} // put default
|
|
8541
|
-
fields[val.fieldId] = var_Arr[key].value;
|
|
8542
|
-
|
|
8543
|
-
const ret = await func.datasource.get_value(
|
|
8544
|
-
SESSION_ID,
|
|
8545
|
-
val.fieldId,
|
|
8546
|
-
dsSessionP,
|
|
8494
|
+
};
|
|
8495
|
+
//>>>>>>>>>>>>>>>>>>
|
|
8496
|
+
//>>>> start here >>
|
|
8497
|
+
//>>>>>>>>>>>>>>>>>>
|
|
8498
|
+
if (val.fieldId) {
|
|
8499
|
+
// @_THIS
|
|
8500
|
+
if (
|
|
8501
|
+
val.fieldId &&
|
|
8502
|
+
val.fieldId.substr(0, 5) === "_THIS" &&
|
|
8503
|
+
calling_fieldIdP &&
|
|
8504
|
+
(val.fieldId.length === 5 ||
|
|
8505
|
+
(val.fieldId.length > 5 && val.fieldId.substr(5, 1) === "."))
|
|
8506
|
+
) {
|
|
8507
|
+
if (val.fieldId.length === 5) val.fieldId = calling_fieldIdP;
|
|
8508
|
+
else
|
|
8509
|
+
val.fieldId =
|
|
8510
|
+
calling_fieldIdP + val.fieldId(5, val.fieldId.length - 1);
|
|
8511
|
+
}
|
|
8512
|
+
if (!sourceP === "exp") {
|
|
8513
|
+
var_Arr[key].value = '""';
|
|
8514
|
+
} // put default
|
|
8515
|
+
fields[val.fieldId] = var_Arr[key].value;
|
|
8547
8516
|
|
|
8548
|
-
|
|
8549
|
-
|
|
8517
|
+
const ret = await func.datasource.get_value(
|
|
8518
|
+
SESSION_ID,
|
|
8519
|
+
val.fieldId,
|
|
8520
|
+
dsSessionP,
|
|
8550
8521
|
|
|
8551
|
-
|
|
8552
|
-
|
|
8553
|
-
}
|
|
8554
|
-
try {
|
|
8555
|
-
// eval the expression
|
|
8556
|
-
var res = [];
|
|
8557
|
-
var exp_exist;
|
|
8558
|
-
var var_error_found;
|
|
8559
|
-
// merge arr values
|
|
8560
|
-
_.forEach(var_Arr, function (val, key) {
|
|
8561
|
-
if (sourceP === "UI Property EXP") {
|
|
8562
|
-
let ret = func.utils.get_drive_url(SESSION_ID, val.value, true);
|
|
8563
|
-
if (ret.changed) {
|
|
8564
|
-
res[key] = ret.value;
|
|
8565
|
-
return true;
|
|
8566
|
-
}
|
|
8567
|
-
}
|
|
8522
|
+
rowIdP
|
|
8523
|
+
); // find field in dataSources
|
|
8568
8524
|
|
|
8569
|
-
|
|
8570
|
-
let ret = func.utils.get_drive_url(
|
|
8571
|
-
SESSION_ID,
|
|
8572
|
-
val.value,
|
|
8573
|
-
var_Arr.length == 1 ? false : true
|
|
8574
|
-
);
|
|
8575
|
-
if (ret.changed) {
|
|
8576
|
-
res[key] = ret.value;
|
|
8577
|
-
return true;
|
|
8525
|
+
replace_value_in_string(ret.ret, ret.fieldIdP);
|
|
8578
8526
|
}
|
|
8579
8527
|
}
|
|
8580
|
-
|
|
8581
|
-
|
|
8582
|
-
|
|
8583
|
-
|
|
8584
|
-
|
|
8585
|
-
|
|
8586
|
-
|
|
8587
|
-
|
|
8588
|
-
|
|
8589
|
-
|
|
8590
|
-
|
|
8591
|
-
|
|
8592
|
-
|
|
8593
|
-
res[key] = "`" + val.value + "`"; //res[key] = "'" + val.value + "'"; //
|
|
8594
|
-
}
|
|
8595
|
-
if (val.fieldId && val.value && typeof val.value === "string") {
|
|
8596
|
-
if (
|
|
8597
|
-
sourceP === "query" ||
|
|
8598
|
-
sourceP === "condition" ||
|
|
8599
|
-
sourceP === "range" ||
|
|
8600
|
-
sourceP === "sort" ||
|
|
8601
|
-
sourceP === "locate"
|
|
8602
|
-
) {
|
|
8603
|
-
if (val.value.indexOf("↵") > -1) {
|
|
8604
|
-
res[key] = val.value.split("↵").join("");
|
|
8528
|
+
try {
|
|
8529
|
+
// eval the expression
|
|
8530
|
+
var res = [];
|
|
8531
|
+
var exp_exist;
|
|
8532
|
+
var var_error_found;
|
|
8533
|
+
// merge arr values
|
|
8534
|
+
_.forEach(var_Arr, function (val, key) {
|
|
8535
|
+
if (sourceP === "UI Property EXP") {
|
|
8536
|
+
let ret = func.utils.get_drive_url(SESSION_ID, val.value, true);
|
|
8537
|
+
if (ret.changed) {
|
|
8538
|
+
res[key] = ret.value;
|
|
8539
|
+
return true;
|
|
8540
|
+
}
|
|
8605
8541
|
}
|
|
8606
|
-
res[key] = res[key].replace(/(\r\n|\n|\r)/gm, ""); //.replace(/"/g,'\"');//.replace(/'/g,"");
|
|
8607
|
-
}
|
|
8608
8542
|
|
|
8609
|
-
|
|
8610
|
-
|
|
8611
|
-
|
|
8612
|
-
|
|
8613
|
-
|
|
8614
|
-
|
|
8615
|
-
|
|
8616
|
-
|
|
8617
|
-
|
|
8543
|
+
if (sourceP === "UI Attr EXP") {
|
|
8544
|
+
let ret = func.utils.get_drive_url(
|
|
8545
|
+
SESSION_ID,
|
|
8546
|
+
val.value,
|
|
8547
|
+
var_Arr.length == 1 ? false : true
|
|
8548
|
+
);
|
|
8549
|
+
if (ret.changed) {
|
|
8550
|
+
res[key] = ret.value;
|
|
8551
|
+
return true;
|
|
8552
|
+
}
|
|
8553
|
+
}
|
|
8618
8554
|
|
|
8619
|
-
|
|
8620
|
-
|
|
8621
|
-
|
|
8555
|
+
if (val.type === "exp") {
|
|
8556
|
+
exp_exist = true;
|
|
8557
|
+
}
|
|
8558
|
+
res[key] = val.value;
|
|
8559
|
+
if (
|
|
8560
|
+
sourceP !== "DbQuery" &&
|
|
8561
|
+
sourceP !== "alert" &&
|
|
8562
|
+
sourceP !== "exp" &&
|
|
8563
|
+
sourceP !== "api_rendered_output" &&
|
|
8564
|
+
(val.type === "string" ||
|
|
8565
|
+
val.type === "date" ||
|
|
8566
|
+
val.type === "time") &&
|
|
8567
|
+
var_Arr.length > 1
|
|
8568
|
+
) {
|
|
8569
|
+
res[key] = "`" + val.value + "`"; //res[key] = "'" + val.value + "'"; //
|
|
8570
|
+
}
|
|
8571
|
+
if (val.fieldId && val.value && typeof val.value === "string") {
|
|
8572
|
+
if (
|
|
8573
|
+
sourceP === "query" ||
|
|
8574
|
+
sourceP === "condition" ||
|
|
8575
|
+
sourceP === "range" ||
|
|
8576
|
+
sourceP === "sort" ||
|
|
8577
|
+
sourceP === "locate"
|
|
8578
|
+
) {
|
|
8579
|
+
if (val.value.indexOf("↵") > -1) {
|
|
8580
|
+
res[key] = val.value.split("↵").join("");
|
|
8581
|
+
}
|
|
8582
|
+
res[key] = res[key].replace(/(\r\n|\n|\r)/gm, ""); //.replace(/"/g,'\"');//.replace(/'/g,"");
|
|
8583
|
+
}
|
|
8622
8584
|
|
|
8623
|
-
|
|
8624
|
-
|
|
8625
|
-
|
|
8626
|
-
|
|
8627
|
-
|
|
8628
|
-
|
|
8629
|
-
|
|
8630
|
-
|
|
8631
|
-
|
|
8632
|
-
res[key] = "(" + JSON.stringify(val.value) + ")";
|
|
8633
|
-
} else {
|
|
8634
|
-
res[key] = JSON.stringify(val.value);
|
|
8635
|
-
}
|
|
8636
|
-
}
|
|
8585
|
+
if (
|
|
8586
|
+
sourceP === "init" ||
|
|
8587
|
+
sourceP === "update" ||
|
|
8588
|
+
sourceP === "virtual"
|
|
8589
|
+
) {
|
|
8590
|
+
if (val.value.indexOf("↵") > -1)
|
|
8591
|
+
res[key] = val.value.split("↵").join("\n");
|
|
8592
|
+
res[key] = res[key].replace(/(\r\n|\n|\r)/gm, "\\n");
|
|
8593
|
+
}
|
|
8637
8594
|
|
|
8638
|
-
|
|
8639
|
-
|
|
8640
|
-
|
|
8641
|
-
val.value &&
|
|
8642
|
-
typeof val.value === "string" &&
|
|
8643
|
-
val.value.substr(0, 1) === "@"
|
|
8644
|
-
) {
|
|
8645
|
-
warning = "Error encoding " + val.value;
|
|
8646
|
-
var_error_found = true;
|
|
8647
|
-
res[key] = 0;
|
|
8648
|
-
}
|
|
8649
|
-
});
|
|
8650
|
-
var join = function (arrP) {
|
|
8651
|
-
return arrP.join("");
|
|
8652
|
-
};
|
|
8653
|
-
var exp = undefined;
|
|
8654
|
-
if (exp_exist && sourceP !== "exp") {
|
|
8655
|
-
exp = await func.expression.get(
|
|
8656
|
-
SESSION_ID,
|
|
8657
|
-
join(res),
|
|
8658
|
-
dsSessionP,
|
|
8659
|
-
sourceP,
|
|
8660
|
-
rowIdP,
|
|
8661
|
-
sourceActionP,
|
|
8662
|
-
true,
|
|
8663
|
-
calling_fieldIdP,
|
|
8664
|
-
fields,
|
|
8665
|
-
debug_infoP
|
|
8666
|
-
);
|
|
8667
|
-
if (exp.res) res = exp.res;
|
|
8668
|
-
// do second pass when exp exist
|
|
8669
|
-
else res = [exp.result];
|
|
8670
|
-
fields = _.assignIn(exp.fields, fieldsP);
|
|
8671
|
-
}
|
|
8672
|
-
var result = join(res); //res.join("");
|
|
8595
|
+
if (typeof IS_PROCESS_SERVER !== "undefined") {
|
|
8596
|
+
res[key] = res[key].replace(/(\r\n|\n|\r)/gm, "<br>");
|
|
8597
|
+
}
|
|
8673
8598
|
|
|
8674
|
-
|
|
8675
|
-
|
|
8676
|
-
|
|
8677
|
-
|
|
8599
|
+
fields[val.fieldId] = res[key];
|
|
8600
|
+
}
|
|
8601
|
+
// extract object
|
|
8602
|
+
if (typeof val.value === "object" && var_Arr.length > 1) {
|
|
8603
|
+
if (
|
|
8604
|
+
!Array.isArray(val.value) &&
|
|
8605
|
+
!var_Arr[key + 1].value?.includes(".")
|
|
8606
|
+
) {
|
|
8607
|
+
// prevent cast on single value expression
|
|
8608
|
+
res[key] = "(" + JSON.stringify(val.value) + ")";
|
|
8609
|
+
} else {
|
|
8610
|
+
res[key] = JSON.stringify(val.value);
|
|
8611
|
+
}
|
|
8612
|
+
}
|
|
8678
8613
|
|
|
8679
|
-
|
|
8680
|
-
|
|
8681
|
-
|
|
8682
|
-
|
|
8683
|
-
|
|
8684
|
-
|
|
8685
|
-
|
|
8686
|
-
|
|
8687
|
-
|
|
8688
|
-
|
|
8689
|
-
|
|
8690
|
-
|
|
8691
|
-
|
|
8692
|
-
|
|
8693
|
-
|
|
8694
|
-
|
|
8695
|
-
|
|
8696
|
-
|
|
8697
|
-
sourceP !== "arguments" &&
|
|
8698
|
-
sourceP !== "alert" &&
|
|
8699
|
-
sourceP !== "api_rendered_output" &&
|
|
8700
|
-
sourceP !== "DbQuery"
|
|
8701
|
-
) {
|
|
8702
|
-
// ret = secure_eval(result); // eval(result);
|
|
8703
|
-
ret = await func.expression.secure_eval(
|
|
8614
|
+
if (
|
|
8615
|
+
!exp_exist &&
|
|
8616
|
+
sourceP !== "exp" &&
|
|
8617
|
+
val.value &&
|
|
8618
|
+
typeof val.value === "string" &&
|
|
8619
|
+
val.value.substr(0, 1) === "@"
|
|
8620
|
+
) {
|
|
8621
|
+
warning = "Error encoding " + val.value;
|
|
8622
|
+
var_error_found = true;
|
|
8623
|
+
res[key] = 0;
|
|
8624
|
+
}
|
|
8625
|
+
});
|
|
8626
|
+
var join = function (arrP) {
|
|
8627
|
+
return arrP.join("");
|
|
8628
|
+
};
|
|
8629
|
+
var exp = undefined;
|
|
8630
|
+
if (exp_exist && sourceP !== "exp") {
|
|
8631
|
+
exp = await func.expression.get(
|
|
8704
8632
|
SESSION_ID,
|
|
8705
|
-
|
|
8706
|
-
result,
|
|
8707
|
-
jobNo,
|
|
8633
|
+
join(res),
|
|
8708
8634
|
dsSessionP,
|
|
8709
|
-
|
|
8635
|
+
sourceP,
|
|
8636
|
+
rowIdP,
|
|
8637
|
+
sourceActionP,
|
|
8638
|
+
true,
|
|
8639
|
+
calling_fieldIdP,
|
|
8640
|
+
fields,
|
|
8641
|
+
debug_infoP
|
|
8710
8642
|
);
|
|
8711
|
-
|
|
8712
|
-
|
|
8713
|
-
|
|
8643
|
+
if (exp.res) res = exp.res;
|
|
8644
|
+
// do second pass when exp exist
|
|
8645
|
+
else res = [exp.result];
|
|
8646
|
+
fields = _.assignIn(exp.fields, fieldsP);
|
|
8647
|
+
}
|
|
8648
|
+
var result = join(res); //res.join("");
|
|
8649
|
+
|
|
8650
|
+
if (res.length === 1) {
|
|
8651
|
+
// bypass join for single value expression
|
|
8652
|
+
result = res[0];
|
|
8653
|
+
}
|
|
8654
|
+
|
|
8655
|
+
if (secondPassP) {
|
|
8656
|
+
ret = result;
|
|
8657
|
+
} else if (sourceP !== "exp") {
|
|
8658
|
+
// no eval for second pass
|
|
8659
|
+
// return single value
|
|
8660
|
+
if (
|
|
8661
|
+
res.length === 1 &&
|
|
8662
|
+
typeof res[0] === "string" &&
|
|
8663
|
+
typeof res[0] !== "object"
|
|
8664
|
+
) {
|
|
8665
|
+
// avoid eval when query leading zeros problem
|
|
8666
|
+
ret = join(res); // res.join("");
|
|
8667
|
+
if (ret && ret.substr(0, 1) === "@") {
|
|
8668
|
+
error = "Error encoding @ var";
|
|
8669
|
+
var_error_found = true;
|
|
8670
|
+
}
|
|
8714
8671
|
} else {
|
|
8715
|
-
|
|
8716
|
-
|
|
8672
|
+
if (
|
|
8673
|
+
sourceP !== "arguments" &&
|
|
8674
|
+
sourceP !== "alert" &&
|
|
8675
|
+
sourceP !== "api_rendered_output" &&
|
|
8676
|
+
sourceP !== "DbQuery"
|
|
8677
|
+
) {
|
|
8678
|
+
// ret = secure_eval(result); // eval(result);
|
|
8679
|
+
ret = await func.expression.secure_eval(
|
|
8680
|
+
SESSION_ID,
|
|
8681
|
+
sourceP,
|
|
8682
|
+
result,
|
|
8683
|
+
jobNo,
|
|
8684
|
+
dsSessionP,
|
|
8685
|
+
js_script_callback
|
|
8686
|
+
);
|
|
8687
|
+
} else {
|
|
8688
|
+
if (sourceP === "DbQuery") {
|
|
8689
|
+
ret = JSON.stringify(evalJson(result));
|
|
8690
|
+
} else {
|
|
8691
|
+
// try eval
|
|
8692
|
+
ret = result;
|
|
8693
|
+
}
|
|
8694
|
+
}
|
|
8717
8695
|
}
|
|
8718
8696
|
}
|
|
8697
|
+
// console.log("AAAA")
|
|
8698
|
+
return end_results();
|
|
8699
|
+
} catch (err) {
|
|
8700
|
+
ret = result; // skip eval on error
|
|
8701
|
+
error = err.message;
|
|
8702
|
+
|
|
8703
|
+
return end_results();
|
|
8719
8704
|
}
|
|
8720
8705
|
}
|
|
8721
|
-
// console.log("AAAA")
|
|
8722
|
-
return end_results();
|
|
8723
|
-
} catch (err) {
|
|
8724
|
-
ret = result; // skip eval on error
|
|
8725
|
-
error = err.message;
|
|
8726
|
-
|
|
8727
|
-
return end_results();
|
|
8728
8706
|
}
|
|
8729
|
-
|
|
8730
|
-
|
|
8731
|
-
|
|
8732
|
-
// //===========================
|
|
8733
|
-
// // variable not exist
|
|
8734
|
-
// }
|
|
8735
|
-
// >>>> return results <<<<<<<<<
|
|
8707
|
+
|
|
8708
|
+
const new_class = new xu_class();
|
|
8709
|
+
return new_class.get();
|
|
8736
8710
|
};
|
|
8711
|
+
|
|
8712
|
+
// func.expression.get = async function (
|
|
8713
|
+
// SESSION_ID,
|
|
8714
|
+
// valP,
|
|
8715
|
+
// dsSessionP,
|
|
8716
|
+
// sourceP,
|
|
8717
|
+
// rowIdP,
|
|
8718
|
+
// sourceActionP,
|
|
8719
|
+
// secondPassP,
|
|
8720
|
+
// calling_fieldIdP,
|
|
8721
|
+
// fieldsP,
|
|
8722
|
+
// debug_infoP,
|
|
8723
|
+
// iterate_info,
|
|
8724
|
+
// js_script_callback,
|
|
8725
|
+
// jobNo
|
|
8726
|
+
// ) {
|
|
8727
|
+
// var ret;
|
|
8728
|
+
// var fields = {};
|
|
8729
|
+
// var error;
|
|
8730
|
+
// var warning;
|
|
8731
|
+
|
|
8732
|
+
// function evalJson(text) {
|
|
8733
|
+
// return eval("(" + text + ")");
|
|
8734
|
+
// }
|
|
8735
|
+
|
|
8736
|
+
// if (valP === null) {
|
|
8737
|
+
// ret = "";
|
|
8738
|
+
// } else {
|
|
8739
|
+
// switch (typeof valP) {
|
|
8740
|
+
// case "string":
|
|
8741
|
+
// ret = valP;
|
|
8742
|
+
// break;
|
|
8743
|
+
|
|
8744
|
+
// case "undefined":
|
|
8745
|
+
// ret = "";
|
|
8746
|
+
// break;
|
|
8747
|
+
|
|
8748
|
+
// case "boolean":
|
|
8749
|
+
// ret = valP ? "Y" : "N";
|
|
8750
|
+
// break;
|
|
8751
|
+
|
|
8752
|
+
// default:
|
|
8753
|
+
// ret = valP.toString();
|
|
8754
|
+
// break;
|
|
8755
|
+
// }
|
|
8756
|
+
// }
|
|
8757
|
+
|
|
8758
|
+
// ret = ret.replace(/\&/g, "&");
|
|
8759
|
+
// const end_results = function () {
|
|
8760
|
+
// const replace_quotes = function (ret) {
|
|
8761
|
+
// for (const [key, val] of Object.entries(fields)) {
|
|
8762
|
+
// if (typeof val === "string")
|
|
8763
|
+
// ret = ret.replace('"' + val + '"', val.replace(/"/gi, ""));
|
|
8764
|
+
// }
|
|
8765
|
+
// return ret;
|
|
8766
|
+
// };
|
|
8767
|
+
// if (sourceP === "update" || sourceP === "javascript") {
|
|
8768
|
+
// if (typeof ret === "string") ret = replace_quotes(ret);
|
|
8769
|
+
// }
|
|
8770
|
+
// const log_error = function () {
|
|
8771
|
+
// if (SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP]) {
|
|
8772
|
+
// func.utils.debug.log(
|
|
8773
|
+
// SESSION_ID,
|
|
8774
|
+
// SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].nodeId,
|
|
8775
|
+
// {
|
|
8776
|
+
// module: "expression",
|
|
8777
|
+
// action: sourceP,
|
|
8778
|
+
// source: calling_fieldIdP,
|
|
8779
|
+
// prop: ret,
|
|
8780
|
+
// details: ret,
|
|
8781
|
+
// result: ret,
|
|
8782
|
+
// error: error,
|
|
8783
|
+
// warning: warning,
|
|
8784
|
+
// fields: null,
|
|
8785
|
+
// type: "exp",
|
|
8786
|
+
// prog_id: SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP].prog_id,
|
|
8787
|
+
// debug_info: debug_infoP,
|
|
8788
|
+
// }
|
|
8789
|
+
// );
|
|
8790
|
+
// }
|
|
8791
|
+
// };
|
|
8792
|
+
// if (error) log_error();
|
|
8793
|
+
// // if (error || warning) log_error();
|
|
8794
|
+
// return {
|
|
8795
|
+
// result: ret,
|
|
8796
|
+
// fields: fields,
|
|
8797
|
+
// res: res,
|
|
8798
|
+
// explain: result,
|
|
8799
|
+
// error: error,
|
|
8800
|
+
// warning: warning,
|
|
8801
|
+
// req: valP,
|
|
8802
|
+
// var_error_found: var_error_found,
|
|
8803
|
+
// };
|
|
8804
|
+
// };
|
|
8805
|
+
// const variable_not_exist = async function () {
|
|
8806
|
+
// try {
|
|
8807
|
+
// if (sourceP !== "arguments") {
|
|
8808
|
+
// if (ret && ret.substr(0, 6) === "_DATE_") {
|
|
8809
|
+
// ret = ret.substr(6);
|
|
8810
|
+
// } else if (
|
|
8811
|
+
// (ret &&
|
|
8812
|
+
// ret.length === 10 &&
|
|
8813
|
+
// ret.substr(4, 1) === "-" &&
|
|
8814
|
+
// ret.substr(7, 1) === "-") ||
|
|
8815
|
+
// ret === "self" // bypass eval for date 2017-03-22
|
|
8816
|
+
// ) {
|
|
8817
|
+
// ret = ret;
|
|
8818
|
+
// } else {
|
|
8819
|
+
// // ret = secure_eval(ret); //eval(ret);
|
|
8820
|
+
// ret = await func.expression.secure_eval(
|
|
8821
|
+
// SESSION_ID,
|
|
8822
|
+
// sourceP,
|
|
8823
|
+
// ret,
|
|
8824
|
+
// jobNo,
|
|
8825
|
+
// dsSessionP,
|
|
8826
|
+
// js_script_callback
|
|
8827
|
+
// );
|
|
8828
|
+
// }
|
|
8829
|
+
// // console.log("AFTER OK", ret)
|
|
8830
|
+
// return end_results();
|
|
8831
|
+
// } else {
|
|
8832
|
+
// // do eval for arithmetic vals
|
|
8833
|
+
// ret = ret.replace(/_NULL/gi, "");
|
|
8834
|
+
// return end_results();
|
|
8835
|
+
// }
|
|
8836
|
+
// } catch (err) {
|
|
8837
|
+
// // console.error(err);
|
|
8838
|
+
// return end_results();
|
|
8839
|
+
// }
|
|
8840
|
+
// };
|
|
8841
|
+
// if (!func.expression.validate_variables(valP)) {
|
|
8842
|
+
// return await variable_not_exist();
|
|
8843
|
+
// }
|
|
8844
|
+
// var split = [];
|
|
8845
|
+
// var var_Arr = [];
|
|
8846
|
+
// split = func.expression.parse(ret);
|
|
8847
|
+
// for await (const [arr_key, val] of Object.entries(split)) {
|
|
8848
|
+
// // run each field
|
|
8849
|
+
// const key = Number(arr_key);
|
|
8850
|
+
// var_Arr[key] = {};
|
|
8851
|
+
// var_Arr[key].value = val.value;
|
|
8852
|
+
// //--------------
|
|
8853
|
+
// const replace_value_in_string = function (retP, fieldIdP) {
|
|
8854
|
+
// if (
|
|
8855
|
+
// iterate_info?.iterator_key === fieldIdP ||
|
|
8856
|
+
// iterate_info?.iterator_val === fieldIdP
|
|
8857
|
+
// ) {
|
|
8858
|
+
// if (iterate_info.iterator_key === fieldIdP) {
|
|
8859
|
+
// retP.value = iterate_info._key;
|
|
8860
|
+
// }
|
|
8861
|
+
// if (iterate_info.iterator_val === fieldIdP) {
|
|
8862
|
+
// retP.value = iterate_info._val;
|
|
8863
|
+
// }
|
|
8864
|
+
// }
|
|
8865
|
+
|
|
8866
|
+
// const set_value = function (valP) {
|
|
8867
|
+
// if (typeof valP !== "undefined") {
|
|
8868
|
+
// var_Arr[key].value = valP;
|
|
8869
|
+
// if (typeof valP === "string") var_Arr[key].type = "string";
|
|
8870
|
+
// } else {
|
|
8871
|
+
// if (retP.type === "object") {
|
|
8872
|
+
// var_Arr[key].value = "";
|
|
8873
|
+
// var_Arr[key].type = "string";
|
|
8874
|
+
// }
|
|
8875
|
+
// }
|
|
8876
|
+
// };
|
|
8877
|
+
|
|
8878
|
+
// if (sourceP === "exp" && retP.type !== "exp") {
|
|
8879
|
+
// var_Arr[key].type = retP.type;
|
|
8880
|
+
// return;
|
|
8881
|
+
// }
|
|
8882
|
+
// if (typeof retP.value !== "undefined") {
|
|
8883
|
+
// var_Arr[key].type = retP.type;
|
|
8884
|
+
// var_Arr[key].value = retP.value;
|
|
8885
|
+
// if ((val.value.indexOf("[") > -1) | (val.value.indexOf(".") > -1)) {
|
|
8886
|
+
// //get values from array '@var==="sss" && @var_B==="sss" && @obj.property===5 && @objA["value"]===123 | @objB["value"].property===1234'
|
|
8887
|
+
// var data = retP.prop;
|
|
8888
|
+
// if (retP.type === "object") data = retP.value;
|
|
8889
|
+
// var property1, property2;
|
|
8890
|
+
// //check for split situation: @objB[@var].property 1: @objB[ 2:@var].property
|
|
8891
|
+
// if (
|
|
8892
|
+
// val.value.indexOf("[") === -1 &&
|
|
8893
|
+
// val.value.indexOf("]") > -1 &&
|
|
8894
|
+
// val.value.substr(0, 1) === "@"
|
|
8895
|
+
// ) {
|
|
8896
|
+
// //check situation 2
|
|
8897
|
+
// var prevData = var_Arr[key - 1].value;
|
|
8898
|
+
// var_Arr[key].value = prevData[data]; // @objB[@var]
|
|
8899
|
+
// if (val.value.indexOf(".") > -1) {
|
|
8900
|
+
// property2 = func.expression.get_property(val.value).property2; //val.value.substr(val.value.indexOf(".") + 1, val.value.length); // get .
|
|
8901
|
+
// if (prevData[data]) set_value(prevData[data][property2]);
|
|
8902
|
+
// // var_Arr[key].value = prevData[data][property2]; //@objB[@var].property
|
|
8903
|
+
// }
|
|
8904
|
+
// delete var_Arr[key - 1];
|
|
8905
|
+
// } else {
|
|
8906
|
+
// property1 = func.expression.get_property(val.value).property1;
|
|
8907
|
+
// property2 = func.expression.get_property(val.value).property2;
|
|
8908
|
+
// if (property1) {
|
|
8909
|
+
// var_Arr[key].value = data[property1]; // @var["value"] or @var.property
|
|
8910
|
+
// if (property2) {
|
|
8911
|
+
// if (data[property1]) set_value(data[property1][property2]);
|
|
8912
|
+
// }
|
|
8913
|
+
// }
|
|
8914
|
+
// if (property2 && !property1) {
|
|
8915
|
+
// if (
|
|
8916
|
+
// data //data[property2]
|
|
8917
|
+
// ) {
|
|
8918
|
+
// set_value(data[property2]);
|
|
8919
|
+
// }
|
|
8920
|
+
// }
|
|
8921
|
+
// }
|
|
8922
|
+
// fields[fieldIdP] = var_Arr[key].value; // added 051017 to allow @SYS_GLOBAL_OBJ_WIDGET_INFO.doc_id
|
|
8923
|
+
// var_Arr[key].fieldId = fieldIdP;
|
|
8924
|
+
// } else {
|
|
8925
|
+
// fields[fieldIdP] = var_Arr[key].value; // update flat no warpers
|
|
8926
|
+
// var_Arr[key].fieldId = fieldIdP;
|
|
8927
|
+
// }
|
|
8928
|
+
// }
|
|
8929
|
+
// };
|
|
8930
|
+
// //>>>>>>>>>>>>>>>>>>
|
|
8931
|
+
// //>>>> start here >>
|
|
8932
|
+
// //>>>>>>>>>>>>>>>>>>
|
|
8933
|
+
// if (val.fieldId) {
|
|
8934
|
+
// // @_THIS
|
|
8935
|
+
// if (
|
|
8936
|
+
// val.fieldId &&
|
|
8937
|
+
// val.fieldId.substr(0, 5) === "_THIS" &&
|
|
8938
|
+
// calling_fieldIdP &&
|
|
8939
|
+
// (val.fieldId.length === 5 ||
|
|
8940
|
+
// (val.fieldId.length > 5 && val.fieldId.substr(5, 1) === "."))
|
|
8941
|
+
// ) {
|
|
8942
|
+
// if (val.fieldId.length === 5) val.fieldId = calling_fieldIdP;
|
|
8943
|
+
// else
|
|
8944
|
+
// val.fieldId =
|
|
8945
|
+
// calling_fieldIdP + val.fieldId(5, val.fieldId.length - 1);
|
|
8946
|
+
// }
|
|
8947
|
+
// if (!sourceP === "exp") {
|
|
8948
|
+
// var_Arr[key].value = '""';
|
|
8949
|
+
// } // put default
|
|
8950
|
+
// fields[val.fieldId] = var_Arr[key].value;
|
|
8951
|
+
|
|
8952
|
+
// const ret = await func.datasource.get_value(
|
|
8953
|
+
// SESSION_ID,
|
|
8954
|
+
// val.fieldId,
|
|
8955
|
+
// dsSessionP,
|
|
8956
|
+
|
|
8957
|
+
// rowIdP
|
|
8958
|
+
// ); // find field in dataSources
|
|
8959
|
+
|
|
8960
|
+
// replace_value_in_string(ret.ret, ret.fieldIdP);
|
|
8961
|
+
// }
|
|
8962
|
+
// }
|
|
8963
|
+
// try {
|
|
8964
|
+
// // eval the expression
|
|
8965
|
+
// var res = [];
|
|
8966
|
+
// var exp_exist;
|
|
8967
|
+
// var var_error_found;
|
|
8968
|
+
// // merge arr values
|
|
8969
|
+
// _.forEach(var_Arr, function (val, key) {
|
|
8970
|
+
// if (sourceP === "UI Property EXP") {
|
|
8971
|
+
// let ret = func.utils.get_drive_url(SESSION_ID, val.value, true);
|
|
8972
|
+
// if (ret.changed) {
|
|
8973
|
+
// res[key] = ret.value;
|
|
8974
|
+
// return true;
|
|
8975
|
+
// }
|
|
8976
|
+
// }
|
|
8977
|
+
|
|
8978
|
+
// if (sourceP === "UI Attr EXP") {
|
|
8979
|
+
// let ret = func.utils.get_drive_url(
|
|
8980
|
+
// SESSION_ID,
|
|
8981
|
+
// val.value,
|
|
8982
|
+
// var_Arr.length == 1 ? false : true
|
|
8983
|
+
// );
|
|
8984
|
+
// if (ret.changed) {
|
|
8985
|
+
// res[key] = ret.value;
|
|
8986
|
+
// return true;
|
|
8987
|
+
// }
|
|
8988
|
+
// }
|
|
8989
|
+
|
|
8990
|
+
// if (val.type === "exp") {
|
|
8991
|
+
// exp_exist = true;
|
|
8992
|
+
// }
|
|
8993
|
+
// res[key] = val.value;
|
|
8994
|
+
// if (
|
|
8995
|
+
// sourceP !== "DbQuery" &&
|
|
8996
|
+
// sourceP !== "alert" &&
|
|
8997
|
+
// sourceP !== "exp" &&
|
|
8998
|
+
// sourceP !== "api_rendered_output" &&
|
|
8999
|
+
// (val.type === "string" || val.type === "date" || val.type === "time") &&
|
|
9000
|
+
// var_Arr.length > 1
|
|
9001
|
+
// ) {
|
|
9002
|
+
// res[key] = "`" + val.value + "`"; //res[key] = "'" + val.value + "'"; //
|
|
9003
|
+
// }
|
|
9004
|
+
// if (val.fieldId && val.value && typeof val.value === "string") {
|
|
9005
|
+
// if (
|
|
9006
|
+
// sourceP === "query" ||
|
|
9007
|
+
// sourceP === "condition" ||
|
|
9008
|
+
// sourceP === "range" ||
|
|
9009
|
+
// sourceP === "sort" ||
|
|
9010
|
+
// sourceP === "locate"
|
|
9011
|
+
// ) {
|
|
9012
|
+
// if (val.value.indexOf("↵") > -1) {
|
|
9013
|
+
// res[key] = val.value.split("↵").join("");
|
|
9014
|
+
// }
|
|
9015
|
+
// res[key] = res[key].replace(/(\r\n|\n|\r)/gm, ""); //.replace(/"/g,'\"');//.replace(/'/g,"");
|
|
9016
|
+
// }
|
|
9017
|
+
|
|
9018
|
+
// if (
|
|
9019
|
+
// sourceP === "init" ||
|
|
9020
|
+
// sourceP === "update" ||
|
|
9021
|
+
// sourceP === "virtual"
|
|
9022
|
+
// ) {
|
|
9023
|
+
// if (val.value.indexOf("↵") > -1)
|
|
9024
|
+
// res[key] = val.value.split("↵").join("\n");
|
|
9025
|
+
// res[key] = res[key].replace(/(\r\n|\n|\r)/gm, "\\n");
|
|
9026
|
+
// }
|
|
9027
|
+
|
|
9028
|
+
// if (typeof IS_PROCESS_SERVER !== "undefined") {
|
|
9029
|
+
// res[key] = res[key].replace(/(\r\n|\n|\r)/gm, "<br>");
|
|
9030
|
+
// }
|
|
9031
|
+
|
|
9032
|
+
// fields[val.fieldId] = res[key];
|
|
9033
|
+
// }
|
|
9034
|
+
// // extract object
|
|
9035
|
+
// if (typeof val.value === "object" && var_Arr.length > 1) {
|
|
9036
|
+
// if (
|
|
9037
|
+
// !Array.isArray(val.value) &&
|
|
9038
|
+
// !var_Arr[key + 1].value?.includes(".")
|
|
9039
|
+
// ) {
|
|
9040
|
+
// // prevent cast on single value expression
|
|
9041
|
+
// res[key] = "(" + JSON.stringify(val.value) + ")";
|
|
9042
|
+
// } else {
|
|
9043
|
+
// res[key] = JSON.stringify(val.value);
|
|
9044
|
+
// }
|
|
9045
|
+
// }
|
|
9046
|
+
|
|
9047
|
+
// if (
|
|
9048
|
+
// !exp_exist &&
|
|
9049
|
+
// sourceP !== "exp" &&
|
|
9050
|
+
// val.value &&
|
|
9051
|
+
// typeof val.value === "string" &&
|
|
9052
|
+
// val.value.substr(0, 1) === "@"
|
|
9053
|
+
// ) {
|
|
9054
|
+
// warning = "Error encoding " + val.value;
|
|
9055
|
+
// var_error_found = true;
|
|
9056
|
+
// res[key] = 0;
|
|
9057
|
+
// }
|
|
9058
|
+
// });
|
|
9059
|
+
// var join = function (arrP) {
|
|
9060
|
+
// return arrP.join("");
|
|
9061
|
+
// };
|
|
9062
|
+
// var exp = undefined;
|
|
9063
|
+
// if (exp_exist && sourceP !== "exp") {
|
|
9064
|
+
// exp = await func.expression.get(
|
|
9065
|
+
// SESSION_ID,
|
|
9066
|
+
// join(res),
|
|
9067
|
+
// dsSessionP,
|
|
9068
|
+
// sourceP,
|
|
9069
|
+
// rowIdP,
|
|
9070
|
+
// sourceActionP,
|
|
9071
|
+
// true,
|
|
9072
|
+
// calling_fieldIdP,
|
|
9073
|
+
// fields,
|
|
9074
|
+
// debug_infoP
|
|
9075
|
+
// );
|
|
9076
|
+
// if (exp.res) res = exp.res;
|
|
9077
|
+
// // do second pass when exp exist
|
|
9078
|
+
// else res = [exp.result];
|
|
9079
|
+
// fields = _.assignIn(exp.fields, fieldsP);
|
|
9080
|
+
// }
|
|
9081
|
+
// var result = join(res); //res.join("");
|
|
9082
|
+
|
|
9083
|
+
// if (res.length === 1) {
|
|
9084
|
+
// // bypass join for single value expression
|
|
9085
|
+
// result = res[0];
|
|
9086
|
+
// }
|
|
9087
|
+
|
|
9088
|
+
// if (secondPassP) {
|
|
9089
|
+
// ret = result;
|
|
9090
|
+
// } else if (sourceP !== "exp") {
|
|
9091
|
+
// // no eval for second pass
|
|
9092
|
+
// // return single value
|
|
9093
|
+
// if (
|
|
9094
|
+
// res.length === 1 &&
|
|
9095
|
+
// typeof res[0] === "string" &&
|
|
9096
|
+
// typeof res[0] !== "object"
|
|
9097
|
+
// ) {
|
|
9098
|
+
// // avoid eval when query leading zeros problem
|
|
9099
|
+
// ret = join(res); // res.join("");
|
|
9100
|
+
// if (ret && ret.substr(0, 1) === "@") {
|
|
9101
|
+
// error = "Error encoding @ var";
|
|
9102
|
+
// var_error_found = true;
|
|
9103
|
+
// }
|
|
9104
|
+
// } else {
|
|
9105
|
+
// if (
|
|
9106
|
+
// sourceP !== "arguments" &&
|
|
9107
|
+
// sourceP !== "alert" &&
|
|
9108
|
+
// sourceP !== "api_rendered_output" &&
|
|
9109
|
+
// sourceP !== "DbQuery"
|
|
9110
|
+
// ) {
|
|
9111
|
+
// // ret = secure_eval(result); // eval(result);
|
|
9112
|
+
// ret = await func.expression.secure_eval(
|
|
9113
|
+
// SESSION_ID,
|
|
9114
|
+
// sourceP,
|
|
9115
|
+
// result,
|
|
9116
|
+
// jobNo,
|
|
9117
|
+
// dsSessionP,
|
|
9118
|
+
// js_script_callback
|
|
9119
|
+
// );
|
|
9120
|
+
// } else {
|
|
9121
|
+
// if (sourceP === "DbQuery") {
|
|
9122
|
+
// ret = JSON.stringify(evalJson(result));
|
|
9123
|
+
// } else {
|
|
9124
|
+
// // try eval
|
|
9125
|
+
// ret = result;
|
|
9126
|
+
// }
|
|
9127
|
+
// }
|
|
9128
|
+
// }
|
|
9129
|
+
// }
|
|
9130
|
+
// // console.log("AAAA")
|
|
9131
|
+
// return end_results();
|
|
9132
|
+
// } catch (err) {
|
|
9133
|
+
// ret = result; // skip eval on error
|
|
9134
|
+
// error = err.message;
|
|
9135
|
+
|
|
9136
|
+
// return end_results();
|
|
9137
|
+
// }
|
|
9138
|
+
// // }
|
|
9139
|
+
// // else {
|
|
9140
|
+
// // return variable_not_exist();
|
|
9141
|
+
// // //===========================
|
|
9142
|
+
// // // variable not exist
|
|
9143
|
+
// // }
|
|
9144
|
+
// // >>>> return results <<<<<<<<<
|
|
9145
|
+
// };
|
|
8737
9146
|
func.expression.parse = function (strP) {
|
|
8738
9147
|
var extract_str = function (strP, posP) {
|
|
8739
9148
|
if (!posP) posP = 0;
|