@xuda.io/runtime-bundle 1.0.1426 → 1.0.1427

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.
@@ -39616,6 +39616,58 @@ func.datasource.update = async function (SESSION_ID, datasource_changes, update_
39616
39616
  var datasource_changed = [];
39617
39617
  let client_datasource_changes = {};
39618
39618
  let server_datasource_changes = {};
39619
+ const mark_field_changed = async function (dataSource, field_id) {
39620
+ if (!fields_changed.includes(field_id)) {
39621
+ fields_changed.push(field_id);
39622
+
39623
+ // Refresh dependent in-parameters that reference this field.
39624
+ for (const [_dsSession, _ds] of Object.entries(_session.DS_GLB)) {
39625
+ if (_ds.args.parameters_raw_obj) {
39626
+ for (const [key, exp] of Object.entries(_ds.args.parameters_raw_obj)) {
39627
+ if (exp.includes(field_id)) {
39628
+ let ret = await func.expression.get(SESSION_ID, exp, _dsSession, 'parameters');
39629
+ _ds.in_parameters[key].value = ret.result;
39630
+ }
39631
+ }
39632
+ }
39633
+ }
39634
+ }
39635
+ if (!datasource_changed.includes(dataSource)) {
39636
+ datasource_changed.push(dataSource);
39637
+ }
39638
+ };
39639
+ const queue_remote_change = async function (dataSource, record_id, field_id, value, _ds) {
39640
+ if (update_local_scope_only) {
39641
+ return;
39642
+ }
39643
+
39644
+ let tree_ret = await func.utils.TREE_OBJ.get(SESSION_ID, _ds.prog_id);
39645
+ if (glb.IS_WORKER) {
39646
+ if (tree_ret.menuType === 'globals' || tree_ret.menuType === 'component') {
39647
+ const _progFields = await func.datasource.get_progFields(SESSION_ID, dataSource);
39648
+ let view_field_obj = func.common.find_item_by_key(_progFields, 'field_id', field_id);
39649
+ if (!view_field_obj?.data?.serverField && record_id !== 'data_system') {
39650
+ if (!client_datasource_changes[dataSource]) {
39651
+ client_datasource_changes[dataSource] = {};
39652
+ }
39653
+ if (!client_datasource_changes[dataSource][record_id]) {
39654
+ client_datasource_changes[dataSource][record_id] = {};
39655
+ }
39656
+ client_datasource_changes[dataSource][record_id][field_id] = value;
39657
+ }
39658
+ }
39659
+ } else {
39660
+ if ((tree_ret.menuType === 'component' && _ds._run_at !== 'client') || tree_ret.menuType === 'globals') {
39661
+ if (!server_datasource_changes[dataSource]) {
39662
+ server_datasource_changes[dataSource] = {};
39663
+ }
39664
+ if (!server_datasource_changes[dataSource][record_id]) {
39665
+ server_datasource_changes[dataSource][record_id] = {};
39666
+ }
39667
+ server_datasource_changes[dataSource][record_id][field_id] = value;
39668
+ }
39669
+ }
39670
+ };
39619
39671
 
39620
39672
  const update_xu_ref = function (dataSource) {
39621
39673
  let ret;
@@ -39686,6 +39738,18 @@ func.datasource.update = async function (SESSION_ID, datasource_changes, update_
39686
39738
  continue;
39687
39739
  }
39688
39740
 
39741
+ const dynamic_field = _ds?.dynamic_fields?.[field_id];
39742
+ if (dynamic_field) {
39743
+ if (!xu_isEqual(dynamic_field.value, value)) {
39744
+ dynamic_field.value = value;
39745
+ await set_fieldComputed_dependencies(dataSource, field_id, null);
39746
+ update_xu_ref(dataSource);
39747
+ await queue_remote_change(dataSource, record_id, field_id, value, _ds);
39748
+ await mark_field_changed(dataSource, field_id);
39749
+ }
39750
+ continue;
39751
+ }
39752
+
39689
39753
  try {
39690
39754
  const row_idx = func.common.find_ROWID_idx(_ds, record_id);
39691
39755
  // if (_ds.data_feed.rows[row_idx][field_id] !== value) {
@@ -39696,55 +39760,8 @@ func.datasource.update = async function (SESSION_ID, datasource_changes, update_
39696
39760
  // search the field in refs
39697
39761
  update_xu_ref(dataSource);
39698
39762
 
39699
- if (!update_local_scope_only) {
39700
- let tree_ret = await func.utils.TREE_OBJ.get(SESSION_ID, _ds.prog_id);
39701
- if (glb.IS_WORKER) {
39702
- // RUN AT SERVER
39703
- if (tree_ret.menuType === 'globals' || tree_ret.menuType === 'component') {
39704
- const _progFields = await func.datasource.get_progFields(SESSION_ID, dataSource);
39705
- let view_field_obj = func.common.find_item_by_key(_progFields, 'field_id', field_id);
39706
- if (!view_field_obj?.data?.serverField && record_id !== 'data_system') {
39707
- if (!client_datasource_changes[dataSource]) {
39708
- client_datasource_changes[dataSource] = {};
39709
- }
39710
- if (!client_datasource_changes[dataSource][record_id]) {
39711
- client_datasource_changes[dataSource][record_id] = {};
39712
- }
39713
- client_datasource_changes[dataSource][record_id][field_id] = value;
39714
- }
39715
- }
39716
- } else {
39717
- // RUN AT CLIENT
39718
- if ((tree_ret.menuType === 'component' && _ds._run_at !== 'client') || tree_ret.menuType === 'globals') {
39719
- if (!server_datasource_changes[dataSource]) {
39720
- server_datasource_changes[dataSource] = {};
39721
- }
39722
- if (!server_datasource_changes[dataSource][record_id]) {
39723
- server_datasource_changes[dataSource][record_id] = {};
39724
- }
39725
- server_datasource_changes[dataSource][record_id][field_id] = value;
39726
- }
39727
- }
39728
- }
39729
-
39730
- if (!fields_changed.includes(field_id)) {
39731
- fields_changed.push(field_id);
39732
-
39733
- ///// REFRESH PARAMETERS IN
39734
- for (const [_dsSession, _ds] of Object.entries(_session.DS_GLB)) {
39735
- if (_ds.args.parameters_raw_obj) {
39736
- for (const [key, exp] of Object.entries(_ds.args.parameters_raw_obj)) {
39737
- if (exp.includes(field_id)) {
39738
- let ret = await func.expression.get(SESSION_ID, exp, _dsSession, 'parameters');
39739
- _ds.in_parameters[key].value = ret.result;
39740
- }
39741
- }
39742
- }
39743
- }
39744
- }
39745
- if (!datasource_changed.includes(dataSource)) {
39746
- datasource_changed.push(dataSource);
39747
- }
39763
+ await queue_remote_change(dataSource, record_id, field_id, value, _ds);
39764
+ await mark_field_changed(dataSource, field_id);
39748
39765
 
39749
39766
  if (!_ds.data_feed.rows_changed) {
39750
39767
  _ds.data_feed.rows_changed = [];
@@ -40287,6 +40304,10 @@ func.datasource.get_value = async function (SESSION_ID, fieldIdP, dsSessionP, ro
40287
40304
  if (_ds.alias) _field_id = _ds.alias[fieldIdP];
40288
40305
  }
40289
40306
 
40307
+ if (typeof _ds?.dynamic_fields?.[_field_id] !== 'undefined') {
40308
+ return await return_dynamic_value(_field_id, _ds.dynamic_fields[_field_id]);
40309
+ }
40310
+
40290
40311
  if (!org_dsSessionP && recordId) {
40291
40312
  try {
40292
40313
  const row_idx = func.common.find_ROWID_idx(_ds, recordId);
@@ -40312,10 +40333,6 @@ func.datasource.get_value = async function (SESSION_ID, fieldIdP, dsSessionP, ro
40312
40333
  }
40313
40334
  } catch (error) {}
40314
40335
 
40315
- if (typeof _ds?.dynamic_fields?.[_field_id] !== 'undefined') {
40316
- return await return_dynamic_value(_field_id, _ds.dynamic_fields[_field_id]);
40317
- }
40318
-
40319
40336
  return await search_in_parameters(fieldIdP);
40320
40337
  };
40321
40338