@xuda.io/runtime-bundle 1.0.272 → 1.0.273

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.
@@ -14389,18 +14389,7 @@ func.UI.screen.execute_xu_functions = async function (
14389
14389
  if (is_skeleton) return;
14390
14390
 
14391
14391
  let view_field_id = val.value;
14392
- let field_id_from_exp
14393
- if (!_.isEmpty($elm?.data()?.xuAttributes?.["xu-exp:xu-bind"])) {
14394
- const res = (
14395
- await func.expression.get(
14396
- SESSION_ID,
14397
- $elm.data().xuAttributes["xu-exp:xu-bind"],
14398
- paramsP.dsSessionP,
14399
- "UI Attr EXP"
14400
- )
14401
- )
14402
- console.log(res)
14403
- }
14392
+
14404
14393
 
14405
14394
  let _prog_id = $elm.data().xuData.paramsP.prog_id;
14406
14395
  let _dsP = $elm.data().xuData.paramsP.dsSessionP;
@@ -14408,46 +14397,79 @@ func.UI.screen.execute_xu_functions = async function (
14408
14397
  if (!view_ret) return {};
14409
14398
 
14410
14399
  let is_dynamic_field = false
14411
- let field_prop
14400
+ let field_prop;
14401
+ let bind_field_id
14412
14402
 
14413
- if (["_FOR_VAL", "_FOR_KEY"].includes(view_field_id)) {
14414
- is_dynamic_field = true
14415
- field_prop = _ds.dynamic_fields[view_field_id]
14416
- } else {
14417
- field_prop = func.common.find_item_by_key(
14418
- view_ret.progFields,
14419
- "field_id",
14420
- view_field_id
14421
- );
14422
- if (!field_prop) {
14423
- /// find the field everywhere in the chain Aug 30 2024
14424
- const ret_get_value = await func.datasource.get_value(
14425
- SESSION_ID,
14426
- view_field_id,
14427
- _dsP // $elm.data().xuData.paramsP.dsSessionP
14403
+ const get_bind_field = async function (field_id) {
14404
+ if (["_FOR_VAL", "_FOR_KEY"].includes(field_id)) {
14405
+ is_dynamic_field = true
14406
+ field_prop = _ds.dynamic_fields[field_id]
14407
+ } else {
14408
+ field_prop = func.common.find_item_by_key(
14409
+ view_ret.progFields,
14410
+ "field_id",
14411
+ field_id
14428
14412
  );
14429
-
14430
- if (ret_get_value.found) {
14431
- _dsP = ret_get_value.dsSessionP;
14432
- let _ds = SESSION_OBJ[SESSION_ID].DS_GLB[_dsP];
14433
- _prog_id = _ds.prog_id;
14434
- const view_ret = await func.utils.VIEWS_OBJ.get(SESSION_ID, _prog_id);
14435
- if (!view_ret) return {};
14436
- field_prop = func.common.find_item_by_key(
14437
- view_ret.progFields,
14438
- "field_id",
14439
- view_field_id
14440
- );
14441
- }
14442
14413
  if (!field_prop) {
14443
- console.error(
14444
- `field ${view_field_id} not found in the program scope`
14414
+ /// find the field everywhere in the chain Aug 30 2024
14415
+ const ret_get_value = await func.datasource.get_value(
14416
+ SESSION_ID,
14417
+ field_id,
14418
+ _dsP // $elm.data().xuData.paramsP.dsSessionP
14445
14419
  );
14446
- return {};
14420
+
14421
+ if (ret_get_value.found) {
14422
+ _dsP = ret_get_value.dsSessionP;
14423
+ let _ds = SESSION_OBJ[SESSION_ID].DS_GLB[_dsP];
14424
+ _prog_id = _ds.prog_id;
14425
+ const view_ret = await func.utils.VIEWS_OBJ.get(SESSION_ID, _prog_id);
14426
+ if (!view_ret) return {};
14427
+ field_prop = func.common.find_item_by_key(
14428
+ view_ret.progFields,
14429
+ "field_id",
14430
+ field_id
14431
+ );
14432
+ }
14433
+ if (!field_prop) {
14434
+ throw (`field ${field_id} not found in the program scope`)
14435
+ }
14447
14436
  }
14448
14437
  }
14438
+ return field_id
14449
14439
  }
14450
14440
 
14441
+ try {
14442
+ bind_field_id = await get_bind_field(val.value)
14443
+ } catch (err) {
14444
+ try {
14445
+
14446
+ if (!_.isEmpty($elm?.data()?.xuAttributes?.["xu-exp:xu-bind"])) {
14447
+ const res = (
14448
+ await func.expression.get(
14449
+ SESSION_ID,
14450
+ $elm.data().xuAttributes["xu-exp:xu-bind"],
14451
+ paramsP.dsSessionP,
14452
+ "UI Attr EXP"
14453
+ )
14454
+ )
14455
+
14456
+ if (Object.keys(res.fields).length) {
14457
+ const field_id_from_exp = Object.keys(res.fields)[0]
14458
+ bind_field_id = await get_bind_field(field_id_from_exp)
14459
+ } else {
14460
+ throw (err.message)
14461
+ }
14462
+ } else {
14463
+ throw (err.message)
14464
+ }
14465
+ } catch (err) {
14466
+ console.error(err.message);
14467
+ return {};
14468
+ }
14469
+ return {};
14470
+ }
14471
+
14472
+
14451
14473
  const field_changed = async function (e) {
14452
14474
 
14453
14475
  var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[_dsP];
@@ -14466,7 +14488,7 @@ func.UI.screen.execute_xu_functions = async function (
14466
14488
  let datasource_changes = {
14467
14489
  [_dsP]: {
14468
14490
  [_ds.currentRecordId]: {
14469
- [view_field_id]: value,
14491
+ [bind_field_id]: value,
14470
14492
  },
14471
14493
  },
14472
14494
  };
@@ -14476,7 +14498,7 @@ func.UI.screen.execute_xu_functions = async function (
14476
14498
  const reference_source_obj = iterate_info?.reference_source_obj
14477
14499
  if (reference_source_obj) {
14478
14500
  if (reference_source_obj.ret.type === "array") {
14479
- if (iterate_info.iterator_val === view_field_id) {
14501
+ if (iterate_info.iterator_val === bind_field_id) {
14480
14502
  let new_arr = reference_source_obj.ret.value
14481
14503
  new_arr[Number($elm?.data()?.xuData?.iterate_info._key)] = value
14482
14504
  datasource_changes[_dsP][_ds.currentRecordId][reference_source_obj.fieldIdP] = new_arr
@@ -14512,7 +14534,7 @@ func.UI.screen.execute_xu_functions = async function (
14512
14534
  let value
14513
14535
  try {
14514
14536
  if (is_dynamic_field) {
14515
- value = _ds.dynamic_fields[view_field_id].value;
14537
+ value = _ds.dynamic_fields[bind_field_id].value;
14516
14538
  } else {
14517
14539
  const row_idx = func.common.find_ROWID_idx(_ds, _ds.currentRecordId);
14518
14540
  value = _ds.data_feed.rows?.[row_idx]?.[val.value];
@@ -11799,18 +11799,7 @@ func.UI.screen.execute_xu_functions = async function (
11799
11799
  if (is_skeleton) return;
11800
11800
 
11801
11801
  let view_field_id = val.value;
11802
- let field_id_from_exp
11803
- if (!_.isEmpty($elm?.data()?.xuAttributes?.["xu-exp:xu-bind"])) {
11804
- const res = (
11805
- await func.expression.get(
11806
- SESSION_ID,
11807
- $elm.data().xuAttributes["xu-exp:xu-bind"],
11808
- paramsP.dsSessionP,
11809
- "UI Attr EXP"
11810
- )
11811
- )
11812
- console.log(res)
11813
- }
11802
+
11814
11803
 
11815
11804
  let _prog_id = $elm.data().xuData.paramsP.prog_id;
11816
11805
  let _dsP = $elm.data().xuData.paramsP.dsSessionP;
@@ -11818,46 +11807,79 @@ func.UI.screen.execute_xu_functions = async function (
11818
11807
  if (!view_ret) return {};
11819
11808
 
11820
11809
  let is_dynamic_field = false
11821
- let field_prop
11810
+ let field_prop;
11811
+ let bind_field_id
11822
11812
 
11823
- if (["_FOR_VAL", "_FOR_KEY"].includes(view_field_id)) {
11824
- is_dynamic_field = true
11825
- field_prop = _ds.dynamic_fields[view_field_id]
11826
- } else {
11827
- field_prop = func.common.find_item_by_key(
11828
- view_ret.progFields,
11829
- "field_id",
11830
- view_field_id
11831
- );
11832
- if (!field_prop) {
11833
- /// find the field everywhere in the chain Aug 30 2024
11834
- const ret_get_value = await func.datasource.get_value(
11835
- SESSION_ID,
11836
- view_field_id,
11837
- _dsP // $elm.data().xuData.paramsP.dsSessionP
11813
+ const get_bind_field = async function (field_id) {
11814
+ if (["_FOR_VAL", "_FOR_KEY"].includes(field_id)) {
11815
+ is_dynamic_field = true
11816
+ field_prop = _ds.dynamic_fields[field_id]
11817
+ } else {
11818
+ field_prop = func.common.find_item_by_key(
11819
+ view_ret.progFields,
11820
+ "field_id",
11821
+ field_id
11838
11822
  );
11839
-
11840
- if (ret_get_value.found) {
11841
- _dsP = ret_get_value.dsSessionP;
11842
- let _ds = SESSION_OBJ[SESSION_ID].DS_GLB[_dsP];
11843
- _prog_id = _ds.prog_id;
11844
- const view_ret = await func.utils.VIEWS_OBJ.get(SESSION_ID, _prog_id);
11845
- if (!view_ret) return {};
11846
- field_prop = func.common.find_item_by_key(
11847
- view_ret.progFields,
11848
- "field_id",
11849
- view_field_id
11850
- );
11851
- }
11852
11823
  if (!field_prop) {
11853
- console.error(
11854
- `field ${view_field_id} not found in the program scope`
11824
+ /// find the field everywhere in the chain Aug 30 2024
11825
+ const ret_get_value = await func.datasource.get_value(
11826
+ SESSION_ID,
11827
+ field_id,
11828
+ _dsP // $elm.data().xuData.paramsP.dsSessionP
11855
11829
  );
11856
- return {};
11830
+
11831
+ if (ret_get_value.found) {
11832
+ _dsP = ret_get_value.dsSessionP;
11833
+ let _ds = SESSION_OBJ[SESSION_ID].DS_GLB[_dsP];
11834
+ _prog_id = _ds.prog_id;
11835
+ const view_ret = await func.utils.VIEWS_OBJ.get(SESSION_ID, _prog_id);
11836
+ if (!view_ret) return {};
11837
+ field_prop = func.common.find_item_by_key(
11838
+ view_ret.progFields,
11839
+ "field_id",
11840
+ field_id
11841
+ );
11842
+ }
11843
+ if (!field_prop) {
11844
+ throw (`field ${field_id} not found in the program scope`)
11845
+ }
11857
11846
  }
11858
11847
  }
11848
+ return field_id
11859
11849
  }
11860
11850
 
11851
+ try {
11852
+ bind_field_id = await get_bind_field(val.value)
11853
+ } catch (err) {
11854
+ try {
11855
+
11856
+ if (!_.isEmpty($elm?.data()?.xuAttributes?.["xu-exp:xu-bind"])) {
11857
+ const res = (
11858
+ await func.expression.get(
11859
+ SESSION_ID,
11860
+ $elm.data().xuAttributes["xu-exp:xu-bind"],
11861
+ paramsP.dsSessionP,
11862
+ "UI Attr EXP"
11863
+ )
11864
+ )
11865
+
11866
+ if (Object.keys(res.fields).length) {
11867
+ const field_id_from_exp = Object.keys(res.fields)[0]
11868
+ bind_field_id = await get_bind_field(field_id_from_exp)
11869
+ } else {
11870
+ throw (err.message)
11871
+ }
11872
+ } else {
11873
+ throw (err.message)
11874
+ }
11875
+ } catch (err) {
11876
+ console.error(err.message);
11877
+ return {};
11878
+ }
11879
+ return {};
11880
+ }
11881
+
11882
+
11861
11883
  const field_changed = async function (e) {
11862
11884
 
11863
11885
  var _ds = SESSION_OBJ[SESSION_ID].DS_GLB[_dsP];
@@ -11876,7 +11898,7 @@ func.UI.screen.execute_xu_functions = async function (
11876
11898
  let datasource_changes = {
11877
11899
  [_dsP]: {
11878
11900
  [_ds.currentRecordId]: {
11879
- [view_field_id]: value,
11901
+ [bind_field_id]: value,
11880
11902
  },
11881
11903
  },
11882
11904
  };
@@ -11886,7 +11908,7 @@ func.UI.screen.execute_xu_functions = async function (
11886
11908
  const reference_source_obj = iterate_info?.reference_source_obj
11887
11909
  if (reference_source_obj) {
11888
11910
  if (reference_source_obj.ret.type === "array") {
11889
- if (iterate_info.iterator_val === view_field_id) {
11911
+ if (iterate_info.iterator_val === bind_field_id) {
11890
11912
  let new_arr = reference_source_obj.ret.value
11891
11913
  new_arr[Number($elm?.data()?.xuData?.iterate_info._key)] = value
11892
11914
  datasource_changes[_dsP][_ds.currentRecordId][reference_source_obj.fieldIdP] = new_arr
@@ -11922,7 +11944,7 @@ func.UI.screen.execute_xu_functions = async function (
11922
11944
  let value
11923
11945
  try {
11924
11946
  if (is_dynamic_field) {
11925
- value = _ds.dynamic_fields[view_field_id].value;
11947
+ value = _ds.dynamic_fields[bind_field_id].value;
11926
11948
  } else {
11927
11949
  const row_idx = func.common.find_ROWID_idx(_ds, _ds.currentRecordId);
11928
11950
  value = _ds.data_feed.rows?.[row_idx]?.[val.value];