@xuda.io/xuda-worker-bundle-min 1.3.2451 → 1.3.2452
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 +70 -53
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -4789,6 +4789,58 @@ func.datasource.update = async function (SESSION_ID, datasource_changes, update_
|
|
|
4789
4789
|
var datasource_changed = [];
|
|
4790
4790
|
let client_datasource_changes = {};
|
|
4791
4791
|
let server_datasource_changes = {};
|
|
4792
|
+
const mark_field_changed = async function (dataSource, field_id) {
|
|
4793
|
+
if (!fields_changed.includes(field_id)) {
|
|
4794
|
+
fields_changed.push(field_id);
|
|
4795
|
+
|
|
4796
|
+
// Refresh dependent in-parameters that reference this field.
|
|
4797
|
+
for (const [_dsSession, _ds] of Object.entries(_session.DS_GLB)) {
|
|
4798
|
+
if (_ds.args.parameters_raw_obj) {
|
|
4799
|
+
for (const [key, exp] of Object.entries(_ds.args.parameters_raw_obj)) {
|
|
4800
|
+
if (exp.includes(field_id)) {
|
|
4801
|
+
let ret = await func.expression.get(SESSION_ID, exp, _dsSession, 'parameters');
|
|
4802
|
+
_ds.in_parameters[key].value = ret.result;
|
|
4803
|
+
}
|
|
4804
|
+
}
|
|
4805
|
+
}
|
|
4806
|
+
}
|
|
4807
|
+
}
|
|
4808
|
+
if (!datasource_changed.includes(dataSource)) {
|
|
4809
|
+
datasource_changed.push(dataSource);
|
|
4810
|
+
}
|
|
4811
|
+
};
|
|
4812
|
+
const queue_remote_change = async function (dataSource, record_id, field_id, value, _ds) {
|
|
4813
|
+
if (update_local_scope_only) {
|
|
4814
|
+
return;
|
|
4815
|
+
}
|
|
4816
|
+
|
|
4817
|
+
let tree_ret = await func.utils.TREE_OBJ.get(SESSION_ID, _ds.prog_id);
|
|
4818
|
+
if (glb.IS_WORKER) {
|
|
4819
|
+
if (tree_ret.menuType === 'globals' || tree_ret.menuType === 'component') {
|
|
4820
|
+
const _progFields = await func.datasource.get_progFields(SESSION_ID, dataSource);
|
|
4821
|
+
let view_field_obj = func.common.find_item_by_key(_progFields, 'field_id', field_id);
|
|
4822
|
+
if (!view_field_obj?.data?.serverField && record_id !== 'data_system') {
|
|
4823
|
+
if (!client_datasource_changes[dataSource]) {
|
|
4824
|
+
client_datasource_changes[dataSource] = {};
|
|
4825
|
+
}
|
|
4826
|
+
if (!client_datasource_changes[dataSource][record_id]) {
|
|
4827
|
+
client_datasource_changes[dataSource][record_id] = {};
|
|
4828
|
+
}
|
|
4829
|
+
client_datasource_changes[dataSource][record_id][field_id] = value;
|
|
4830
|
+
}
|
|
4831
|
+
}
|
|
4832
|
+
} else {
|
|
4833
|
+
if ((tree_ret.menuType === 'component' && _ds._run_at !== 'client') || tree_ret.menuType === 'globals') {
|
|
4834
|
+
if (!server_datasource_changes[dataSource]) {
|
|
4835
|
+
server_datasource_changes[dataSource] = {};
|
|
4836
|
+
}
|
|
4837
|
+
if (!server_datasource_changes[dataSource][record_id]) {
|
|
4838
|
+
server_datasource_changes[dataSource][record_id] = {};
|
|
4839
|
+
}
|
|
4840
|
+
server_datasource_changes[dataSource][record_id][field_id] = value;
|
|
4841
|
+
}
|
|
4842
|
+
}
|
|
4843
|
+
};
|
|
4792
4844
|
|
|
4793
4845
|
const update_xu_ref = function (dataSource) {
|
|
4794
4846
|
let ret;
|
|
@@ -4859,6 +4911,18 @@ func.datasource.update = async function (SESSION_ID, datasource_changes, update_
|
|
|
4859
4911
|
continue;
|
|
4860
4912
|
}
|
|
4861
4913
|
|
|
4914
|
+
const dynamic_field = _ds?.dynamic_fields?.[field_id];
|
|
4915
|
+
if (dynamic_field) {
|
|
4916
|
+
if (!xu_isEqual(dynamic_field.value, value)) {
|
|
4917
|
+
dynamic_field.value = value;
|
|
4918
|
+
await set_fieldComputed_dependencies(dataSource, field_id, null);
|
|
4919
|
+
update_xu_ref(dataSource);
|
|
4920
|
+
await queue_remote_change(dataSource, record_id, field_id, value, _ds);
|
|
4921
|
+
await mark_field_changed(dataSource, field_id);
|
|
4922
|
+
}
|
|
4923
|
+
continue;
|
|
4924
|
+
}
|
|
4925
|
+
|
|
4862
4926
|
try {
|
|
4863
4927
|
const row_idx = func.common.find_ROWID_idx(_ds, record_id);
|
|
4864
4928
|
// if (_ds.data_feed.rows[row_idx][field_id] !== value) {
|
|
@@ -4869,55 +4933,8 @@ func.datasource.update = async function (SESSION_ID, datasource_changes, update_
|
|
|
4869
4933
|
// search the field in refs
|
|
4870
4934
|
update_xu_ref(dataSource);
|
|
4871
4935
|
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
if (glb.IS_WORKER) {
|
|
4875
|
-
// RUN AT SERVER
|
|
4876
|
-
if (tree_ret.menuType === 'globals' || tree_ret.menuType === 'component') {
|
|
4877
|
-
const _progFields = await func.datasource.get_progFields(SESSION_ID, dataSource);
|
|
4878
|
-
let view_field_obj = func.common.find_item_by_key(_progFields, 'field_id', field_id);
|
|
4879
|
-
if (!view_field_obj?.data?.serverField && record_id !== 'data_system') {
|
|
4880
|
-
if (!client_datasource_changes[dataSource]) {
|
|
4881
|
-
client_datasource_changes[dataSource] = {};
|
|
4882
|
-
}
|
|
4883
|
-
if (!client_datasource_changes[dataSource][record_id]) {
|
|
4884
|
-
client_datasource_changes[dataSource][record_id] = {};
|
|
4885
|
-
}
|
|
4886
|
-
client_datasource_changes[dataSource][record_id][field_id] = value;
|
|
4887
|
-
}
|
|
4888
|
-
}
|
|
4889
|
-
} else {
|
|
4890
|
-
// RUN AT CLIENT
|
|
4891
|
-
if ((tree_ret.menuType === 'component' && _ds._run_at !== 'client') || tree_ret.menuType === 'globals') {
|
|
4892
|
-
if (!server_datasource_changes[dataSource]) {
|
|
4893
|
-
server_datasource_changes[dataSource] = {};
|
|
4894
|
-
}
|
|
4895
|
-
if (!server_datasource_changes[dataSource][record_id]) {
|
|
4896
|
-
server_datasource_changes[dataSource][record_id] = {};
|
|
4897
|
-
}
|
|
4898
|
-
server_datasource_changes[dataSource][record_id][field_id] = value;
|
|
4899
|
-
}
|
|
4900
|
-
}
|
|
4901
|
-
}
|
|
4902
|
-
|
|
4903
|
-
if (!fields_changed.includes(field_id)) {
|
|
4904
|
-
fields_changed.push(field_id);
|
|
4905
|
-
|
|
4906
|
-
///// REFRESH PARAMETERS IN
|
|
4907
|
-
for (const [_dsSession, _ds] of Object.entries(_session.DS_GLB)) {
|
|
4908
|
-
if (_ds.args.parameters_raw_obj) {
|
|
4909
|
-
for (const [key, exp] of Object.entries(_ds.args.parameters_raw_obj)) {
|
|
4910
|
-
if (exp.includes(field_id)) {
|
|
4911
|
-
let ret = await func.expression.get(SESSION_ID, exp, _dsSession, 'parameters');
|
|
4912
|
-
_ds.in_parameters[key].value = ret.result;
|
|
4913
|
-
}
|
|
4914
|
-
}
|
|
4915
|
-
}
|
|
4916
|
-
}
|
|
4917
|
-
}
|
|
4918
|
-
if (!datasource_changed.includes(dataSource)) {
|
|
4919
|
-
datasource_changed.push(dataSource);
|
|
4920
|
-
}
|
|
4936
|
+
await queue_remote_change(dataSource, record_id, field_id, value, _ds);
|
|
4937
|
+
await mark_field_changed(dataSource, field_id);
|
|
4921
4938
|
|
|
4922
4939
|
if (!_ds.data_feed.rows_changed) {
|
|
4923
4940
|
_ds.data_feed.rows_changed = [];
|
|
@@ -5460,6 +5477,10 @@ func.datasource.get_value = async function (SESSION_ID, fieldIdP, dsSessionP, ro
|
|
|
5460
5477
|
if (_ds.alias) _field_id = _ds.alias[fieldIdP];
|
|
5461
5478
|
}
|
|
5462
5479
|
|
|
5480
|
+
if (typeof _ds?.dynamic_fields?.[_field_id] !== 'undefined') {
|
|
5481
|
+
return await return_dynamic_value(_field_id, _ds.dynamic_fields[_field_id]);
|
|
5482
|
+
}
|
|
5483
|
+
|
|
5463
5484
|
if (!org_dsSessionP && recordId) {
|
|
5464
5485
|
try {
|
|
5465
5486
|
const row_idx = func.common.find_ROWID_idx(_ds, recordId);
|
|
@@ -5485,10 +5506,6 @@ func.datasource.get_value = async function (SESSION_ID, fieldIdP, dsSessionP, ro
|
|
|
5485
5506
|
}
|
|
5486
5507
|
} catch (error) {}
|
|
5487
5508
|
|
|
5488
|
-
if (typeof _ds?.dynamic_fields?.[_field_id] !== 'undefined') {
|
|
5489
|
-
return await return_dynamic_value(_field_id, _ds.dynamic_fields[_field_id]);
|
|
5490
|
-
}
|
|
5491
|
-
|
|
5492
5509
|
return await search_in_parameters(fieldIdP);
|
|
5493
5510
|
};
|
|
5494
5511
|
|