@xuda.io/runtime-bundle 1.0.479 → 1.0.481

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.
@@ -3321,7 +3321,7 @@ func.datasource.create = async function (
3321
3321
  }
3322
3322
  }
3323
3323
 
3324
- var datasource_changes = {
3324
+ const datasource_changes = {
3325
3325
  [dsSessionP]: {
3326
3326
  ['datasource_main']: {
3327
3327
  stat: 'idle',
@@ -9098,18 +9098,7 @@ func.UI.update_xu_ref = function (SESSION_ID, dsSessionP, ref_field_id, $elm) {
9098
9098
  SYS_GLOBAL_OBJ_REFS[ref_field_id].props = _ds.in_parameters || {};
9099
9099
 
9100
9100
  if ($elm) {
9101
- const get_attributes = function (retry = 0) {
9102
- if (retry > 500) return;
9103
- return (
9104
- $elm?.data()?.xuPanelWrapper?.panelXuAttributes ||
9105
- $elm?.data()?.xuData?.debug_info?.attribute_stat ||
9106
- setTimeout(() => {
9107
- get_attributes(retry + 1);
9108
- }, 500)
9109
- );
9110
- };
9111
-
9112
- const attributes = get_attributes();
9101
+ const attributes = $elm?.data()?.xuData?.xuPanelProps || $elm?.data()?.xuData?.debug_info?.attribute_stat || {};
9113
9102
  SYS_GLOBAL_OBJ_REFS[ref_field_id].attributes = attributes;
9114
9103
  SYS_GLOBAL_OBJ_REFS[ref_field_id].xu_ui_id = $elm.attr('xu-ui-id');
9115
9104
  }
@@ -9968,31 +9957,32 @@ func.UI.screen.refresh_screen_old = async function (SESSION_ID, fields_changed_a
9968
9957
  }
9969
9958
  };
9970
9959
 
9971
- const get_params_obj = async function (SESSION_ID, prog_id, parameters_obj_inP) {
9972
- const _prog = await func.utils.VIEWS_OBJ.get(SESSION_ID, prog_id);
9973
- if (!_prog) {
9974
- return;
9975
- }
9960
+ // const get_params_obj = async function (SESSION_ID, prog_id, parameters_obj_inP) {
9961
+ // const _prog = await func.utils.VIEWS_OBJ.get(SESSION_ID, prog_id);
9962
+ // if (!_prog) {
9963
+ // return;
9964
+ // }
9965
+
9966
+ // // get in parameters
9967
+ // var params_obj = {};
9968
+ // if (_prog?.properties?.progParams) {
9969
+ // for await (const [key, val] of Object.entries(_prog.properties.progParams)) {
9970
+ // if (!val.data.dir === 'in') continue;
9971
+ // if (typeof parameters_obj_inP?.[val.data.parameter] !== 'undefined') {
9972
+ // if (parameters_obj_inP?.[val.data.parameter].fx) {
9973
+ // let ret = await func.expression.get(SESSION_ID, parameters_obj_inP?.[val.data.parameter].fx, dsSession, 'parameters');
9974
+ // params_obj[val.data.parameter] = ret.result;
9975
+ // } else {
9976
+ // params_obj[val.data.parameter] = parameters_obj_inP?.[val.data.parameter].value;
9977
+ // }
9978
+ // continue;
9979
+ // }
9980
+ // console.warn(`Warning: Program ${_prog.properties.menuName} expected In parameter: ${val.data.parameter} but received null instead`);
9981
+ // }
9982
+ // }
9983
+ // return params_obj;
9984
+ // };
9976
9985
 
9977
- // get in parameters
9978
- var params_obj = {};
9979
- if (_prog?.properties?.progParams) {
9980
- for await (const [key, val] of Object.entries(_prog.properties.progParams)) {
9981
- if (!val.data.dir === 'in') continue;
9982
- if (typeof parameters_obj_inP?.[val.data.parameter] !== 'undefined') {
9983
- if (parameters_obj_inP?.[val.data.parameter].fx) {
9984
- let ret = await func.expression.get(SESSION_ID, parameters_obj_inP?.[val.data.parameter].fx, dsSession, 'parameters');
9985
- params_obj[val.data.parameter] = ret.result;
9986
- } else {
9987
- params_obj[val.data.parameter] = parameters_obj_inP?.[val.data.parameter].value;
9988
- }
9989
- continue;
9990
- }
9991
- console.warn(`Warning: Program ${_prog.properties.menuName} expected In parameter: ${val.data.parameter} but received null instead`);
9992
- }
9993
- }
9994
- return params_obj;
9995
- };
9996
9986
  const get_params_obj_new = async function (SESSION_ID, prog_id, nodeP, dsSession) {
9997
9987
  const _prog = await func.utils.VIEWS_OBJ.get(SESSION_ID, prog_id);
9998
9988
  if (!_prog) return;
@@ -10054,6 +10044,7 @@ func.UI.screen.execute_xu_functions = async function (SESSION_ID, is_skeleton, $
10054
10044
  const param_obj = await get_params_obj_new(SESSION_ID, prog_id, nodeP, paramsP.dsSessionP);
10055
10045
  let ret_panel = await func.UI.screen.init(SESSION_ID, prog_id, paramsP.screenId, _ds, $elm, null, _ds.currentRecordId, null, true, param_obj, 'initXu_panel');
10056
10046
  ret = { $new_div: ret_panel };
10047
+ $container.data().xuData.xuPanelProps = $elm.data().xuAttributes;
10057
10048
  return ret;
10058
10049
  }
10059
10050
 
@@ -14622,99 +14613,157 @@ func.expression.get = async function (SESSION_ID, valP, dsSessionP, sourceP, row
14622
14613
  return new_class.get();
14623
14614
  };
14624
14615
 
14616
+ // func.expression.parse = function (strP) {
14617
+ // var extract_str = function (strP, posP) {
14618
+ // if (!posP) posP = 0;
14619
+ // var clean_split_str = function (arrP) {
14620
+ // var arr = [];
14621
+ // if (arrP && arrP.length > 1 && arrP[0] === '' && arrP[1].indexOf('@') > -1) {
14622
+ // for (var i = 1; i <= arrP.length; i++) {
14623
+ // arr.push(arrP[i]);
14624
+ // }
14625
+ // return arr;
14626
+ // } else return arrP;
14627
+ // };
14628
+ // var nonLettersPatt = /\W/; // non letters
14629
+ // var validSymbolsNoArray = /[^.@\[]/; //valid symbols no array /[^.@\[\]\]]/
14630
+ // var validSymbolsWithArray = /[^.@"'\[\]]/; //valid symbols with array
14631
+ // var validSymbols = validSymbolsNoArray;
14632
+ // var splitTmp = strP.replace(/@/g, '^^@').split('^^');
14633
+ // var split = clean_split_str(splitTmp);
14634
+ // var obj = [];
14635
+ // if (split) {
14636
+ // for (let val of split) {
14637
+ // // run on @ segments
14638
+ // if (val) {
14639
+ // var pos = strP.indexOf(val);
14640
+ // if (val && val.substr(0, 1) === '@') {
14641
+ // var tmpStr = '';
14642
+ // var word_start_pos = undefined;
14643
+ // var word_end_pos = undefined;
14644
+ // // run on @ segment string
14645
+ // for (var i = 0; i <= val.length; i++) {
14646
+ // var key1 = i;
14647
+ // var val1 = val.substr(i, 1);
14648
+ // if (
14649
+ // val1 === '.' &&
14650
+ // !word_start_pos // find first dot
14651
+ // )
14652
+ // word_start_pos = key1;
14653
+ // if (
14654
+ // word_start_pos &&
14655
+ // key1 > word_start_pos &&
14656
+ // nonLettersPatt.test(val1) // find any sign character to mark the end of word
14657
+ // )
14658
+ // word_end_pos = key1;
14659
+ // if (word_start_pos && word_start_pos >= 0 && word_end_pos && word_end_pos >= 0) {
14660
+ // // find the word
14661
+ // var word = val.substr(word_start_pos + 1, word_end_pos - word_start_pos - 1); // get the word
14662
+ // // if (glb.ALL_PROPERTIES_ARR.indexOf(word) === -1) {
14663
+ // // compare with internal properties
14664
+ // tmpStr = tmpStr.substr(0, word_start_pos) + '^^' + tmpStr.substr(word_start_pos, word_end_pos);
14665
+ // // }
14666
+ // if (val.substr(word_end_pos, 1) === '.') word_start_pos = word_end_pos;
14667
+ // else word_start_pos = null;
14668
+ // word_end_pos = null;
14669
+ // }
14670
+ // if (val1 === '[') validSymbols = validSymbolsWithArray;
14671
+ // if (nonLettersPatt.test(val1) && validSymbols.test(val1) && tmpStr.indexOf('^^') === -1) {
14672
+ // tmpStr += '^^' + val1;
14673
+ // } else tmpStr += val1;
14674
+ // }
14675
+ // // });
14676
+ // if (tmpStr.indexOf('^^') > -1) {
14677
+ // var obj1 = extract_str(tmpStr, pos);
14678
+ // obj = obj.concat(obj1);
14679
+ // } else {
14680
+ // // push clean @var
14681
+ // var fieldId = undefined;
14682
+ // if (val) {
14683
+ // fieldId = val.substr(1, val.length);
14684
+ // if (val.indexOf('.') > -1) fieldId = val.substr(1, val.indexOf('.') - 1);
14685
+ // if (val.indexOf('[') > -1) fieldId = val.substr(1, val.indexOf('[') - 1);
14686
+ // //
14687
+ // // if (val.indexOf("]") > -1)
14688
+ // // fieldId = val.substr(1, val.indexOf("]") - 1);
14689
+ // }
14690
+ // obj.push({
14691
+ // value: val,
14692
+ // fieldId: fieldId,
14693
+ // pos: pos + posP,
14694
+ // });
14695
+ // }
14696
+ // } else {
14697
+ // obj.push({
14698
+ // value: val,
14699
+ // pos: pos + posP,
14700
+ // });
14701
+ // }
14702
+ // }
14703
+ // }
14704
+ // return obj;
14705
+ // }
14706
+ // };
14707
+ // var res = extract_str(strP);
14708
+ // return res;
14709
+ // };
14710
+
14625
14711
  func.expression.parse = function (strP) {
14626
- var extract_str = function (strP, posP) {
14627
- if (!posP) posP = 0;
14628
- var clean_split_str = function (arrP) {
14629
- var arr = [];
14630
- if (arrP && arrP.length > 1 && arrP[0] === '' && arrP[1].indexOf('@') > -1) {
14631
- for (var i = 1; i <= arrP.length; i++) {
14632
- arr.push(arrP[i]);
14633
- }
14634
- return arr;
14635
- } else return arrP;
14636
- };
14637
- var nonLettersPatt = /\W/; // non letters
14638
- var validSymbolsNoArray = /[^.@\[]/; //valid symbols no array /[^.@\[\]\]]/
14639
- var validSymbolsWithArray = /[^.@"'\[\]]/; //valid symbols with array
14640
- var validSymbols = validSymbolsNoArray;
14641
- var splitTmp = strP.replace(/@/g, '^^@').split('^^');
14642
- var split = clean_split_str(splitTmp);
14643
- var obj = [];
14644
- if (split) {
14645
- for (let val of split) {
14646
- // run on @ segments
14647
- if (val) {
14648
- var pos = strP.indexOf(val);
14649
- if (val && val.substr(0, 1) === '@') {
14650
- var tmpStr = '';
14651
- var word_start_pos = undefined;
14652
- var word_end_pos = undefined;
14653
- // run on @ segment string
14654
- for (var i = 0; i <= val.length; i++) {
14655
- var key1 = i;
14656
- var val1 = val.substr(i, 1);
14657
- if (
14658
- val1 === '.' &&
14659
- !word_start_pos // find first dot
14660
- )
14661
- word_start_pos = key1;
14662
- if (
14663
- word_start_pos &&
14664
- key1 > word_start_pos &&
14665
- nonLettersPatt.test(val1) // find any sign character to mark the end of word
14666
- )
14667
- word_end_pos = key1;
14668
- if (word_start_pos && word_start_pos >= 0 && word_end_pos && word_end_pos >= 0) {
14669
- // find the word
14670
- var word = val.substr(word_start_pos + 1, word_end_pos - word_start_pos - 1); // get the word
14671
- // if (glb.ALL_PROPERTIES_ARR.indexOf(word) === -1) {
14672
- // compare with internal properties
14673
- tmpStr = tmpStr.substr(0, word_start_pos) + '^^' + tmpStr.substr(word_start_pos, word_end_pos);
14674
- // }
14675
- if (val.substr(word_end_pos, 1) === '.') word_start_pos = word_end_pos;
14676
- else word_start_pos = null;
14677
- word_end_pos = null;
14678
- }
14679
- if (val1 === '[') validSymbols = validSymbolsWithArray;
14680
- if (nonLettersPatt.test(val1) && validSymbols.test(val1) && tmpStr.indexOf('^^') === -1) {
14681
- tmpStr += '^^' + val1;
14682
- } else tmpStr += val1;
14683
- }
14684
- // });
14685
- if (tmpStr.indexOf('^^') > -1) {
14686
- var obj1 = extract_str(tmpStr, pos);
14687
- obj = obj.concat(obj1);
14688
- } else {
14689
- // push clean @var
14690
- var fieldId = undefined;
14691
- if (val) {
14692
- fieldId = val.substr(1, val.length);
14693
- if (val.indexOf('.') > -1) fieldId = val.substr(1, val.indexOf('.') - 1);
14694
- if (val.indexOf('[') > -1) fieldId = val.substr(1, val.indexOf('[') - 1);
14695
- //
14696
- // if (val.indexOf("]") > -1)
14697
- // fieldId = val.substr(1, val.indexOf("]") - 1);
14698
- }
14699
- obj.push({
14700
- value: val,
14701
- fieldId: fieldId,
14702
- pos: pos + posP,
14703
- });
14704
- }
14705
- } else {
14706
- obj.push({
14707
- value: val,
14708
- pos: pos + posP,
14709
- });
14712
+ const nonLettersPatt = /\W/;
14713
+ const validSymbolsNoArray = /[^.@\[]/;
14714
+ const validSymbolsWithArray = /[^.@"'\[\]]/;
14715
+
14716
+ function extractStr(str, startPos = 0) {
14717
+ const cleanSplit = (arr) => (arr?.length > 1 && arr[0] === '' && arr[1].includes('@') ? arr.slice(1) : arr);
14718
+
14719
+ const segments = cleanSplit(str.replace(/@/g, '^^@').split('^^'));
14720
+ const result = [];
14721
+
14722
+ for (const val of segments || []) {
14723
+ if (!val) continue;
14724
+ const pos = str.indexOf(val) + startPos;
14725
+
14726
+ if (val.startsWith('@')) {
14727
+ let tmpStr = '';
14728
+ let wordStart = null;
14729
+ let wordEnd = null;
14730
+ let validSymbols = validSymbolsNoArray;
14731
+
14732
+ for (let i = 0; i < val.length; i++) {
14733
+ const char = val[i];
14734
+
14735
+ if (char === '[') validSymbols = validSymbolsWithArray;
14736
+ if (char === '.' && wordStart === null) wordStart = i;
14737
+ else if (wordStart !== null && nonLettersPatt.test(char)) wordEnd = i;
14738
+
14739
+ if (wordStart !== null && wordEnd !== null) {
14740
+ const word = val.slice(wordStart + 1, wordEnd);
14741
+ tmpStr = tmpStr.slice(0, wordStart) + '^^' + tmpStr.slice(wordStart, wordEnd);
14742
+ wordStart = char === '.' ? wordEnd : null;
14743
+ wordEnd = null;
14710
14744
  }
14745
+
14746
+ tmpStr += nonLettersPatt.test(char) && validSymbols.test(char) && !tmpStr.includes('^^') ? '^^' + char : char;
14711
14747
  }
14748
+
14749
+ if (tmpStr.includes('^^')) {
14750
+ result.push(...extractStr(tmpStr, pos));
14751
+ } else {
14752
+ const fieldIdMatch = val.match(/^@([^.\[]+)/);
14753
+ result.push({
14754
+ value: val,
14755
+ fieldId: fieldIdMatch ? fieldIdMatch[1] : undefined,
14756
+ pos,
14757
+ });
14758
+ }
14759
+ } else {
14760
+ result.push({ value: val, pos });
14712
14761
  }
14713
- return obj;
14714
14762
  }
14715
- };
14716
- var res = extract_str(strP);
14717
- return res;
14763
+ return result;
14764
+ }
14765
+
14766
+ return extractStr(strP);
14718
14767
  };
14719
14768
 
14720
14769
  func.expression.get_property = async function (valP) {