@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.
@@ -3320,7 +3320,7 @@ func.datasource.create = async function (
3320
3320
  }
3321
3321
  }
3322
3322
 
3323
- var datasource_changes = {
3323
+ const datasource_changes = {
3324
3324
  [dsSessionP]: {
3325
3325
  ['datasource_main']: {
3326
3326
  stat: 'idle',
@@ -9097,18 +9097,7 @@ func.UI.update_xu_ref = function (SESSION_ID, dsSessionP, ref_field_id, $elm) {
9097
9097
  SYS_GLOBAL_OBJ_REFS[ref_field_id].props = _ds.in_parameters || {};
9098
9098
 
9099
9099
  if ($elm) {
9100
- const get_attributes = function (retry = 0) {
9101
- if (retry > 500) return;
9102
- return (
9103
- $elm?.data()?.xuPanelWrapper?.panelXuAttributes ||
9104
- $elm?.data()?.xuData?.debug_info?.attribute_stat ||
9105
- setTimeout(() => {
9106
- get_attributes(retry + 1);
9107
- }, 500)
9108
- );
9109
- };
9110
-
9111
- const attributes = get_attributes();
9100
+ const attributes = $elm?.data()?.xuData?.xuPanelProps || $elm?.data()?.xuData?.debug_info?.attribute_stat || {};
9112
9101
  SYS_GLOBAL_OBJ_REFS[ref_field_id].attributes = attributes;
9113
9102
  SYS_GLOBAL_OBJ_REFS[ref_field_id].xu_ui_id = $elm.attr('xu-ui-id');
9114
9103
  }
@@ -10827,99 +10816,157 @@ func.expression.get = async function (SESSION_ID, valP, dsSessionP, sourceP, row
10827
10816
  return new_class.get();
10828
10817
  };
10829
10818
 
10819
+ // func.expression.parse = function (strP) {
10820
+ // var extract_str = function (strP, posP) {
10821
+ // if (!posP) posP = 0;
10822
+ // var clean_split_str = function (arrP) {
10823
+ // var arr = [];
10824
+ // if (arrP && arrP.length > 1 && arrP[0] === '' && arrP[1].indexOf('@') > -1) {
10825
+ // for (var i = 1; i <= arrP.length; i++) {
10826
+ // arr.push(arrP[i]);
10827
+ // }
10828
+ // return arr;
10829
+ // } else return arrP;
10830
+ // };
10831
+ // var nonLettersPatt = /\W/; // non letters
10832
+ // var validSymbolsNoArray = /[^.@\[]/; //valid symbols no array /[^.@\[\]\]]/
10833
+ // var validSymbolsWithArray = /[^.@"'\[\]]/; //valid symbols with array
10834
+ // var validSymbols = validSymbolsNoArray;
10835
+ // var splitTmp = strP.replace(/@/g, '^^@').split('^^');
10836
+ // var split = clean_split_str(splitTmp);
10837
+ // var obj = [];
10838
+ // if (split) {
10839
+ // for (let val of split) {
10840
+ // // run on @ segments
10841
+ // if (val) {
10842
+ // var pos = strP.indexOf(val);
10843
+ // if (val && val.substr(0, 1) === '@') {
10844
+ // var tmpStr = '';
10845
+ // var word_start_pos = undefined;
10846
+ // var word_end_pos = undefined;
10847
+ // // run on @ segment string
10848
+ // for (var i = 0; i <= val.length; i++) {
10849
+ // var key1 = i;
10850
+ // var val1 = val.substr(i, 1);
10851
+ // if (
10852
+ // val1 === '.' &&
10853
+ // !word_start_pos // find first dot
10854
+ // )
10855
+ // word_start_pos = key1;
10856
+ // if (
10857
+ // word_start_pos &&
10858
+ // key1 > word_start_pos &&
10859
+ // nonLettersPatt.test(val1) // find any sign character to mark the end of word
10860
+ // )
10861
+ // word_end_pos = key1;
10862
+ // if (word_start_pos && word_start_pos >= 0 && word_end_pos && word_end_pos >= 0) {
10863
+ // // find the word
10864
+ // var word = val.substr(word_start_pos + 1, word_end_pos - word_start_pos - 1); // get the word
10865
+ // // if (glb.ALL_PROPERTIES_ARR.indexOf(word) === -1) {
10866
+ // // compare with internal properties
10867
+ // tmpStr = tmpStr.substr(0, word_start_pos) + '^^' + tmpStr.substr(word_start_pos, word_end_pos);
10868
+ // // }
10869
+ // if (val.substr(word_end_pos, 1) === '.') word_start_pos = word_end_pos;
10870
+ // else word_start_pos = null;
10871
+ // word_end_pos = null;
10872
+ // }
10873
+ // if (val1 === '[') validSymbols = validSymbolsWithArray;
10874
+ // if (nonLettersPatt.test(val1) && validSymbols.test(val1) && tmpStr.indexOf('^^') === -1) {
10875
+ // tmpStr += '^^' + val1;
10876
+ // } else tmpStr += val1;
10877
+ // }
10878
+ // // });
10879
+ // if (tmpStr.indexOf('^^') > -1) {
10880
+ // var obj1 = extract_str(tmpStr, pos);
10881
+ // obj = obj.concat(obj1);
10882
+ // } else {
10883
+ // // push clean @var
10884
+ // var fieldId = undefined;
10885
+ // if (val) {
10886
+ // fieldId = val.substr(1, val.length);
10887
+ // if (val.indexOf('.') > -1) fieldId = val.substr(1, val.indexOf('.') - 1);
10888
+ // if (val.indexOf('[') > -1) fieldId = val.substr(1, val.indexOf('[') - 1);
10889
+ // //
10890
+ // // if (val.indexOf("]") > -1)
10891
+ // // fieldId = val.substr(1, val.indexOf("]") - 1);
10892
+ // }
10893
+ // obj.push({
10894
+ // value: val,
10895
+ // fieldId: fieldId,
10896
+ // pos: pos + posP,
10897
+ // });
10898
+ // }
10899
+ // } else {
10900
+ // obj.push({
10901
+ // value: val,
10902
+ // pos: pos + posP,
10903
+ // });
10904
+ // }
10905
+ // }
10906
+ // }
10907
+ // return obj;
10908
+ // }
10909
+ // };
10910
+ // var res = extract_str(strP);
10911
+ // return res;
10912
+ // };
10913
+
10830
10914
  func.expression.parse = function (strP) {
10831
- var extract_str = function (strP, posP) {
10832
- if (!posP) posP = 0;
10833
- var clean_split_str = function (arrP) {
10834
- var arr = [];
10835
- if (arrP && arrP.length > 1 && arrP[0] === '' && arrP[1].indexOf('@') > -1) {
10836
- for (var i = 1; i <= arrP.length; i++) {
10837
- arr.push(arrP[i]);
10838
- }
10839
- return arr;
10840
- } else return arrP;
10841
- };
10842
- var nonLettersPatt = /\W/; // non letters
10843
- var validSymbolsNoArray = /[^.@\[]/; //valid symbols no array /[^.@\[\]\]]/
10844
- var validSymbolsWithArray = /[^.@"'\[\]]/; //valid symbols with array
10845
- var validSymbols = validSymbolsNoArray;
10846
- var splitTmp = strP.replace(/@/g, '^^@').split('^^');
10847
- var split = clean_split_str(splitTmp);
10848
- var obj = [];
10849
- if (split) {
10850
- for (let val of split) {
10851
- // run on @ segments
10852
- if (val) {
10853
- var pos = strP.indexOf(val);
10854
- if (val && val.substr(0, 1) === '@') {
10855
- var tmpStr = '';
10856
- var word_start_pos = undefined;
10857
- var word_end_pos = undefined;
10858
- // run on @ segment string
10859
- for (var i = 0; i <= val.length; i++) {
10860
- var key1 = i;
10861
- var val1 = val.substr(i, 1);
10862
- if (
10863
- val1 === '.' &&
10864
- !word_start_pos // find first dot
10865
- )
10866
- word_start_pos = key1;
10867
- if (
10868
- word_start_pos &&
10869
- key1 > word_start_pos &&
10870
- nonLettersPatt.test(val1) // find any sign character to mark the end of word
10871
- )
10872
- word_end_pos = key1;
10873
- if (word_start_pos && word_start_pos >= 0 && word_end_pos && word_end_pos >= 0) {
10874
- // find the word
10875
- var word = val.substr(word_start_pos + 1, word_end_pos - word_start_pos - 1); // get the word
10876
- // if (glb.ALL_PROPERTIES_ARR.indexOf(word) === -1) {
10877
- // compare with internal properties
10878
- tmpStr = tmpStr.substr(0, word_start_pos) + '^^' + tmpStr.substr(word_start_pos, word_end_pos);
10879
- // }
10880
- if (val.substr(word_end_pos, 1) === '.') word_start_pos = word_end_pos;
10881
- else word_start_pos = null;
10882
- word_end_pos = null;
10883
- }
10884
- if (val1 === '[') validSymbols = validSymbolsWithArray;
10885
- if (nonLettersPatt.test(val1) && validSymbols.test(val1) && tmpStr.indexOf('^^') === -1) {
10886
- tmpStr += '^^' + val1;
10887
- } else tmpStr += val1;
10888
- }
10889
- // });
10890
- if (tmpStr.indexOf('^^') > -1) {
10891
- var obj1 = extract_str(tmpStr, pos);
10892
- obj = obj.concat(obj1);
10893
- } else {
10894
- // push clean @var
10895
- var fieldId = undefined;
10896
- if (val) {
10897
- fieldId = val.substr(1, val.length);
10898
- if (val.indexOf('.') > -1) fieldId = val.substr(1, val.indexOf('.') - 1);
10899
- if (val.indexOf('[') > -1) fieldId = val.substr(1, val.indexOf('[') - 1);
10900
- //
10901
- // if (val.indexOf("]") > -1)
10902
- // fieldId = val.substr(1, val.indexOf("]") - 1);
10903
- }
10904
- obj.push({
10905
- value: val,
10906
- fieldId: fieldId,
10907
- pos: pos + posP,
10908
- });
10909
- }
10910
- } else {
10911
- obj.push({
10912
- value: val,
10913
- pos: pos + posP,
10914
- });
10915
+ const nonLettersPatt = /\W/;
10916
+ const validSymbolsNoArray = /[^.@\[]/;
10917
+ const validSymbolsWithArray = /[^.@"'\[\]]/;
10918
+
10919
+ function extractStr(str, startPos = 0) {
10920
+ const cleanSplit = (arr) => (arr?.length > 1 && arr[0] === '' && arr[1].includes('@') ? arr.slice(1) : arr);
10921
+
10922
+ const segments = cleanSplit(str.replace(/@/g, '^^@').split('^^'));
10923
+ const result = [];
10924
+
10925
+ for (const val of segments || []) {
10926
+ if (!val) continue;
10927
+ const pos = str.indexOf(val) + startPos;
10928
+
10929
+ if (val.startsWith('@')) {
10930
+ let tmpStr = '';
10931
+ let wordStart = null;
10932
+ let wordEnd = null;
10933
+ let validSymbols = validSymbolsNoArray;
10934
+
10935
+ for (let i = 0; i < val.length; i++) {
10936
+ const char = val[i];
10937
+
10938
+ if (char === '[') validSymbols = validSymbolsWithArray;
10939
+ if (char === '.' && wordStart === null) wordStart = i;
10940
+ else if (wordStart !== null && nonLettersPatt.test(char)) wordEnd = i;
10941
+
10942
+ if (wordStart !== null && wordEnd !== null) {
10943
+ const word = val.slice(wordStart + 1, wordEnd);
10944
+ tmpStr = tmpStr.slice(0, wordStart) + '^^' + tmpStr.slice(wordStart, wordEnd);
10945
+ wordStart = char === '.' ? wordEnd : null;
10946
+ wordEnd = null;
10915
10947
  }
10948
+
10949
+ tmpStr += nonLettersPatt.test(char) && validSymbols.test(char) && !tmpStr.includes('^^') ? '^^' + char : char;
10950
+ }
10951
+
10952
+ if (tmpStr.includes('^^')) {
10953
+ result.push(...extractStr(tmpStr, pos));
10954
+ } else {
10955
+ const fieldIdMatch = val.match(/^@([^.\[]+)/);
10956
+ result.push({
10957
+ value: val,
10958
+ fieldId: fieldIdMatch ? fieldIdMatch[1] : undefined,
10959
+ pos,
10960
+ });
10916
10961
  }
10962
+ } else {
10963
+ result.push({ value: val, pos });
10917
10964
  }
10918
- return obj;
10919
10965
  }
10920
- };
10921
- var res = extract_str(strP);
10922
- return res;
10966
+ return result;
10967
+ }
10968
+
10969
+ return extractStr(strP);
10923
10970
  };
10924
10971
 
10925
10972
  func.expression.get_property = async function (valP) {
@@ -11895,31 +11942,32 @@ func.UI.screen.refresh_screen_old = async function (SESSION_ID, fields_changed_a
11895
11942
  }
11896
11943
  };
11897
11944
 
11898
- const get_params_obj = async function (SESSION_ID, prog_id, parameters_obj_inP) {
11899
- const _prog = await func.utils.VIEWS_OBJ.get(SESSION_ID, prog_id);
11900
- if (!_prog) {
11901
- return;
11902
- }
11945
+ // const get_params_obj = async function (SESSION_ID, prog_id, parameters_obj_inP) {
11946
+ // const _prog = await func.utils.VIEWS_OBJ.get(SESSION_ID, prog_id);
11947
+ // if (!_prog) {
11948
+ // return;
11949
+ // }
11950
+
11951
+ // // get in parameters
11952
+ // var params_obj = {};
11953
+ // if (_prog?.properties?.progParams) {
11954
+ // for await (const [key, val] of Object.entries(_prog.properties.progParams)) {
11955
+ // if (!val.data.dir === 'in') continue;
11956
+ // if (typeof parameters_obj_inP?.[val.data.parameter] !== 'undefined') {
11957
+ // if (parameters_obj_inP?.[val.data.parameter].fx) {
11958
+ // let ret = await func.expression.get(SESSION_ID, parameters_obj_inP?.[val.data.parameter].fx, dsSession, 'parameters');
11959
+ // params_obj[val.data.parameter] = ret.result;
11960
+ // } else {
11961
+ // params_obj[val.data.parameter] = parameters_obj_inP?.[val.data.parameter].value;
11962
+ // }
11963
+ // continue;
11964
+ // }
11965
+ // console.warn(`Warning: Program ${_prog.properties.menuName} expected In parameter: ${val.data.parameter} but received null instead`);
11966
+ // }
11967
+ // }
11968
+ // return params_obj;
11969
+ // };
11903
11970
 
11904
- // get in parameters
11905
- var params_obj = {};
11906
- if (_prog?.properties?.progParams) {
11907
- for await (const [key, val] of Object.entries(_prog.properties.progParams)) {
11908
- if (!val.data.dir === 'in') continue;
11909
- if (typeof parameters_obj_inP?.[val.data.parameter] !== 'undefined') {
11910
- if (parameters_obj_inP?.[val.data.parameter].fx) {
11911
- let ret = await func.expression.get(SESSION_ID, parameters_obj_inP?.[val.data.parameter].fx, dsSession, 'parameters');
11912
- params_obj[val.data.parameter] = ret.result;
11913
- } else {
11914
- params_obj[val.data.parameter] = parameters_obj_inP?.[val.data.parameter].value;
11915
- }
11916
- continue;
11917
- }
11918
- console.warn(`Warning: Program ${_prog.properties.menuName} expected In parameter: ${val.data.parameter} but received null instead`);
11919
- }
11920
- }
11921
- return params_obj;
11922
- };
11923
11971
  const get_params_obj_new = async function (SESSION_ID, prog_id, nodeP, dsSession) {
11924
11972
  const _prog = await func.utils.VIEWS_OBJ.get(SESSION_ID, prog_id);
11925
11973
  if (!_prog) return;
@@ -11981,6 +12029,7 @@ func.UI.screen.execute_xu_functions = async function (SESSION_ID, is_skeleton, $
11981
12029
  const param_obj = await get_params_obj_new(SESSION_ID, prog_id, nodeP, paramsP.dsSessionP);
11982
12030
  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');
11983
12031
  ret = { $new_div: ret_panel };
12032
+ $container.data().xuData.xuPanelProps = $elm.data().xuAttributes;
11984
12033
  return ret;
11985
12034
  }
11986
12035