@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.
@@ -28256,18 +28256,7 @@ func.UI.update_xu_ref = function (SESSION_ID, dsSessionP, ref_field_id, $elm) {
28256
28256
  SYS_GLOBAL_OBJ_REFS[ref_field_id].props = _ds.in_parameters || {};
28257
28257
 
28258
28258
  if ($elm) {
28259
- const get_attributes = function (retry = 0) {
28260
- if (retry > 500) return;
28261
- return (
28262
- $elm?.data()?.xuPanelWrapper?.panelXuAttributes ||
28263
- $elm?.data()?.xuData?.debug_info?.attribute_stat ||
28264
- setTimeout(() => {
28265
- get_attributes(retry + 1);
28266
- }, 500)
28267
- );
28268
- };
28269
-
28270
- const attributes = get_attributes();
28259
+ const attributes = $elm?.data()?.xuData?.xuPanelProps || $elm?.data()?.xuData?.debug_info?.attribute_stat || {};
28271
28260
  SYS_GLOBAL_OBJ_REFS[ref_field_id].attributes = attributes;
28272
28261
  SYS_GLOBAL_OBJ_REFS[ref_field_id].xu_ui_id = $elm.attr('xu-ui-id');
28273
28262
  }
@@ -28415,7 +28404,7 @@ func.datasource.create = async function (
28415
28404
  }
28416
28405
  }
28417
28406
 
28418
- var datasource_changes = {
28407
+ const datasource_changes = {
28419
28408
  [dsSessionP]: {
28420
28409
  ['datasource_main']: {
28421
28410
  stat: 'idle',
@@ -31927,31 +31916,32 @@ func.UI.screen.refresh_screen_old = async function (SESSION_ID, fields_changed_a
31927
31916
  }
31928
31917
  };
31929
31918
 
31930
- const get_params_obj = async function (SESSION_ID, prog_id, parameters_obj_inP) {
31931
- const _prog = await func.utils.VIEWS_OBJ.get(SESSION_ID, prog_id);
31932
- if (!_prog) {
31933
- return;
31934
- }
31919
+ // const get_params_obj = async function (SESSION_ID, prog_id, parameters_obj_inP) {
31920
+ // const _prog = await func.utils.VIEWS_OBJ.get(SESSION_ID, prog_id);
31921
+ // if (!_prog) {
31922
+ // return;
31923
+ // }
31924
+
31925
+ // // get in parameters
31926
+ // var params_obj = {};
31927
+ // if (_prog?.properties?.progParams) {
31928
+ // for await (const [key, val] of Object.entries(_prog.properties.progParams)) {
31929
+ // if (!val.data.dir === 'in') continue;
31930
+ // if (typeof parameters_obj_inP?.[val.data.parameter] !== 'undefined') {
31931
+ // if (parameters_obj_inP?.[val.data.parameter].fx) {
31932
+ // let ret = await func.expression.get(SESSION_ID, parameters_obj_inP?.[val.data.parameter].fx, dsSession, 'parameters');
31933
+ // params_obj[val.data.parameter] = ret.result;
31934
+ // } else {
31935
+ // params_obj[val.data.parameter] = parameters_obj_inP?.[val.data.parameter].value;
31936
+ // }
31937
+ // continue;
31938
+ // }
31939
+ // console.warn(`Warning: Program ${_prog.properties.menuName} expected In parameter: ${val.data.parameter} but received null instead`);
31940
+ // }
31941
+ // }
31942
+ // return params_obj;
31943
+ // };
31935
31944
 
31936
- // get in parameters
31937
- var params_obj = {};
31938
- if (_prog?.properties?.progParams) {
31939
- for await (const [key, val] of Object.entries(_prog.properties.progParams)) {
31940
- if (!val.data.dir === 'in') continue;
31941
- if (typeof parameters_obj_inP?.[val.data.parameter] !== 'undefined') {
31942
- if (parameters_obj_inP?.[val.data.parameter].fx) {
31943
- let ret = await func.expression.get(SESSION_ID, parameters_obj_inP?.[val.data.parameter].fx, dsSession, 'parameters');
31944
- params_obj[val.data.parameter] = ret.result;
31945
- } else {
31946
- params_obj[val.data.parameter] = parameters_obj_inP?.[val.data.parameter].value;
31947
- }
31948
- continue;
31949
- }
31950
- console.warn(`Warning: Program ${_prog.properties.menuName} expected In parameter: ${val.data.parameter} but received null instead`);
31951
- }
31952
- }
31953
- return params_obj;
31954
- };
31955
31945
  const get_params_obj_new = async function (SESSION_ID, prog_id, nodeP, dsSession) {
31956
31946
  const _prog = await func.utils.VIEWS_OBJ.get(SESSION_ID, prog_id);
31957
31947
  if (!_prog) return;
@@ -32013,6 +32003,7 @@ func.UI.screen.execute_xu_functions = async function (SESSION_ID, is_skeleton, $
32013
32003
  const param_obj = await get_params_obj_new(SESSION_ID, prog_id, nodeP, paramsP.dsSessionP);
32014
32004
  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');
32015
32005
  ret = { $new_div: ret_panel };
32006
+ $container.data().xuData.xuPanelProps = $elm.data().xuAttributes;
32016
32007
  return ret;
32017
32008
  }
32018
32009
 
@@ -35257,99 +35248,157 @@ func.expression.get = async function (SESSION_ID, valP, dsSessionP, sourceP, row
35257
35248
  return new_class.get();
35258
35249
  };
35259
35250
 
35251
+ // func.expression.parse = function (strP) {
35252
+ // var extract_str = function (strP, posP) {
35253
+ // if (!posP) posP = 0;
35254
+ // var clean_split_str = function (arrP) {
35255
+ // var arr = [];
35256
+ // if (arrP && arrP.length > 1 && arrP[0] === '' && arrP[1].indexOf('@') > -1) {
35257
+ // for (var i = 1; i <= arrP.length; i++) {
35258
+ // arr.push(arrP[i]);
35259
+ // }
35260
+ // return arr;
35261
+ // } else return arrP;
35262
+ // };
35263
+ // var nonLettersPatt = /\W/; // non letters
35264
+ // var validSymbolsNoArray = /[^.@\[]/; //valid symbols no array /[^.@\[\]\]]/
35265
+ // var validSymbolsWithArray = /[^.@"'\[\]]/; //valid symbols with array
35266
+ // var validSymbols = validSymbolsNoArray;
35267
+ // var splitTmp = strP.replace(/@/g, '^^@').split('^^');
35268
+ // var split = clean_split_str(splitTmp);
35269
+ // var obj = [];
35270
+ // if (split) {
35271
+ // for (let val of split) {
35272
+ // // run on @ segments
35273
+ // if (val) {
35274
+ // var pos = strP.indexOf(val);
35275
+ // if (val && val.substr(0, 1) === '@') {
35276
+ // var tmpStr = '';
35277
+ // var word_start_pos = undefined;
35278
+ // var word_end_pos = undefined;
35279
+ // // run on @ segment string
35280
+ // for (var i = 0; i <= val.length; i++) {
35281
+ // var key1 = i;
35282
+ // var val1 = val.substr(i, 1);
35283
+ // if (
35284
+ // val1 === '.' &&
35285
+ // !word_start_pos // find first dot
35286
+ // )
35287
+ // word_start_pos = key1;
35288
+ // if (
35289
+ // word_start_pos &&
35290
+ // key1 > word_start_pos &&
35291
+ // nonLettersPatt.test(val1) // find any sign character to mark the end of word
35292
+ // )
35293
+ // word_end_pos = key1;
35294
+ // if (word_start_pos && word_start_pos >= 0 && word_end_pos && word_end_pos >= 0) {
35295
+ // // find the word
35296
+ // var word = val.substr(word_start_pos + 1, word_end_pos - word_start_pos - 1); // get the word
35297
+ // // if (glb.ALL_PROPERTIES_ARR.indexOf(word) === -1) {
35298
+ // // compare with internal properties
35299
+ // tmpStr = tmpStr.substr(0, word_start_pos) + '^^' + tmpStr.substr(word_start_pos, word_end_pos);
35300
+ // // }
35301
+ // if (val.substr(word_end_pos, 1) === '.') word_start_pos = word_end_pos;
35302
+ // else word_start_pos = null;
35303
+ // word_end_pos = null;
35304
+ // }
35305
+ // if (val1 === '[') validSymbols = validSymbolsWithArray;
35306
+ // if (nonLettersPatt.test(val1) && validSymbols.test(val1) && tmpStr.indexOf('^^') === -1) {
35307
+ // tmpStr += '^^' + val1;
35308
+ // } else tmpStr += val1;
35309
+ // }
35310
+ // // });
35311
+ // if (tmpStr.indexOf('^^') > -1) {
35312
+ // var obj1 = extract_str(tmpStr, pos);
35313
+ // obj = obj.concat(obj1);
35314
+ // } else {
35315
+ // // push clean @var
35316
+ // var fieldId = undefined;
35317
+ // if (val) {
35318
+ // fieldId = val.substr(1, val.length);
35319
+ // if (val.indexOf('.') > -1) fieldId = val.substr(1, val.indexOf('.') - 1);
35320
+ // if (val.indexOf('[') > -1) fieldId = val.substr(1, val.indexOf('[') - 1);
35321
+ // //
35322
+ // // if (val.indexOf("]") > -1)
35323
+ // // fieldId = val.substr(1, val.indexOf("]") - 1);
35324
+ // }
35325
+ // obj.push({
35326
+ // value: val,
35327
+ // fieldId: fieldId,
35328
+ // pos: pos + posP,
35329
+ // });
35330
+ // }
35331
+ // } else {
35332
+ // obj.push({
35333
+ // value: val,
35334
+ // pos: pos + posP,
35335
+ // });
35336
+ // }
35337
+ // }
35338
+ // }
35339
+ // return obj;
35340
+ // }
35341
+ // };
35342
+ // var res = extract_str(strP);
35343
+ // return res;
35344
+ // };
35345
+
35260
35346
  func.expression.parse = function (strP) {
35261
- var extract_str = function (strP, posP) {
35262
- if (!posP) posP = 0;
35263
- var clean_split_str = function (arrP) {
35264
- var arr = [];
35265
- if (arrP && arrP.length > 1 && arrP[0] === '' && arrP[1].indexOf('@') > -1) {
35266
- for (var i = 1; i <= arrP.length; i++) {
35267
- arr.push(arrP[i]);
35268
- }
35269
- return arr;
35270
- } else return arrP;
35271
- };
35272
- var nonLettersPatt = /\W/; // non letters
35273
- var validSymbolsNoArray = /[^.@\[]/; //valid symbols no array /[^.@\[\]\]]/
35274
- var validSymbolsWithArray = /[^.@"'\[\]]/; //valid symbols with array
35275
- var validSymbols = validSymbolsNoArray;
35276
- var splitTmp = strP.replace(/@/g, '^^@').split('^^');
35277
- var split = clean_split_str(splitTmp);
35278
- var obj = [];
35279
- if (split) {
35280
- for (let val of split) {
35281
- // run on @ segments
35282
- if (val) {
35283
- var pos = strP.indexOf(val);
35284
- if (val && val.substr(0, 1) === '@') {
35285
- var tmpStr = '';
35286
- var word_start_pos = undefined;
35287
- var word_end_pos = undefined;
35288
- // run on @ segment string
35289
- for (var i = 0; i <= val.length; i++) {
35290
- var key1 = i;
35291
- var val1 = val.substr(i, 1);
35292
- if (
35293
- val1 === '.' &&
35294
- !word_start_pos // find first dot
35295
- )
35296
- word_start_pos = key1;
35297
- if (
35298
- word_start_pos &&
35299
- key1 > word_start_pos &&
35300
- nonLettersPatt.test(val1) // find any sign character to mark the end of word
35301
- )
35302
- word_end_pos = key1;
35303
- if (word_start_pos && word_start_pos >= 0 && word_end_pos && word_end_pos >= 0) {
35304
- // find the word
35305
- var word = val.substr(word_start_pos + 1, word_end_pos - word_start_pos - 1); // get the word
35306
- // if (glb.ALL_PROPERTIES_ARR.indexOf(word) === -1) {
35307
- // compare with internal properties
35308
- tmpStr = tmpStr.substr(0, word_start_pos) + '^^' + tmpStr.substr(word_start_pos, word_end_pos);
35309
- // }
35310
- if (val.substr(word_end_pos, 1) === '.') word_start_pos = word_end_pos;
35311
- else word_start_pos = null;
35312
- word_end_pos = null;
35313
- }
35314
- if (val1 === '[') validSymbols = validSymbolsWithArray;
35315
- if (nonLettersPatt.test(val1) && validSymbols.test(val1) && tmpStr.indexOf('^^') === -1) {
35316
- tmpStr += '^^' + val1;
35317
- } else tmpStr += val1;
35318
- }
35319
- // });
35320
- if (tmpStr.indexOf('^^') > -1) {
35321
- var obj1 = extract_str(tmpStr, pos);
35322
- obj = obj.concat(obj1);
35323
- } else {
35324
- // push clean @var
35325
- var fieldId = undefined;
35326
- if (val) {
35327
- fieldId = val.substr(1, val.length);
35328
- if (val.indexOf('.') > -1) fieldId = val.substr(1, val.indexOf('.') - 1);
35329
- if (val.indexOf('[') > -1) fieldId = val.substr(1, val.indexOf('[') - 1);
35330
- //
35331
- // if (val.indexOf("]") > -1)
35332
- // fieldId = val.substr(1, val.indexOf("]") - 1);
35333
- }
35334
- obj.push({
35335
- value: val,
35336
- fieldId: fieldId,
35337
- pos: pos + posP,
35338
- });
35339
- }
35340
- } else {
35341
- obj.push({
35342
- value: val,
35343
- pos: pos + posP,
35344
- });
35347
+ const nonLettersPatt = /\W/;
35348
+ const validSymbolsNoArray = /[^.@\[]/;
35349
+ const validSymbolsWithArray = /[^.@"'\[\]]/;
35350
+
35351
+ function extractStr(str, startPos = 0) {
35352
+ const cleanSplit = (arr) => (arr?.length > 1 && arr[0] === '' && arr[1].includes('@') ? arr.slice(1) : arr);
35353
+
35354
+ const segments = cleanSplit(str.replace(/@/g, '^^@').split('^^'));
35355
+ const result = [];
35356
+
35357
+ for (const val of segments || []) {
35358
+ if (!val) continue;
35359
+ const pos = str.indexOf(val) + startPos;
35360
+
35361
+ if (val.startsWith('@')) {
35362
+ let tmpStr = '';
35363
+ let wordStart = null;
35364
+ let wordEnd = null;
35365
+ let validSymbols = validSymbolsNoArray;
35366
+
35367
+ for (let i = 0; i < val.length; i++) {
35368
+ const char = val[i];
35369
+
35370
+ if (char === '[') validSymbols = validSymbolsWithArray;
35371
+ if (char === '.' && wordStart === null) wordStart = i;
35372
+ else if (wordStart !== null && nonLettersPatt.test(char)) wordEnd = i;
35373
+
35374
+ if (wordStart !== null && wordEnd !== null) {
35375
+ const word = val.slice(wordStart + 1, wordEnd);
35376
+ tmpStr = tmpStr.slice(0, wordStart) + '^^' + tmpStr.slice(wordStart, wordEnd);
35377
+ wordStart = char === '.' ? wordEnd : null;
35378
+ wordEnd = null;
35345
35379
  }
35380
+
35381
+ tmpStr += nonLettersPatt.test(char) && validSymbols.test(char) && !tmpStr.includes('^^') ? '^^' + char : char;
35346
35382
  }
35383
+
35384
+ if (tmpStr.includes('^^')) {
35385
+ result.push(...extractStr(tmpStr, pos));
35386
+ } else {
35387
+ const fieldIdMatch = val.match(/^@([^.\[]+)/);
35388
+ result.push({
35389
+ value: val,
35390
+ fieldId: fieldIdMatch ? fieldIdMatch[1] : undefined,
35391
+ pos,
35392
+ });
35393
+ }
35394
+ } else {
35395
+ result.push({ value: val, pos });
35347
35396
  }
35348
- return obj;
35349
35397
  }
35350
- };
35351
- var res = extract_str(strP);
35352
- return res;
35398
+ return result;
35399
+ }
35400
+
35401
+ return extractStr(strP);
35353
35402
  };
35354
35403
 
35355
35404
  func.expression.get_property = async function (valP) {