@xuda.io/runtime-bundle 1.0.718 → 1.0.720
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.
- package/js/xuda-runtime-bundle.js +153 -164
- package/js/xuda-runtime-bundle.min.js +1 -1
- package/js/xuda-runtime-slim.js +150 -161
- package/js/xuda-runtime-slim.min.es.js +150 -161
- package/js/xuda-runtime-slim.min.js +1 -1
- package/package.json +1 -1
package/js/xuda-runtime-slim.js
CHANGED
|
@@ -11189,7 +11189,7 @@ func.expression.secure_eval = async function (SESSION_ID, sourceP, val, job_id,
|
|
|
11189
11189
|
}
|
|
11190
11190
|
};
|
|
11191
11191
|
func.UI.screen = {};
|
|
11192
|
-
func.UI.screen.init = async function (SESSION_ID, prog_id, sourceScreenP, callingDataSource_objP, $callingContainerP, triggerIdP, rowIdP, jobNoP, is_panelP, parameters_obj_inP, source_functionP, call_screen_propertiesP, refreshed_ds) {
|
|
11192
|
+
func.UI.screen.init = async function (SESSION_ID, prog_id, sourceScreenP, callingDataSource_objP, $callingContainerP, triggerIdP, rowIdP, jobNoP, is_panelP, parameters_obj_inP, source_functionP, call_screen_propertiesP, refreshed_ds, parameters_raw_obj) {
|
|
11193
11193
|
if (!prog_id) return console.error('program is empty');
|
|
11194
11194
|
let screen_ret = await func.utils.get_screen_obj(SESSION_ID, prog_id);
|
|
11195
11195
|
if (!screen_ret) return console.error('program is not a screen object');
|
|
@@ -11242,6 +11242,7 @@ func.UI.screen.init = async function (SESSION_ID, prog_id, sourceScreenP, callin
|
|
|
11242
11242
|
screenInfo,
|
|
11243
11243
|
call_screen_propertiesP,
|
|
11244
11244
|
parentDataSourceNoP: _session.DS_GLB?.[callingDataSource_objP?.dsSession]?.dsSession || callingDataSource_objP?.parentDataSourceNo || 0,
|
|
11245
|
+
parameters_raw_obj,
|
|
11245
11246
|
};
|
|
11246
11247
|
|
|
11247
11248
|
switch (screen_type) {
|
|
@@ -11408,7 +11409,7 @@ func.UI.screen.init = async function (SESSION_ID, prog_id, sourceScreenP, callin
|
|
|
11408
11409
|
rowIdP,
|
|
11409
11410
|
jobNoP,
|
|
11410
11411
|
null,
|
|
11411
|
-
|
|
11412
|
+
parameters_raw_obj,
|
|
11412
11413
|
null,
|
|
11413
11414
|
null,
|
|
11414
11415
|
null,
|
|
@@ -12015,212 +12016,200 @@ func.UI.screen.refresh_screen = async function (SESSION_ID, fields_changed_arr,
|
|
|
12015
12016
|
}
|
|
12016
12017
|
};
|
|
12017
12018
|
|
|
12018
|
-
|
|
12019
|
-
//
|
|
12020
|
-
|
|
12021
|
-
|
|
12022
|
-
|
|
12023
|
-
|
|
12024
|
-
|
|
12025
|
-
|
|
12026
|
-
|
|
12027
|
-
|
|
12028
|
-
// }
|
|
12019
|
+
func.UI.screen.refresh_screen_old = async function (SESSION_ID, fields_changed_arr, datasource_changed, fields_changed_datasource) {
|
|
12020
|
+
// check the main program
|
|
12021
|
+
if (fields_changed_datasource) {
|
|
12022
|
+
const _session = SESSION_OBJ[SESSION_ID];
|
|
12023
|
+
const _ds = _session.DS_GLB[fields_changed_datasource];
|
|
12024
|
+
const prog_doc = await func.utils.DOCS_OBJ.get(SESSION_ID, _ds.prog_id);
|
|
12025
|
+
const progDataSource_str = JSON.stringify(prog_doc.progDataSource);
|
|
12026
|
+
for (const field_id of fields_changed_arr || []) {
|
|
12027
|
+
}
|
|
12028
|
+
}
|
|
12029
12029
|
|
|
12030
|
-
|
|
12030
|
+
const panels_obj = await func.UI.utils.get_panels_wrapper_from_dom(SESSION_ID, $(SESSION_OBJ[SESSION_ID].root_element), false);
|
|
12031
12031
|
|
|
12032
|
-
|
|
12033
|
-
|
|
12032
|
+
for await (const [parent_element_ui_id, panel_val] of Object.entries(panels_obj)) {
|
|
12033
|
+
const progDataSource_str = JSON.stringify(panel_val.prog_doc.progDataSource);
|
|
12034
12034
|
|
|
12035
|
-
|
|
12036
|
-
|
|
12037
|
-
|
|
12038
|
-
|
|
12039
|
-
|
|
12040
|
-
|
|
12041
|
-
//
|
|
12042
|
-
|
|
12035
|
+
var found, refresh_reason, refresh_details;
|
|
12036
|
+
if (fields_changed_arr) {
|
|
12037
|
+
if (fields_changed_datasource && panel_val._ds.dsSession <= Number(fields_changed_datasource)) {
|
|
12038
|
+
continue;
|
|
12039
|
+
}
|
|
12040
|
+
for (const field_id of fields_changed_arr) {
|
|
12041
|
+
// get panel attributes
|
|
12042
|
+
const _attributes = panel_val?.panelXuAttributes || {};
|
|
12043
12043
|
|
|
12044
|
-
//
|
|
12045
|
-
|
|
12044
|
+
// detect if program changed
|
|
12045
|
+
found = _attributes['xu-exp:program']?.includes('@' + field_id);
|
|
12046
12046
|
|
|
12047
|
-
|
|
12048
|
-
|
|
12049
|
-
|
|
12050
|
-
|
|
12051
|
-
|
|
12047
|
+
if (found) {
|
|
12048
|
+
refresh_reason = `program ${_attributes['xu-exp:program']} ${field_id} changed `;
|
|
12049
|
+
refresh_details = _attributes;
|
|
12050
|
+
break;
|
|
12051
|
+
}
|
|
12052
12052
|
|
|
12053
|
-
//
|
|
12054
|
-
//
|
|
12055
|
-
|
|
12056
|
-
|
|
12057
|
-
|
|
12053
|
+
// _attributes holds also info of parameters in code_in: @code
|
|
12054
|
+
// search field changed in panel call send parameters exp
|
|
12055
|
+
for (const [attr, value] of Object.entries(_attributes)) {
|
|
12056
|
+
const pattern = /xu-exp:(\w+)/;
|
|
12057
|
+
const match = attr.match(pattern);
|
|
12058
12058
|
|
|
12059
|
-
|
|
12060
|
-
//
|
|
12061
|
-
|
|
12062
|
-
|
|
12063
|
-
//
|
|
12064
|
-
|
|
12065
|
-
//
|
|
12066
|
-
|
|
12067
|
-
//
|
|
12068
|
-
|
|
12059
|
+
if (!match) {
|
|
12060
|
+
// continue if attribute is not expression
|
|
12061
|
+
continue;
|
|
12062
|
+
}
|
|
12063
|
+
// code_in
|
|
12064
|
+
const parameter_in_field_id = match?.[1];
|
|
12065
|
+
// @code
|
|
12066
|
+
if (value.includes(field_id)) {
|
|
12067
|
+
// search parameter in field in the target program's progDataSource
|
|
12068
|
+
found = progDataSource_str?.includes('@' + parameter_in_field_id);
|
|
12069
12069
|
|
|
12070
|
-
|
|
12071
|
-
|
|
12072
|
-
|
|
12070
|
+
if (found) {
|
|
12071
|
+
refresh_reason = `field ${field_id} in progDataSource parameter_in changed`;
|
|
12072
|
+
refresh_details = panel_val?.prog_doc?.progDataSource;
|
|
12073
12073
|
|
|
12074
|
-
|
|
12075
|
-
|
|
12074
|
+
break;
|
|
12075
|
+
}
|
|
12076
12076
|
|
|
12077
|
-
//
|
|
12078
|
-
|
|
12077
|
+
// found = find_field_in_progUi(prog_doc.progUi, parameter_in_field_id, 'xu-for');
|
|
12078
|
+
found = func.UI.find_field_in_progUi_attributes(panel_val.prog_doc.progUi, parameter_in_field_id, 'xu-for').length;
|
|
12079
12079
|
|
|
12080
|
-
|
|
12081
|
-
|
|
12082
|
-
|
|
12080
|
+
if (found) {
|
|
12081
|
+
refresh_reason = `field ${field_id} in progUi xu-for parameter_in changed`;
|
|
12082
|
+
refresh_details = found;
|
|
12083
12083
|
|
|
12084
|
-
|
|
12085
|
-
|
|
12086
|
-
|
|
12087
|
-
|
|
12084
|
+
break;
|
|
12085
|
+
}
|
|
12086
|
+
}
|
|
12087
|
+
}
|
|
12088
12088
|
|
|
12089
|
-
|
|
12089
|
+
if (found) break;
|
|
12090
12090
|
|
|
12091
|
-
//
|
|
12092
|
-
|
|
12093
|
-
|
|
12094
|
-
|
|
12095
|
-
|
|
12091
|
+
// search field changed in the target program's progDataSource // @code
|
|
12092
|
+
found = progDataSource_str?.includes('@' + field_id);
|
|
12093
|
+
if (found) {
|
|
12094
|
+
refresh_reason = `field ${field_id} in progDataSource changed`;
|
|
12095
|
+
refresh_details = panel_val?.prog_doc?.progDataSource;
|
|
12096
12096
|
|
|
12097
|
-
|
|
12098
|
-
|
|
12097
|
+
break;
|
|
12098
|
+
}
|
|
12099
12099
|
|
|
12100
|
-
|
|
12101
|
-
|
|
12102
|
-
|
|
12103
|
-
|
|
12100
|
+
found = func.UI.find_field_in_progUi_attributes(panel_val.prog_doc.progUi, field_id, 'xu-for').length;
|
|
12101
|
+
if (found) {
|
|
12102
|
+
refresh_reason = `field ${field_id} in progUi xu-for changed`;
|
|
12103
|
+
refresh_details = found;
|
|
12104
12104
|
|
|
12105
|
-
|
|
12106
|
-
|
|
12105
|
+
break;
|
|
12106
|
+
}
|
|
12107
12107
|
|
|
12108
|
-
|
|
12109
|
-
|
|
12110
|
-
|
|
12111
|
-
|
|
12112
|
-
|
|
12108
|
+
if (found) {
|
|
12109
|
+
break;
|
|
12110
|
+
}
|
|
12111
|
+
}
|
|
12112
|
+
}
|
|
12113
12113
|
|
|
12114
|
-
|
|
12115
|
-
|
|
12116
|
-
|
|
12117
|
-
|
|
12114
|
+
if (datasource_changed) {
|
|
12115
|
+
if (panel_val._ds.dsSession == datasource_changed) {
|
|
12116
|
+
refresh_reason = `panel datasource ${datasource_changed} changed`;
|
|
12117
|
+
refresh_details = '';
|
|
12118
12118
|
|
|
12119
|
-
|
|
12120
|
-
|
|
12121
|
-
|
|
12122
|
-
|
|
12123
|
-
|
|
12124
|
-
|
|
12125
|
-
|
|
12126
|
-
|
|
12127
|
-
|
|
12128
|
-
|
|
12129
|
-
|
|
12130
|
-
|
|
12131
|
-
|
|
12132
|
-
|
|
12119
|
+
found = true;
|
|
12120
|
+
}
|
|
12121
|
+
}
|
|
12122
|
+
if (found) {
|
|
12123
|
+
const _session = SESSION_OBJ[SESSION_ID];
|
|
12124
|
+
if (_session.engine_mode === 'live_preview') {
|
|
12125
|
+
console.info('========= refresh info ==============');
|
|
12126
|
+
console.info('reason:', refresh_reason);
|
|
12127
|
+
console.info('details:', refresh_details);
|
|
12128
|
+
console.info('panel:', panel_val);
|
|
12129
|
+
console.info('=====================================');
|
|
12130
|
+
}
|
|
12131
|
+
const $div_elm = panel_val.$panel_div;
|
|
12132
|
+
const wrapper_data = $div_elm.data();
|
|
12133
12133
|
|
|
12134
|
-
|
|
12134
|
+
if (_.isEmpty(wrapper_data)) continue;
|
|
12135
12135
|
|
|
12136
|
-
|
|
12137
|
-
|
|
12138
|
-
//
|
|
12139
|
-
|
|
12140
|
-
|
|
12141
|
-
|
|
12142
|
-
|
|
12143
|
-
|
|
12136
|
+
try {
|
|
12137
|
+
const ts = Date.now();
|
|
12138
|
+
// remove old panel content
|
|
12139
|
+
$.each(panel_val.ids, async function (key, val) {
|
|
12140
|
+
$("[xu-ui-id='" + val + "']")
|
|
12141
|
+
.attr('xu-ui-id', val + ts)
|
|
12142
|
+
.removeData();
|
|
12143
|
+
});
|
|
12144
12144
|
|
|
12145
|
-
|
|
12146
|
-
//
|
|
12145
|
+
let refreshed_ds;
|
|
12146
|
+
// check if ds exist and deleted by garbage collector
|
|
12147
12147
|
|
|
12148
|
-
|
|
12149
|
-
|
|
12150
|
-
|
|
12151
|
-
|
|
12152
|
-
|
|
12148
|
+
if (_session.DS_GLB[panel_val._ds.dsSession]) {
|
|
12149
|
+
refreshed_ds = panel_val._ds.dsSession;
|
|
12150
|
+
}
|
|
12151
|
+
for await (const item of wrapper_data.xuData.node_org.children) {
|
|
12152
|
+
if (item.tagName !== 'xu-panel') continue;
|
|
12153
12153
|
|
|
12154
|
-
|
|
12155
|
-
|
|
12156
|
-
|
|
12157
|
-
|
|
12158
|
-
|
|
12159
|
-
|
|
12160
|
-
|
|
12161
|
-
|
|
12162
|
-
|
|
12163
|
-
|
|
12164
|
-
|
|
12165
|
-
|
|
12166
|
-
|
|
12167
|
-
|
|
12168
|
-
|
|
12154
|
+
const new_$div = await func.UI.screen.render_ui_tree(
|
|
12155
|
+
SESSION_ID,
|
|
12156
|
+
$div_elm, // the wrapper
|
|
12157
|
+
_.cloneDeep(item), // _.cloneDeep(wrapper_data.xuData.node_org.children[0]), // the xu-panel node
|
|
12158
|
+
{},
|
|
12159
|
+
wrapper_data.xuData.paramsP, // the wrapper params
|
|
12160
|
+
null,
|
|
12161
|
+
null,
|
|
12162
|
+
wrapper_data.xuData.key, // the wrapper key
|
|
12163
|
+
refreshed_ds, // the refreshed_ds
|
|
12164
|
+
wrapper_data.xuData.parent_node, // the wrapper parent node
|
|
12165
|
+
null,
|
|
12166
|
+
wrapper_data.xuData.$root_container, // the wrapper root container
|
|
12167
|
+
);
|
|
12168
|
+
}
|
|
12169
12169
|
|
|
12170
|
-
//
|
|
12171
|
-
|
|
12172
|
-
|
|
12173
|
-
|
|
12174
|
-
|
|
12175
|
-
|
|
12176
|
-
|
|
12177
|
-
//
|
|
12178
|
-
|
|
12179
|
-
|
|
12180
|
-
|
|
12170
|
+
// remove old panel content
|
|
12171
|
+
$.each(panel_val.ids, async function (key, val) {
|
|
12172
|
+
$("[xu-ui-id='" + val + ts + "']").remove();
|
|
12173
|
+
});
|
|
12174
|
+
} catch (error) {
|
|
12175
|
+
debugger;
|
|
12176
|
+
}
|
|
12177
|
+
// continue;
|
|
12178
|
+
}
|
|
12179
|
+
}
|
|
12180
|
+
};
|
|
12181
12181
|
|
|
12182
12182
|
const get_params_obj_new = async function (SESSION_ID, prog_id, nodeP, dsSession) {
|
|
12183
12183
|
const _prog = await func.utils.VIEWS_OBJ.get(SESSION_ID, prog_id);
|
|
12184
12184
|
if (!_prog) return;
|
|
12185
12185
|
|
|
12186
12186
|
// get in parameters
|
|
12187
|
-
|
|
12187
|
+
let params_res = {},
|
|
12188
|
+
params_raw = {};
|
|
12188
12189
|
if (_prog?.properties?.progParams) {
|
|
12189
12190
|
for await (const [key, val] of Object.entries(_prog.properties.progParams)) {
|
|
12190
12191
|
if (!['in', 'out'].includes(val.data.dir)) continue;
|
|
12191
12192
|
|
|
12192
12193
|
if (nodeP.attributes) {
|
|
12193
12194
|
if (nodeP.attributes[val.data.parameter]) {
|
|
12194
|
-
|
|
12195
|
+
params_res[val.data.parameter] = nodeP.attributes[val.data.parameter];
|
|
12195
12196
|
} else if (nodeP.attributes[`xu-exp:${val.data.parameter}`]) {
|
|
12196
12197
|
if (val.data.dir == 'out') {
|
|
12197
12198
|
// only reference
|
|
12198
|
-
|
|
12199
|
+
params_res[val.data.parameter] = nodeP.attributes[`xu-exp:${val.data.parameter}`].replaceAll('@', '');
|
|
12199
12200
|
} else {
|
|
12200
12201
|
// in parameter
|
|
12201
12202
|
let ret = await func.expression.get(SESSION_ID, nodeP.attributes[`xu-exp:${val.data.parameter}`], dsSession, 'parameters');
|
|
12202
|
-
|
|
12203
|
+
params_res[val.data.parameter] = ret.result;
|
|
12204
|
+
params_raw[val.data.parameter] = nodeP.attributes[`xu-exp:${val.data.parameter}`];
|
|
12203
12205
|
}
|
|
12204
12206
|
}
|
|
12205
|
-
|
|
12206
|
-
// if (parameters_obj_inP?.[val.data.parameter].fx) {
|
|
12207
|
-
// let ret = await func.expression.get(
|
|
12208
|
-
// SESSION_ID,
|
|
12209
|
-
// parameters_obj_inP?.[val.data.parameter].fx,
|
|
12210
|
-
// dsSession,
|
|
12211
|
-
// "parameters"
|
|
12212
|
-
// );
|
|
12213
|
-
// params_obj[val.data.parameter] = ret.result;
|
|
12214
|
-
// } else {
|
|
12215
|
-
// params_obj[val.data.parameter] =
|
|
12216
|
-
// parameters_obj_inP?.[val.data.parameter].value;
|
|
12217
|
-
// }
|
|
12218
12207
|
continue;
|
|
12219
12208
|
}
|
|
12220
12209
|
console.warn(`Warning: Program ${_prog.properties.menuName} expected In parameter: ${val.data.parameter} but received null instead`);
|
|
12221
12210
|
}
|
|
12222
12211
|
}
|
|
12223
|
-
return
|
|
12212
|
+
return { params_res, params_raw };
|
|
12224
12213
|
};
|
|
12225
12214
|
|
|
12226
12215
|
func.UI.screen.execute_xu_functions = async function (SESSION_ID, is_skeleton, $root_container, nodeP, $container, paramsP, parent_infoP, jobNoP, keyP, parent_nodeP, xu_func, $elm, val, is_init, refreshed_ds) {
|
|
@@ -12237,8 +12226,8 @@ func.UI.screen.execute_xu_functions = async function (SESSION_ID, is_skeleton, $
|
|
|
12237
12226
|
const init_program = async function () {
|
|
12238
12227
|
async function render_panel() {
|
|
12239
12228
|
const prog_id = val.value?.prog || val.value;
|
|
12240
|
-
const
|
|
12241
|
-
let ret_panel = await func.UI.screen.init(SESSION_ID, prog_id, paramsP.screenId, _ds, $elm, null, _ds.currentRecordId, null, true,
|
|
12229
|
+
const params_obj = await get_params_obj_new(SESSION_ID, prog_id, nodeP, paramsP.dsSessionP);
|
|
12230
|
+
let ret_panel = await func.UI.screen.init(SESSION_ID, prog_id, paramsP.screenId, _ds, $elm, null, _ds.currentRecordId, null, true, params_obj.params_res, 'initXu_panel', undefined, prog_id !== _ds.prog_id ? null : refreshed_ds, params_obj.params_raw);
|
|
12242
12231
|
ret = { $new_div: ret_panel };
|
|
12243
12232
|
$container.data().xuData.xuPanelProps = $elm.data().xuAttributes;
|
|
12244
12233
|
$container.data().xuData.xuPanelData = ret_panel.data();
|
|
@@ -12287,8 +12276,8 @@ func.UI.screen.execute_xu_functions = async function (SESSION_ID, is_skeleton, $
|
|
|
12287
12276
|
const program = val.value?.prog || val.value;
|
|
12288
12277
|
var $wrapper = $('<div>');
|
|
12289
12278
|
var $div = func.UI.screen.create_container(SESSION_ID, $root_container, nodeP, $container, paramsP, parent_infoP, jobNoP, keyP, parent_nodeP, nodeP.attributes, null, null, null, $wrapper, '');
|
|
12290
|
-
const
|
|
12291
|
-
let ret_init = await func.UI.screen.init(SESSION_ID, program, paramsP.screenId, _ds, $div, null, _ds.currentRecordId, jobNoP, true,
|
|
12279
|
+
const params_obj = await get_params_obj_new(SESSION_ID, program, nodeP, paramsP.dsSessionP);
|
|
12280
|
+
let ret_init = await func.UI.screen.init(SESSION_ID, program, paramsP.screenId, _ds, $div, null, _ds.currentRecordId, jobNoP, true, params_obj.params_res, 'alterXu_panel', undefined, undefined, params_obj.params_raw);
|
|
12292
12281
|
ret = {
|
|
12293
12282
|
$new_div: ret_init,
|
|
12294
12283
|
abort: true,
|