@xuda.io/xuda-worker-bundle 1.3.852 → 1.3.854
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 +6 -976
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -2277,7 +2277,7 @@ func.datasource.execute = async function (
|
|
|
2277
2277
|
null,
|
|
2278
2278
|
_ds?.progDataSource?.sortModel
|
|
2279
2279
|
);
|
|
2280
|
-
|
|
2280
|
+
|
|
2281
2281
|
const ret_rows_found = await func.db.get_query(
|
|
2282
2282
|
SESSION_ID,
|
|
2283
2283
|
_ds._dataSourceTableId,
|
|
@@ -2291,7 +2291,7 @@ func.datasource.execute = async function (
|
|
|
2291
2291
|
true,
|
|
2292
2292
|
null
|
|
2293
2293
|
);
|
|
2294
|
-
_ds.rows_found = ret_rows_found?.
|
|
2294
|
+
_ds.rows_found = ret_rows_found?.rows?.[0]?.value || 0;
|
|
2295
2295
|
break;
|
|
2296
2296
|
|
|
2297
2297
|
case "array": {
|
|
@@ -2591,7 +2591,7 @@ func.datasource.execute = async function (
|
|
|
2591
2591
|
case "component":
|
|
2592
2592
|
_ds.data_feed = { sort: {}, groupBy: {}, rows: {} };
|
|
2593
2593
|
|
|
2594
|
-
_ds.rows_found = 0;
|
|
2594
|
+
// _ds.rows_found = 0;
|
|
2595
2595
|
_ds.rows_processed = 0;
|
|
2596
2596
|
_ds.viewRangeExp_rows_deleted = 0;
|
|
2597
2597
|
|
|
@@ -3067,7 +3067,7 @@ func.datasource.run_rows_form = async function (
|
|
|
3067
3067
|
idx,
|
|
3068
3068
|
sort_index
|
|
3069
3069
|
);
|
|
3070
|
-
_ds.rows_found++;
|
|
3070
|
+
// _ds.rows_found++;
|
|
3071
3071
|
};
|
|
3072
3072
|
const delete_row = async function () {
|
|
3073
3073
|
if (_ds) {
|
|
@@ -3076,7 +3076,7 @@ func.datasource.run_rows_form = async function (
|
|
|
3076
3076
|
if (!_ds.v.viewRangeExp_deleted) _ds.v.viewRangeExp_deleted = [];
|
|
3077
3077
|
_ds.v.viewRangeExp_deleted.push(rowIdxP);
|
|
3078
3078
|
}
|
|
3079
|
-
_ds.rows_found--;
|
|
3079
|
+
// _ds.rows_found--;
|
|
3080
3080
|
_ds.viewRangeExp_rows_deleted++;
|
|
3081
3081
|
};
|
|
3082
3082
|
if (_ds.progDataSource?.dataSourceFiltersScript) {
|
|
@@ -3894,977 +3894,7 @@ func.datasource.callback = function (
|
|
|
3894
3894
|
var a = array.concat();
|
|
3895
3895
|
for (var i = 0; i < a.length; ++i) {
|
|
3896
3896
|
for (var j = i + 1; j < a.length; ++j) {
|
|
3897
|
-
if (a[i] === a[j]) a.
|
|
3898
|
-
}
|
|
3899
|
-
}
|
|
3900
|
-
return a;
|
|
3901
|
-
}
|
|
3902
|
-
|
|
3903
|
-
if (_ds.prog_id) {
|
|
3904
|
-
let _ds = _session.DS_GLB[dsSessionP];
|
|
3905
|
-
|
|
3906
|
-
func.utils.debug.watch(
|
|
3907
|
-
SESSION_ID,
|
|
3908
|
-
_ds.prog_id,
|
|
3909
|
-
"program",
|
|
3910
|
-
{
|
|
3911
|
-
in_parameters: _ds.in_parameters,
|
|
3912
|
-
out_parameters: _ds.out_parameters,
|
|
3913
|
-
data_feed: _ds.data_feed,
|
|
3914
|
-
},
|
|
3915
|
-
_ds.tree_obj.menuType
|
|
3916
|
-
);
|
|
3917
|
-
}
|
|
3918
|
-
delete _ds.old_dataSource;
|
|
3919
|
-
|
|
3920
|
-
return {
|
|
3921
|
-
SESSION_ID,
|
|
3922
|
-
dsSessionP,
|
|
3923
|
-
rowIdP,
|
|
3924
|
-
jobNoP,
|
|
3925
|
-
callingLogId: _ds.callingLogId,
|
|
3926
|
-
calling_jobP: _ds.calling_jobP,
|
|
3927
|
-
};
|
|
3928
|
-
};
|
|
3929
|
-
func.datasource.validate_viewRange = async function (
|
|
3930
|
-
SESSION_ID,
|
|
3931
|
-
viewRangeExpP,
|
|
3932
|
-
dsSessionP,
|
|
3933
|
-
rowIdP,
|
|
3934
|
-
sourceP
|
|
3935
|
-
) {
|
|
3936
|
-
var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];
|
|
3937
|
-
if (viewRangeExpP && _ds) {
|
|
3938
|
-
var ret = func.expression.remove_quotes(
|
|
3939
|
-
await func.expression.get(
|
|
3940
|
-
SESSION_ID,
|
|
3941
|
-
viewRangeExpP,
|
|
3942
|
-
dsSessionP,
|
|
3943
|
-
"range",
|
|
3944
|
-
rowIdP
|
|
3945
|
-
)
|
|
3946
|
-
);
|
|
3947
|
-
ret.result = func.expression.remove_quotes(ret.result);
|
|
3948
|
-
func.utils.debug.log(SESSION_ID, _ds.prog_id, {
|
|
3949
|
-
module: _ds.viewModule,
|
|
3950
|
-
action: "range Exp",
|
|
3951
|
-
prop: sourceP,
|
|
3952
|
-
details: viewRangeExpP,
|
|
3953
|
-
result: ret.result,
|
|
3954
|
-
error: ret.error,
|
|
3955
|
-
source: _ds.viewSourceDesc,
|
|
3956
|
-
json: ret.explain,
|
|
3957
|
-
fields: ret.fields,
|
|
3958
|
-
dsSession: dsSessionP,
|
|
3959
|
-
});
|
|
3960
|
-
_ds.viewRangeExpResults = ret.fields;
|
|
3961
|
-
if (glb.DEBUG_MODE) {
|
|
3962
|
-
if (!_ds.debug) {
|
|
3963
|
-
_ds.debug = {};
|
|
3964
|
-
}
|
|
3965
|
-
if (!_ds.debug.viewRangeExp) {
|
|
3966
|
-
_ds.debug.viewRangeExp = [];
|
|
3967
|
-
}
|
|
3968
|
-
_ds.debug.viewRangeExp.push(ret);
|
|
3969
|
-
}
|
|
3970
|
-
return ret.result;
|
|
3971
|
-
} else return false;
|
|
3972
|
-
};
|
|
3973
|
-
func.datasource.validate_viewLocate = async function (
|
|
3974
|
-
SESSION_ID,
|
|
3975
|
-
viewLocateExpP,
|
|
3976
|
-
dsSessionP,
|
|
3977
|
-
rowIdP,
|
|
3978
|
-
sourceP
|
|
3979
|
-
) {
|
|
3980
|
-
if (viewLocateExpP && _ds) {
|
|
3981
|
-
var ret = func.expression.remove_quotes(
|
|
3982
|
-
await func.expression.get(
|
|
3983
|
-
SESSION_ID,
|
|
3984
|
-
viewLocateExpP,
|
|
3985
|
-
dsSessionP,
|
|
3986
|
-
"locate",
|
|
3987
|
-
rowIdP
|
|
3988
|
-
)
|
|
3989
|
-
);
|
|
3990
|
-
ret.result = func.expression.remove_quotes(ret.result);
|
|
3991
|
-
func.utils.debug.log(SESSION_ID, _ds.prog_id, {
|
|
3992
|
-
module: _ds.viewModule,
|
|
3993
|
-
action: "locate Exp",
|
|
3994
|
-
prop: sourceP,
|
|
3995
|
-
details: viewLocateExpP,
|
|
3996
|
-
result: ret.result,
|
|
3997
|
-
error: ret.error,
|
|
3998
|
-
source: _ds.viewSourceDesc,
|
|
3999
|
-
json: ret.explain,
|
|
4000
|
-
fields: ret.fields,
|
|
4001
|
-
dsSession: dsSessionP,
|
|
4002
|
-
});
|
|
4003
|
-
_ds.viewLocateExpResults = ret.fields;
|
|
4004
|
-
return ret.result;
|
|
4005
|
-
} else return false;
|
|
4006
|
-
};
|
|
4007
|
-
|
|
4008
|
-
func.datasource.get_viewFields_for_update_function = function (
|
|
4009
|
-
SESSION_ID,
|
|
4010
|
-
calling_trigger_prop,
|
|
4011
|
-
na,
|
|
4012
|
-
dsSessionP
|
|
4013
|
-
) {
|
|
4014
|
-
var viewFields = [];
|
|
4015
|
-
|
|
4016
|
-
var exp = calling_trigger_prop?.data?.name?.value;
|
|
4017
|
-
if (!exp) {
|
|
4018
|
-
return viewFields;
|
|
4019
|
-
}
|
|
4020
|
-
try {
|
|
4021
|
-
// parse json
|
|
4022
|
-
var json = JSON.parse(exp.replace(/\n/gi, ""));
|
|
4023
|
-
for (const [key, val] of Object.entries(json)) {
|
|
4024
|
-
let id = key.substr(1, key.length - 1);
|
|
4025
|
-
if (!id) continue;
|
|
4026
|
-
viewFields.push({
|
|
4027
|
-
val,
|
|
4028
|
-
id,
|
|
4029
|
-
});
|
|
4030
|
-
}
|
|
4031
|
-
return viewFields;
|
|
4032
|
-
} catch (e) {
|
|
4033
|
-
if (!exp) {
|
|
4034
|
-
return;
|
|
4035
|
-
}
|
|
4036
|
-
if (exp.substr(exp.length - 1, 1) === ";")
|
|
4037
|
-
exp = exp.substr(0, exp.length - 1); // remove closing if exist;
|
|
4038
|
-
var exp_arr = exp.split(/;\s*(?=(?:[^"]|"[^"]*")*$)/g); // split ; outside quotes
|
|
4039
|
-
if (exp_arr?.length) {
|
|
4040
|
-
for (let val of exp_arr) {
|
|
4041
|
-
// run view fields
|
|
4042
|
-
var pos = val.indexOf(":");
|
|
4043
|
-
var seg = [val.substring(0, pos), val.substring(pos + 1)];
|
|
4044
|
-
if (seg && seg.length === 2) {
|
|
4045
|
-
let id = seg[0].substr(1, seg[0].length);
|
|
4046
|
-
if (!id) continue;
|
|
4047
|
-
viewFields.push({
|
|
4048
|
-
id,
|
|
4049
|
-
val: seg[1],
|
|
4050
|
-
// , props: {},
|
|
4051
|
-
});
|
|
4052
|
-
} else {
|
|
4053
|
-
func.utils.debug.log(SESSION_ID, _ds.prog_id, {
|
|
4054
|
-
module: _ds.viewModule,
|
|
4055
|
-
action: "set",
|
|
4056
|
-
prop: "parse update exp",
|
|
4057
|
-
details: exp,
|
|
4058
|
-
result: "",
|
|
4059
|
-
error: "Invalid json; too many segments",
|
|
4060
|
-
source: _ds.viewSourceDesc,
|
|
4061
|
-
json: "",
|
|
4062
|
-
fields: "",
|
|
4063
|
-
dsSession: dsSessionP,
|
|
4064
|
-
});
|
|
4065
|
-
}
|
|
4066
|
-
}
|
|
4067
|
-
}
|
|
4068
|
-
|
|
4069
|
-
return viewFields;
|
|
4070
|
-
}
|
|
4071
|
-
};
|
|
4072
|
-
func.datasource.get_value = async function (
|
|
4073
|
-
SESSION_ID,
|
|
4074
|
-
fieldIdP,
|
|
4075
|
-
dsSessionP,
|
|
4076
|
-
rowIdP,
|
|
4077
|
-
org_dsSessionP
|
|
4078
|
-
) {
|
|
4079
|
-
const return_value = async (field_id, value) => {
|
|
4080
|
-
const _progFields = await func.datasource.get_progFields(
|
|
4081
|
-
SESSION_ID,
|
|
4082
|
-
dsSessionP
|
|
4083
|
-
);
|
|
4084
|
-
let view_field_obj = func.common.find_item_by_key(
|
|
4085
|
-
_progFields,
|
|
4086
|
-
"field_id",
|
|
4087
|
-
field_id
|
|
4088
|
-
);
|
|
4089
|
-
var fieldType = view_field_obj?.props?.fieldType || "string";
|
|
4090
|
-
var fieldProp = view_field_obj?.props;
|
|
4091
|
-
let table_field_obj;
|
|
4092
|
-
if (view_field_obj?.data?.type === "table") {
|
|
4093
|
-
if (!_ds._dataSourceTableId) {
|
|
4094
|
-
return func.utils.debug_report(
|
|
4095
|
-
SESSION_ID,
|
|
4096
|
-
"Datasource",
|
|
4097
|
-
`Table type defined without dataSourceTableId deceleration`,
|
|
4098
|
-
"E"
|
|
4099
|
-
);
|
|
4100
|
-
}
|
|
4101
|
-
|
|
4102
|
-
let table_obj = await func.utils.FILES_OBJ.get(
|
|
4103
|
-
SESSION_ID,
|
|
4104
|
-
_ds._dataSourceTableId
|
|
4105
|
-
);
|
|
4106
|
-
|
|
4107
|
-
if (!table_obj) {
|
|
4108
|
-
return func.utils.debug_report(
|
|
4109
|
-
SESSION_ID,
|
|
4110
|
-
"Datasource",
|
|
4111
|
-
`dataSourceTableId reference error: ` + _ds._dataSourceTableId,
|
|
4112
|
-
"E"
|
|
4113
|
-
);
|
|
4114
|
-
}
|
|
4115
|
-
table_field_obj = func.common.find_item_by_key(
|
|
4116
|
-
table_obj.tableFields,
|
|
4117
|
-
"field_id",
|
|
4118
|
-
field_id
|
|
4119
|
-
);
|
|
4120
|
-
fieldType = table_field_obj.props?.fieldType;
|
|
4121
|
-
fieldProp = table_field_obj.props;
|
|
4122
|
-
}
|
|
4123
|
-
|
|
4124
|
-
let ret = {
|
|
4125
|
-
value: await func.common.get_cast_val(
|
|
4126
|
-
SESSION_ID,
|
|
4127
|
-
`datasource get value ${_ds.tree_obj.menuName}`,
|
|
4128
|
-
fieldIdP,
|
|
4129
|
-
fieldType,
|
|
4130
|
-
value,
|
|
4131
|
-
null
|
|
4132
|
-
),
|
|
4133
|
-
type: fieldType,
|
|
4134
|
-
prop: fieldProp,
|
|
4135
|
-
};
|
|
4136
|
-
|
|
4137
|
-
if (ret.value && typeof ret.value === "string" && ret.type !== "exp") {
|
|
4138
|
-
if (/"/.test(ret.value) && ret.value.indexOf("\\") === -1)
|
|
4139
|
-
ret.value = ret.value.replace(/"/g, '"');
|
|
4140
|
-
}
|
|
4141
|
-
|
|
4142
|
-
return {
|
|
4143
|
-
ret,
|
|
4144
|
-
dsSessionP,
|
|
4145
|
-
fieldIdP: field_id,
|
|
4146
|
-
currentRecordId: _ds.currentRecordId,
|
|
4147
|
-
found: typeof value !== "undefined",
|
|
4148
|
-
};
|
|
4149
|
-
};
|
|
4150
|
-
const return_dynamic_value = async (field_id, value) => {
|
|
4151
|
-
let view_field_obj = _ds.dynamic_fields[field_id];
|
|
4152
|
-
var fieldType = view_field_obj?.props?.fieldType || "string";
|
|
4153
|
-
var fieldProp = view_field_obj?.props;
|
|
4154
|
-
|
|
4155
|
-
let ret = {
|
|
4156
|
-
value: view_field_obj.value,
|
|
4157
|
-
type: fieldType,
|
|
4158
|
-
prop: fieldProp,
|
|
4159
|
-
};
|
|
4160
|
-
|
|
4161
|
-
if (ret.value && typeof ret.value === "string" && ret.type !== "exp") {
|
|
4162
|
-
if (/"/.test(ret.value) && ret.value.indexOf("\\") === -1)
|
|
4163
|
-
ret.value = ret.value.replace(/"/g, '"');
|
|
4164
|
-
}
|
|
4165
|
-
|
|
4166
|
-
return {
|
|
4167
|
-
ret,
|
|
4168
|
-
dsSessionP,
|
|
4169
|
-
fieldIdP: field_id,
|
|
4170
|
-
currentRecordId: _ds.currentRecordId,
|
|
4171
|
-
found: typeof value !== "undefined",
|
|
4172
|
-
};
|
|
4173
|
-
};
|
|
4174
|
-
const return_value_parameters = async (field_id, value) => {
|
|
4175
|
-
let ret = {
|
|
4176
|
-
value: await func.common.get_cast_val(
|
|
4177
|
-
SESSION_ID,
|
|
4178
|
-
"datasource get value",
|
|
4179
|
-
fieldIdP,
|
|
4180
|
-
value.type,
|
|
4181
|
-
value.value,
|
|
4182
|
-
null
|
|
4183
|
-
),
|
|
4184
|
-
type: value.type,
|
|
4185
|
-
prop: null,
|
|
4186
|
-
};
|
|
4187
|
-
|
|
4188
|
-
if (ret.value && typeof ret.value === "string" && ret.type !== "exp") {
|
|
4189
|
-
if (/"/.test(ret.value) && ret.value.indexOf("\\") === -1)
|
|
4190
|
-
ret.value = ret.value.replace(/"/g, '"');
|
|
4191
|
-
// if (/"/.test(ret.value) && ret.value.indexOf("\\") === -1)
|
|
4192
|
-
// ret.value = ret.value.replace(/"/g, '\\"');
|
|
4193
|
-
}
|
|
4194
|
-
|
|
4195
|
-
return {
|
|
4196
|
-
ret,
|
|
4197
|
-
dsSessionP,
|
|
4198
|
-
fieldIdP: field_id,
|
|
4199
|
-
currentRecordId: _ds.currentRecordId,
|
|
4200
|
-
found: typeof value !== "undefined",
|
|
4201
|
-
};
|
|
4202
|
-
};
|
|
4203
|
-
const return_value_system = async (field_id, value) => {
|
|
4204
|
-
let fieldType = glb.GLOBAL_VARS[field_id].type;
|
|
4205
|
-
let fieldProp = null;
|
|
4206
|
-
|
|
4207
|
-
let ret = {
|
|
4208
|
-
value: await func.common.get_cast_val(
|
|
4209
|
-
SESSION_ID,
|
|
4210
|
-
`datasource get value ${_ds.tree_obj.menuName}`,
|
|
4211
|
-
field_id,
|
|
4212
|
-
fieldType,
|
|
4213
|
-
value,
|
|
4214
|
-
null
|
|
4215
|
-
),
|
|
4216
|
-
type: fieldType,
|
|
4217
|
-
prop: fieldProp,
|
|
4218
|
-
};
|
|
4219
|
-
|
|
4220
|
-
return {
|
|
4221
|
-
ret,
|
|
4222
|
-
dsSessionP,
|
|
4223
|
-
fieldIdP: field_id,
|
|
4224
|
-
currentRecordId: _ds.currentRecordId,
|
|
4225
|
-
found: typeof value !== "undefined",
|
|
4226
|
-
};
|
|
4227
|
-
};
|
|
4228
|
-
const search_in_parameters = async (field_id) => {
|
|
4229
|
-
if (typeof _ds?.in_parameters?.[field_id]?.value !== "undefined") {
|
|
4230
|
-
let ret = await return_value_parameters(
|
|
4231
|
-
field_id,
|
|
4232
|
-
_ds.in_parameters[field_id]
|
|
4233
|
-
);
|
|
4234
|
-
return ret;
|
|
4235
|
-
}
|
|
4236
|
-
|
|
4237
|
-
if (typeof _ds.parentDataSourceNo !== "undefined") {
|
|
4238
|
-
var org_dsSession = org_dsSessionP;
|
|
4239
|
-
if (!org_dsSessionP) org_dsSession = dsSessionP;
|
|
4240
|
-
if (recordId && recordId !== "newRecord") org_dsSession = null;
|
|
4241
|
-
|
|
4242
|
-
return await func.datasource.get_value(
|
|
4243
|
-
SESSION_ID,
|
|
4244
|
-
fieldIdP,
|
|
4245
|
-
_ds.parentDataSourceNo,
|
|
4246
|
-
recordId,
|
|
4247
|
-
org_dsSession
|
|
4248
|
-
);
|
|
4249
|
-
}
|
|
4250
|
-
|
|
4251
|
-
return await return_value(field_id);
|
|
4252
|
-
};
|
|
4253
|
-
|
|
4254
|
-
if (typeof glb.GLOBAL_VARS === "undefined") {
|
|
4255
|
-
glb.GLOBAL_VARS = (
|
|
4256
|
-
await func.common.get_module(SESSION_ID, "xuda-system-globals-module.mjs")
|
|
4257
|
-
).system_globals;
|
|
4258
|
-
}
|
|
4259
|
-
|
|
4260
|
-
var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];
|
|
4261
|
-
if (!_ds) {
|
|
4262
|
-
if (dsSessionP > 0) {
|
|
4263
|
-
// let prev_ds = dsSessionP - 1;
|
|
4264
|
-
return await func.datasource.get_value(
|
|
4265
|
-
SESSION_ID,
|
|
4266
|
-
fieldIdP,
|
|
4267
|
-
dsSessionP - 1,
|
|
4268
|
-
rowIdP,
|
|
4269
|
-
org_dsSessionP
|
|
4270
|
-
);
|
|
4271
|
-
}
|
|
4272
|
-
return await return_value(fieldIdP);
|
|
4273
|
-
} //console.error("error: datasource not exist: " + dsSessionP);
|
|
4274
|
-
|
|
4275
|
-
let recordId = rowIdP;
|
|
4276
|
-
if (!recordId) {
|
|
4277
|
-
recordId = _ds.currentRecordId;
|
|
4278
|
-
}
|
|
4279
|
-
|
|
4280
|
-
if (glb.GLOBAL_VARS[fieldIdP]) {
|
|
4281
|
-
if (!_ds.data_system) {
|
|
4282
|
-
_ds.data_system = {};
|
|
4283
|
-
}
|
|
4284
|
-
|
|
4285
|
-
if (dsSessionP > 0) {
|
|
4286
|
-
_ds.data_system["SYS_STR_ACTIVE_ROW_ID"] = _ds.currentRecordId;
|
|
4287
|
-
_ds.data_system["SYS_STR_PROG_DS_SESSION"] = dsSessionP;
|
|
4288
|
-
}
|
|
4289
|
-
|
|
4290
|
-
// set system time
|
|
4291
|
-
if (glb.SYS_DATE_ARR.includes(fieldIdP)) {
|
|
4292
|
-
var _ds_0 = SESSION_OBJ[SESSION_ID].DS_GLB[0];
|
|
4293
|
-
|
|
4294
|
-
if (_ds_0) {
|
|
4295
|
-
if (!_ds_0.data_system) {
|
|
4296
|
-
_ds_0.data_system = {};
|
|
4297
|
-
}
|
|
4298
|
-
const ts = await func.utils.get_dateTime(SESSION_ID, "SYS_DATE_VALUE");
|
|
4299
|
-
for (const val of glb.SYS_DATE_ARR) {
|
|
4300
|
-
_ds_0.data_system[val] = await func.utils.get_dateTime(
|
|
4301
|
-
SESSION_ID,
|
|
4302
|
-
val,
|
|
4303
|
-
ts
|
|
4304
|
-
);
|
|
4305
|
-
}
|
|
4306
|
-
}
|
|
4307
|
-
}
|
|
4308
|
-
|
|
4309
|
-
// await func.datasource.set_system_vars(SESSION_ID, dsSessionP);
|
|
4310
|
-
if (typeof _ds?.data_system?.[fieldIdP] !== "undefined") {
|
|
4311
|
-
return await return_value_system(fieldIdP, _ds?.data_system?.[fieldIdP]);
|
|
4312
|
-
}
|
|
4313
|
-
return await search_in_parameters(fieldIdP);
|
|
4314
|
-
}
|
|
4315
|
-
|
|
4316
|
-
// if (glb.PROTECTED_VARS[fieldIdP]) {
|
|
4317
|
-
// switch (fieldIdP) {
|
|
4318
|
-
// case "_ROW_NO": {
|
|
4319
|
-
// let row_no = Object.keys(_ds?.data_feed?.rows).indexOf(recordId) || 0;
|
|
4320
|
-
// return await return_value(fieldIdP, row_no);
|
|
4321
|
-
// }
|
|
4322
|
-
// default:
|
|
4323
|
-
// break;
|
|
4324
|
-
// }
|
|
4325
|
-
// }
|
|
4326
|
-
|
|
4327
|
-
if (!_ds.data_feed) {
|
|
4328
|
-
return await search_in_parameters(fieldIdP);
|
|
4329
|
-
}
|
|
4330
|
-
|
|
4331
|
-
var _field_id = fieldIdP;
|
|
4332
|
-
|
|
4333
|
-
if (fieldIdP.substr(0, 1) === "_") {
|
|
4334
|
-
if (_ds.alias) _field_id = _ds.alias[fieldIdP];
|
|
4335
|
-
}
|
|
4336
|
-
|
|
4337
|
-
if (!org_dsSessionP && recordId) {
|
|
4338
|
-
// if (typeof _ds.data_feed?.rows?.[recordId]?.[_field_id] !== "undefined") {
|
|
4339
|
-
if (
|
|
4340
|
-
Object.keys(_ds.data_feed?.rows?.[recordId] || {})?.includes(_field_id)
|
|
4341
|
-
) {
|
|
4342
|
-
return await return_value(
|
|
4343
|
-
_field_id,
|
|
4344
|
-
_ds.data_feed.rows[recordId][_field_id]
|
|
4345
|
-
);
|
|
4346
|
-
}
|
|
4347
|
-
// if (typeof _ds?.dynamic_fields?.[_field_id] !== "undefined") {
|
|
4348
|
-
if (Object.keys(_ds?.dynamic_fields || {})?.includes(_field_id)) {
|
|
4349
|
-
return await return_dynamic_value(
|
|
4350
|
-
_field_id,
|
|
4351
|
-
_ds.dynamic_fields[_field_id]
|
|
4352
|
-
);
|
|
4353
|
-
}
|
|
4354
|
-
}
|
|
4355
|
-
|
|
4356
|
-
if (
|
|
4357
|
-
typeof _ds.data_feed?.rows?.[_ds.currentRecordId]?.[_field_id] !==
|
|
4358
|
-
"undefined"
|
|
4359
|
-
) {
|
|
4360
|
-
return await return_value(
|
|
4361
|
-
_field_id,
|
|
4362
|
-
_ds.data_feed.rows[_ds.currentRecordId][_field_id]
|
|
4363
|
-
);
|
|
4364
|
-
}
|
|
4365
|
-
if (typeof _ds?.dynamic_fields?.[_field_id] !== "undefined") {
|
|
4366
|
-
return await return_dynamic_value(_field_id, _ds.dynamic_fields[_field_id]);
|
|
4367
|
-
}
|
|
4368
|
-
|
|
4369
|
-
return await search_in_parameters(fieldIdP);
|
|
4370
|
-
};
|
|
4371
|
-
|
|
4372
|
-
func.datasource.find_event_dataSource = async function (
|
|
4373
|
-
SESSION_ID,
|
|
4374
|
-
eventIdP,
|
|
4375
|
-
dsSessionP
|
|
4376
|
-
) {
|
|
4377
|
-
const _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];
|
|
4378
|
-
var ret;
|
|
4379
|
-
//============================
|
|
4380
|
-
// Search in given datasource
|
|
4381
|
-
//============================
|
|
4382
|
-
if (_ds?.prog_id) {
|
|
4383
|
-
let view_ret = await func.utils.VIEWS_OBJ.get(SESSION_ID, _ds.prog_id);
|
|
4384
|
-
if (
|
|
4385
|
-
view_ret?.progEvents &&
|
|
4386
|
-
func.common.find_item_by_key(view_ret.progEvents, "event_name", eventIdP)
|
|
4387
|
-
) {
|
|
4388
|
-
ret = dsSessionP;
|
|
4389
|
-
if (_ds.callingSource === "system") ret = 0;
|
|
4390
|
-
if (_ds.callingSource === "program" || !_ds.callingSource)
|
|
4391
|
-
ret = dsSessionP;
|
|
4392
|
-
// >>> found value
|
|
4393
|
-
return ret;
|
|
4394
|
-
}
|
|
4395
|
-
}
|
|
4396
|
-
if (!ret && dsSessionP !== 0) {
|
|
4397
|
-
//=======================================
|
|
4398
|
-
// continue Search in parent datasource
|
|
4399
|
-
//=======================================
|
|
4400
|
-
if (
|
|
4401
|
-
_ds &&
|
|
4402
|
-
_ds.parentDataSourceNo &&
|
|
4403
|
-
Number(_ds.parentDataSourceNo) > 0 &&
|
|
4404
|
-
Number(_ds.parentDataSourceNo) < dsSessionP
|
|
4405
|
-
) {
|
|
4406
|
-
return await func.datasource.find_event_dataSource(
|
|
4407
|
-
SESSION_ID,
|
|
4408
|
-
eventIdP,
|
|
4409
|
-
_ds.parentDataSourceNo
|
|
4410
|
-
);
|
|
4411
|
-
} else {
|
|
4412
|
-
//========================================
|
|
4413
|
-
// continue Search in global system
|
|
4414
|
-
//=========================================
|
|
4415
|
-
if (!ret)
|
|
4416
|
-
return await func.datasource.find_event_dataSource(
|
|
4417
|
-
SESSION_ID,
|
|
4418
|
-
eventIdP,
|
|
4419
|
-
0
|
|
4420
|
-
);
|
|
4421
|
-
}
|
|
4422
|
-
}
|
|
4423
|
-
};
|
|
4424
|
-
func.datasource.reset_jobs = function (SESSION_ID, dsSessionP, sourceP, errP) {
|
|
4425
|
-
for (const [key, val] of Object.entries(
|
|
4426
|
-
SESSION_OBJ[SESSION_ID].WORKER_OBJ.jobs
|
|
4427
|
-
)) {
|
|
4428
|
-
if (val.dsSessionP === dsSessionP) {
|
|
4429
|
-
func.events.delete_job(SESSION_ID, val.job_num);
|
|
4430
|
-
break;
|
|
4431
|
-
}
|
|
4432
|
-
}
|
|
4433
|
-
func.utils.debug_report(
|
|
4434
|
-
SESSION_ID,
|
|
4435
|
-
sourceP + "Missing datasource: " + dsSessionP,
|
|
4436
|
-
errP,
|
|
4437
|
-
"W",
|
|
4438
|
-
null
|
|
4439
|
-
);
|
|
4440
|
-
};
|
|
4441
|
-
// func.datasource.set_system_vars = async function (SESSION_ID, dsSessionP) {
|
|
4442
|
-
// var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];
|
|
4443
|
-
// if (!_ds) return;
|
|
4444
|
-
|
|
4445
|
-
// if (!_ds.data_system) {
|
|
4446
|
-
// _ds.data_system = {};
|
|
4447
|
-
// }
|
|
4448
|
-
|
|
4449
|
-
// if (dsSessionP > 0) {
|
|
4450
|
-
// _ds.data_system["SYS_STR_ACTIVE_ROW_ID"] = _ds.currentRecordId;
|
|
4451
|
-
// _ds.data_system["SYS_STR_PROG_DS_SESSION"] = dsSessionP;
|
|
4452
|
-
// }
|
|
4453
|
-
|
|
4454
|
-
// // _ds.data_system["SYS_OBJ_DS_INFO"] = {
|
|
4455
|
-
// // rows: _ds.rows_found,
|
|
4456
|
-
// // first_row_id: _ds.firstRecordId,
|
|
4457
|
-
// // last_row_id: _ds.lastRecordId,
|
|
4458
|
-
// // query_from_segments_json: _ds.filter_from,
|
|
4459
|
-
// // query_to_segments_json: _ds.filter_from,
|
|
4460
|
-
// // locate_query_from_segments_json: _ds.locate_from,
|
|
4461
|
-
// // locate_query_to_segments_json: _ds.locate_to,
|
|
4462
|
-
// // first_row_segments_json: _ds.firstRecordKey_object,
|
|
4463
|
-
// // last_row_segments_json: _ds.lastRecordKey_object,
|
|
4464
|
-
// // rowid: _ds.currentRecordId,
|
|
4465
|
-
// // };
|
|
4466
|
-
|
|
4467
|
-
// // if (!_ds.data_system["SYS_OBJ_DS_DATA"] && dsSessionP == 0) {
|
|
4468
|
-
// // _ds.data_system["SYS_OBJ_DS_DATA"] = {
|
|
4469
|
-
// // value: _.cloneDeep(_ds.data_system),
|
|
4470
|
-
// // };
|
|
4471
|
-
// // }
|
|
4472
|
-
// var _ds_0 = SESSION_OBJ[SESSION_ID].DS_GLB[0];
|
|
4473
|
-
// if (!_ds_0) return;
|
|
4474
|
-
|
|
4475
|
-
// if (!_ds_0.data_system) {
|
|
4476
|
-
// _ds_0.data_system = {};
|
|
4477
|
-
// }
|
|
4478
|
-
// const ts = await func.utils.get_dateTime(SESSION_ID, "SYS_DATE_VALUE");
|
|
4479
|
-
// for (const val of glb.SYS_DATE_ARR) {
|
|
4480
|
-
// _ds_0.data_system[val] = await func.utils.get_dateTime(SESSION_ID, val, ts);
|
|
4481
|
-
// }
|
|
4482
|
-
// };
|
|
4483
|
-
func.datasource.get_currentRecordId = function (
|
|
4484
|
-
SESSION_ID,
|
|
4485
|
-
dsSessionP,
|
|
4486
|
-
from_datasourceP
|
|
4487
|
-
) {
|
|
4488
|
-
var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];
|
|
4489
|
-
if (_ds._dataSourceTableId !== "") {
|
|
4490
|
-
var firstRecordId = _ds.firstRecordId; // returns the value of the fist row
|
|
4491
|
-
var currentRecordId = _ds.currentRecordId; // record id that exist on ds after entering the form
|
|
4492
|
-
var locatedRecordId = _ds.locatedRecordId; // record id located by ds
|
|
4493
|
-
if (!currentRecordId || from_datasourceP) {
|
|
4494
|
-
// first time without locate
|
|
4495
|
-
if (!locatedRecordId) currentRecordId = firstRecordId;
|
|
4496
|
-
// set first row when no rec located
|
|
4497
|
-
else currentRecordId = locatedRecordId; // set with located row
|
|
4498
|
-
}
|
|
4499
|
-
} else currentRecordId = "newRecord"; // create mode
|
|
4500
|
-
return currentRecordId;
|
|
4501
|
-
};
|
|
4502
|
-
func.datasource.interval = function (session_id, dsSessionP, typeP) {
|
|
4503
|
-
var SESSION_ID = session_id;
|
|
4504
|
-
var interval = [];
|
|
4505
|
-
var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];
|
|
4506
|
-
// var ds = _ds;
|
|
4507
|
-
// var v = ds.v;
|
|
4508
|
-
// var arr = func.datasource.get_event_interval_arr(
|
|
4509
|
-
// SESSION_ID,
|
|
4510
|
-
// dsSessionP,
|
|
4511
|
-
// typeP
|
|
4512
|
-
// );
|
|
4513
|
-
var arr = _ds[typeP];
|
|
4514
|
-
|
|
4515
|
-
var fx = {
|
|
4516
|
-
init: async function () {
|
|
4517
|
-
if (arr?.length) {
|
|
4518
|
-
for (let val of arr) {
|
|
4519
|
-
var event_id = val[0];
|
|
4520
|
-
var interval_rate = val[1];
|
|
4521
|
-
var condition = val[2];
|
|
4522
|
-
|
|
4523
|
-
interval.push(
|
|
4524
|
-
setInterval(async function () {
|
|
4525
|
-
if (!SESSION_OBJ[SESSION_ID]) return;
|
|
4526
|
-
var event_count = await func.datasource.get_view_events_count(
|
|
4527
|
-
SESSION_ID,
|
|
4528
|
-
dsSessionP,
|
|
4529
|
-
typeP,
|
|
4530
|
-
event_id
|
|
4531
|
-
);
|
|
4532
|
-
if (!event_count) {
|
|
4533
|
-
fx.clear();
|
|
4534
|
-
return;
|
|
4535
|
-
}
|
|
4536
|
-
var event_condition = await func.expression.get(
|
|
4537
|
-
SESSION_ID,
|
|
4538
|
-
condition,
|
|
4539
|
-
dsSessionP,
|
|
4540
|
-
"condition"
|
|
4541
|
-
); // execute condition;
|
|
4542
|
-
if (condition && !event_condition.result) return;
|
|
4543
|
-
|
|
4544
|
-
const e = await func.datasource.execute_view_events(
|
|
4545
|
-
SESSION_ID,
|
|
4546
|
-
dsSessionP,
|
|
4547
|
-
typeP,
|
|
4548
|
-
event_id
|
|
4549
|
-
);
|
|
4550
|
-
// for (const [key, val] of Object.entries(e)) {
|
|
4551
|
-
// val.done = false;
|
|
4552
|
-
// }
|
|
4553
|
-
}, Number(interval_rate) * 1000)
|
|
4554
|
-
);
|
|
4555
|
-
}
|
|
4556
|
-
} else {
|
|
4557
|
-
await fx.clear();
|
|
4558
|
-
return;
|
|
4559
|
-
}
|
|
4560
|
-
},
|
|
4561
|
-
clear: function () {
|
|
4562
|
-
if (DATASOURCE_INTERVALS[session_id])
|
|
4563
|
-
delete DATASOURCE_INTERVALS[session_id][dsSessionP];
|
|
4564
|
-
for (const [key, val] of Object.entries(interval)) {
|
|
4565
|
-
clearInterval(val);
|
|
4566
|
-
}
|
|
4567
|
-
},
|
|
4568
|
-
};
|
|
4569
|
-
return fx;
|
|
4570
|
-
};
|
|
4571
|
-
func.datasource.server_cron = function (session_id) {
|
|
4572
|
-
var SESSION_ID = session_id;
|
|
4573
|
-
var jobs = [];
|
|
4574
|
-
// var ds = SESSION_OBJ[SESSION_ID].DS_GLB[0];
|
|
4575
|
-
// var v = ds.v;
|
|
4576
|
-
var arr = func.datasource.get_event_interval_arr(
|
|
4577
|
-
SESSION_ID,
|
|
4578
|
-
0,
|
|
4579
|
-
"server_cron"
|
|
4580
|
-
);
|
|
4581
|
-
const schedule = require("node-schedule");
|
|
4582
|
-
|
|
4583
|
-
if (!arr.length) {
|
|
4584
|
-
return jobs;
|
|
4585
|
-
}
|
|
4586
|
-
for (let val of arr) {
|
|
4587
|
-
var event_id = val[0];
|
|
4588
|
-
var cron_prop = val[1];
|
|
4589
|
-
var condition = val[2];
|
|
4590
|
-
|
|
4591
|
-
jobs.push(
|
|
4592
|
-
schedule.scheduleJob(cron_prop, async function () {
|
|
4593
|
-
if (!SESSION_OBJ[SESSION_ID]) return;
|
|
4594
|
-
var event_count = await func.datasource.get_view_events_count(
|
|
4595
|
-
SESSION_ID,
|
|
4596
|
-
0,
|
|
4597
|
-
"server_cron",
|
|
4598
|
-
event_id
|
|
4599
|
-
);
|
|
4600
|
-
if (!event_count) {
|
|
4601
|
-
fx.clear();
|
|
4602
|
-
return;
|
|
4603
|
-
}
|
|
4604
|
-
var event_condition = await func.expression.get(
|
|
4605
|
-
SESSION_ID,
|
|
4606
|
-
condition,
|
|
4607
|
-
0,
|
|
4608
|
-
"condition"
|
|
4609
|
-
); // execute condition;
|
|
4610
|
-
if (condition && !event_condition.result) return;
|
|
4611
|
-
if (event_count) {
|
|
4612
|
-
const e = await func.datasource.execute_view_events(
|
|
4613
|
-
SESSION_ID,
|
|
4614
|
-
0,
|
|
4615
|
-
"server_cron",
|
|
4616
|
-
event_id
|
|
4617
|
-
);
|
|
4618
|
-
// for (const [key, val] of Object.entries(e)) {
|
|
4619
|
-
// val.done = false;
|
|
4620
|
-
// }
|
|
4621
|
-
}
|
|
4622
|
-
})
|
|
4623
|
-
);
|
|
4624
|
-
}
|
|
4625
|
-
|
|
4626
|
-
return jobs;
|
|
4627
|
-
};
|
|
4628
|
-
func.datasource.get_viewLoops = async function (
|
|
4629
|
-
SESSION_ID,
|
|
4630
|
-
dataSourceSession,
|
|
4631
|
-
data,
|
|
4632
|
-
batch_source,
|
|
4633
|
-
default_limit
|
|
4634
|
-
) {
|
|
4635
|
-
var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dataSourceSession];
|
|
4636
|
-
var args = _ds.args;
|
|
4637
|
-
// var v = _ds.v;
|
|
4638
|
-
var ret = default_limit;
|
|
4639
|
-
|
|
4640
|
-
if (batch_source === "db_data") ret = _.size(data.rows);
|
|
4641
|
-
if (batch_source === "array" || batch_source === "csv") ret = data.length;
|
|
4642
|
-
if (batch_source === "json") ret = Object.keys(data).length;
|
|
4643
|
-
if (_ds.progDataSource?.dataSourceLimit) {
|
|
4644
|
-
if (
|
|
4645
|
-
batch_source !== "no_data" &&
|
|
4646
|
-
Number(_ds.progDataSource?.dataSourceLimit) < ret
|
|
4647
|
-
) {
|
|
4648
|
-
ret = Number(_ds.progDataSource.dataSourceLimit);
|
|
4649
|
-
}
|
|
4650
|
-
if (!batch_source) ret = Number(_ds.progDataSource.dataSourceLimit);
|
|
4651
|
-
}
|
|
4652
|
-
if (prog_obj.progDataSource?.dataSourceLoopExp) {
|
|
4653
|
-
var n = (
|
|
4654
|
-
await func.expression.get(
|
|
4655
|
-
SESSION_ID,
|
|
4656
|
-
_ds.v.viewLoopsExp,
|
|
4657
|
-
dataSourceSession,
|
|
4658
|
-
"view_loop",
|
|
4659
|
-
args.rowIdP
|
|
4660
|
-
)
|
|
4661
|
-
).result;
|
|
4662
|
-
if (batch_source !== "no_data" && n < ret) ret = n;
|
|
4663
|
-
if (!batch_source) ret = n;
|
|
4664
|
-
}
|
|
4665
|
-
return ret;
|
|
4666
|
-
};
|
|
4667
|
-
func.datasource.set_VIEW_data = async function (SESSION_ID, args, _ds) {
|
|
4668
|
-
_ds.v = {
|
|
4669
|
-
viewFieldsProp: {},
|
|
4670
|
-
segFrom: [],
|
|
4671
|
-
segTo: [],
|
|
4672
|
-
segLocateFrom: [],
|
|
4673
|
-
segLocateTo: [],
|
|
4674
|
-
viewModule: "adapter",
|
|
4675
|
-
};
|
|
4676
|
-
_ds.viewEventExec_arr = {};
|
|
4677
|
-
|
|
4678
|
-
var view = _.cloneDeep(
|
|
4679
|
-
await func.utils.VIEWS_OBJ.get(SESSION_ID, args.prog_id)
|
|
4680
|
-
);
|
|
4681
|
-
|
|
4682
|
-
_ds.v.dataSourceSrcType = view.dataSourceSrcType;
|
|
4683
|
-
_ds.v.viewExitExp = view.dataSourceExitScript;
|
|
4684
|
-
|
|
4685
|
-
if (view.progDataSource) _ds.progDataSource = view.progDataSource;
|
|
4686
|
-
|
|
4687
|
-
_ds.v.viewIndex = view?.progDataSource?.dataSourceIndexesObj;
|
|
4688
|
-
|
|
4689
|
-
let tree_ret = await func.utils.TREE_OBJ.get(SESSION_ID, args.prog_id);
|
|
4690
|
-
_ds.v.viewSourceDesc = tree_ret.menuName;
|
|
4691
|
-
|
|
4692
|
-
if (!_ds.v.viewSourceDesc && tree_ret) {
|
|
4693
|
-
_ds.v.viewSourceDesc = tree_ret.menuName;
|
|
4694
|
-
}
|
|
4695
|
-
|
|
4696
|
-
if (glb.FUNCTION_NODES_ARR.includes(tree_ret.menuType)) {
|
|
4697
|
-
_ds.v.viewModule = "function";
|
|
4698
|
-
}
|
|
4699
|
-
_ds.v.viewSourceProp = tree_ret.menuType;
|
|
4700
|
-
if (view.progEvents) _ds.v.progEvents = view.progEvents;
|
|
4701
|
-
|
|
4702
|
-
_ds._progDataSource_fields = [];
|
|
4703
|
-
if (_ds.progDataSource) {
|
|
4704
|
-
let ret = func.expression.parse(JSON.stringify(_ds.progDataSource));
|
|
4705
|
-
_ds._progDataSource_fields = ret.map((e) => {
|
|
4706
|
-
if (e.fieldId) return e.fieldId;
|
|
4707
|
-
});
|
|
4708
|
-
}
|
|
4709
|
-
};
|
|
4710
|
-
|
|
4711
|
-
func.datasource.get_cast_val = async function (
|
|
4712
|
-
SESSION_ID,
|
|
4713
|
-
source,
|
|
4714
|
-
dsSession,
|
|
4715
|
-
valP,
|
|
4716
|
-
typeP,
|
|
4717
|
-
req,
|
|
4718
|
-
error
|
|
4719
|
-
) {
|
|
4720
|
-
var prog_id, prog_name;
|
|
4721
|
-
var _session = SESSION_OBJ[SESSION_ID];
|
|
4722
|
-
var _ds = _session.DS_GLB[dsSession];
|
|
4723
|
-
|
|
4724
|
-
prog_id = _ds.prog_id;
|
|
4725
|
-
prog_name = await func.utils.TREE_OBJ.get(SESSION_ID, _ds.prog_id).menuName;
|
|
4726
|
-
|
|
4727
|
-
const prog_info = prog_id ? ` (prog: ${prog_id} ${prog_name})` : "";
|
|
4728
|
-
|
|
4729
|
-
const report_conversion_error = function (res) {
|
|
4730
|
-
var msg = `error converting from ${valP} to ${typeP}`;
|
|
4731
|
-
if (error) {
|
|
4732
|
-
return func.utils.debug_report(SESSION_ID, msg, "", "W");
|
|
4733
|
-
}
|
|
4734
|
-
func.utils.debug_report(
|
|
4735
|
-
SESSION_ID,
|
|
4736
|
-
msg + " " + _.capitalize(source) + prog_info,
|
|
4737
|
-
"",
|
|
4738
|
-
"E"
|
|
4739
|
-
);
|
|
4740
|
-
};
|
|
4741
|
-
const report_conversion_warn = function (res) {
|
|
4742
|
-
var msg = `type mismatch auto conversion from value ${valP} to ${typeP}`;
|
|
4743
|
-
func.utils.debug_report(
|
|
4744
|
-
SESSION_ID,
|
|
4745
|
-
msg + " " + _.capitalize(source) + prog_info,
|
|
4746
|
-
"",
|
|
4747
|
-
"W"
|
|
4748
|
-
);
|
|
4749
|
-
};
|
|
4750
|
-
// var ret = valP;
|
|
4751
|
-
if (error) {
|
|
4752
|
-
return report_conversion_error();
|
|
4753
|
-
}
|
|
4754
|
-
|
|
4755
|
-
const module = await func.common.get_module(
|
|
4756
|
-
SESSION_ID,
|
|
4757
|
-
"xuda-get-cast-util-module.mjs"
|
|
4758
|
-
);
|
|
4759
|
-
return module.cast(
|
|
4760
|
-
typeP,
|
|
4761
|
-
valP,
|
|
4762
|
-
report_conversion_error,
|
|
4763
|
-
report_conversion_warn
|
|
4764
|
-
);
|
|
4765
|
-
};
|
|
4766
|
-
func.datasource.get_field_init_triggers_to_run = function (
|
|
4767
|
-
SESSION_ID,
|
|
4768
|
-
dataSourceSession,
|
|
4769
|
-
pre_init_fieldsP
|
|
4770
|
-
) {
|
|
4771
|
-
var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dataSourceSession];
|
|
4772
|
-
if (!_ds) return;
|
|
4773
|
-
|
|
4774
|
-
return []; // inactive 021617
|
|
4775
|
-
}; // inactive temporary, design to execute init triggers when querying large datasets
|
|
4776
|
-
func.datasource.get_pre_init_fields = function (
|
|
4777
|
-
SESSION_ID,
|
|
4778
|
-
dsSessionP,
|
|
4779
|
-
viewRangeExpP,
|
|
4780
|
-
viewSortExpP,
|
|
4781
|
-
viewGroupByExpP,
|
|
4782
|
-
viewLocateExpP
|
|
4783
|
-
) {
|
|
4784
|
-
var ret = [];
|
|
4785
|
-
return; // inactive 021617
|
|
4786
|
-
}; // temporary inactive, init preformed on the first round
|
|
4787
|
-
|
|
4788
|
-
func.datasource.add_dynamic_field_to_ds = function (
|
|
4789
|
-
SESSION_ID,
|
|
4790
|
-
dsSessionP,
|
|
4791
|
-
key,
|
|
4792
|
-
val
|
|
4793
|
-
) {
|
|
4794
|
-
var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];
|
|
4795
|
-
if (!_ds.dynamic_fields) {
|
|
4796
|
-
_ds.dynamic_fields = {};
|
|
4797
|
-
}
|
|
4798
|
-
|
|
4799
|
-
const toType = function (obj) {
|
|
4800
|
-
return {}.toString
|
|
4801
|
-
.call(obj)
|
|
4802
|
-
.match(/\s([a-zA-Z]+)/)[1]
|
|
4803
|
-
.toLowerCase();
|
|
4804
|
-
};
|
|
4805
|
-
|
|
4806
|
-
_ds.dynamic_fields[key] = {
|
|
4807
|
-
id: crypto.randomUUID(),
|
|
4808
|
-
data: {
|
|
4809
|
-
type: "virtual",
|
|
4810
|
-
field_id: key,
|
|
4811
|
-
},
|
|
4812
|
-
props: {
|
|
4813
|
-
fieldType: val ? toType(val) : "string",
|
|
4814
|
-
},
|
|
4815
|
-
value: val,
|
|
4816
|
-
};
|
|
4817
|
-
};
|
|
4818
|
-
// func.datasource.add_dynamic_field_to_data_feed = function (
|
|
4819
|
-
// SESSION_ID,
|
|
4820
|
-
// dsSessionP,
|
|
4821
|
-
// key,
|
|
4822
|
-
// val
|
|
4823
|
-
// ) {
|
|
4824
|
-
// var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];
|
|
4825
|
-
// if (!_ds.dynamic_fields) {
|
|
4826
|
-
// _ds.dynamic_fields = [];
|
|
4827
|
-
// }
|
|
4828
|
-
// _ds.data_feed.rows[_ds.currentRecordId][key] = val;
|
|
4829
|
-
|
|
4830
|
-
// // todo: check duplicates
|
|
4831
|
-
// if (_ds.dynamic_fields.some((e) => e.data.field_id === key)) return;
|
|
4832
|
-
|
|
4833
|
-
// const toType = function (obj) {
|
|
4834
|
-
// return {}.toString
|
|
4835
|
-
// .call(obj)
|
|
4836
|
-
// .match(/\s([a-zA-Z]+)/)[1]
|
|
4837
|
-
// .toLowerCase();
|
|
4838
|
-
// };
|
|
4839
|
-
|
|
4840
|
-
// _ds.dynamic_fields.push({
|
|
4841
|
-
// id: crypto.randomUUID(),
|
|
4842
|
-
// data: {
|
|
4843
|
-
// type: "virtual",
|
|
4844
|
-
// field_id: key,
|
|
4845
|
-
// },
|
|
4846
|
-
// props: {
|
|
4847
|
-
// fieldType: val ? toType(val) : "string",
|
|
4848
|
-
// },
|
|
4849
|
-
// });
|
|
4850
|
-
// };
|
|
4851
|
-
func.datasource.get_progFields = async function (SESSION_ID, dsSessionP) {
|
|
4852
|
-
var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];
|
|
4853
|
-
const _view_obj = await func.utils.VIEWS_OBJ.get(SESSION_ID, _ds.prog_id);
|
|
4854
|
-
return _view_obj.progFields;
|
|
4855
|
-
// var ret_arr = _view_obj.progFields;
|
|
4856
|
-
|
|
4857
|
-
// _ds?.dynamic_fields?.forEach((field) => {
|
|
4858
|
-
// if (ret_arr.some((e) => e.data.field_id === field.data.field_id)) {
|
|
4859
|
-
// return;
|
|
4860
|
-
// }
|
|
4861
|
-
|
|
4862
|
-
// ret_arr.push(field);
|
|
4863
|
-
// });
|
|
4864
|
-
|
|
4865
|
-
// return ret_arr;
|
|
4866
|
-
};
|
|
4867
|
-
func.utils = {};
|
|
3897
|
+
if (a[i] === a[j]) a.s func.utils = {};
|
|
4868
3898
|
|
|
4869
3899
|
func.utils.debug = {};
|
|
4870
3900
|
func.utils.debug.watch = async function (
|