@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.
Files changed (2) hide show
  1. package/index.js +6 -976
  2. 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
- debugger;
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?.data?.[0]?.value || 0;
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.splice(j--, 1);
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 (
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xuda.io/xuda-worker-bundle",
3
- "version": "1.3.852",
3
+ "version": "1.3.854",
4
4
  "description": "xuda framework",
5
5
  "main": "index.js",
6
6
  "scripts": {