@xuda.io/xuda-worker-bundle-min 1.3.2451 → 1.3.2453

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 +70 -53
  2. 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
- if (!update_local_scope_only) {
4873
- let tree_ret = await func.utils.TREE_OBJ.get(SESSION_ID, _ds.prog_id);
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xuda.io/xuda-worker-bundle-min",
3
- "version": "1.3.2451",
3
+ "version": "1.3.2453",
4
4
  "description": "xuda framework min",
5
5
  "main": "index.js",
6
6
  "scripts": {