UNPKG

@xuda.io/runtime-bundle

Version:

The Xuda Runtime Bundle refers to a collection of scripts and libraries packaged together to provide the necessary runtime environment for executing plugins or components in the Xuda platform.

108 lines (98 loc) 3.64 kB
const log_error = function (SESSION_ID, action, descP, detailsP, warning, prog_id) { func.utils.debug.log(SESSION_ID, log_nodeId, { module: 'event', action, source: '', prop: descP, details: detailsP, result: null, error: !warning, warning: warning, fields: null, type: 'event', prog_id, }); }; const get_ui_ids = function (SESSION_ID, event_prop) { if (event_prop.selector === '@_THIS') event_prop.selector = elementP; // var ui_ids = []; if (event_prop.selector_type == 'tree_id') { let $elm = func.UI.utils.find_in_element_data('xuData', $(SESSION_OBJ[SESSION_ID].root_element), 'ui_id', event_prop.selector); return [ { ui_id: event_prop.selector, tagName: $elm?.data()?.xuData?.node.tagName, //$elm[0]?.tagName?.toLowerCase(), }, ]; } return _.map($(SESSION_OBJ[SESSION_ID].root_element).find(event_prop.selector), function (val, key) { return { ui_id: $(val)?.data()?.xuData?.ui_id, tagName: $(val)?.data()?.xuData?.node.tagName, //$(val)[0]?.tagName?.toLowerCase(), }; }); }; const get_ui_id = async function (SESSION_ID, dsSession, event_prop, rowP) { if (event_prop.selector === '@_THIS') event_prop.selector = elementP; return await func.expression.get(SESSION_ID, event_prop.selector, dsSession, 'ui_id', rowP); }; const set_info_value = async function (SESSION_ID, value, source, event_prop, resolve) { var _session = SESSION_OBJ[SESSION_ID]; if (!event_prop.field_return_value) { log_error(SESSION_ID, source, ' Field cannot be empty'); return; } var fieldId = event_prop.field_return_value.substr(1); if (event_prop.field_return_value.substr(0, 1) !== '@') { log_error(SESSION_ID, source, fieldId + ' Field not valid'); return; } var fieldsChanged_arr = []; var rows_changed_arr = []; var returned_ds; const update_ds = async function (dsP, rowIdP) { if (!dsP || !_session.DS_GLB[dsP]) return; var _ds = _session.DS_GLB[dsP]; try { const row_idx = func.common.find_ROWID_idx(_ds, rowIdP); if (_ds.data_feed?.rows?.[row_idx]?.[fieldId]) _ds.data_feed.rows[row_idx][fieldId] = value; } catch (err) { console.error(err); } if (!fieldsChanged_arr.includes(fieldId)) fieldsChanged_arr.push(fieldId); if (!rows_changed_arr.includes(rowIdP)) rows_changed_arr.push(rowIdP); returned_ds = dsP; const _view_obj = await func.utils.VIEWS_OBJ.get(SESSION_ID, _ds.prog_id); var field_row_id = func.common.find_item_by_key(_view_obj.progFields, 'field_id', fieldId)?.id; func.utils.debug.watch(SESSION_ID, _ds.prog_id + '%' + field_row_id, 'view_field', 'Source: ' + source, value); }; const ret = await func.datasource.get_value( SESSION_ID, fieldId, dsSession, _session.DS_GLB[dsSession].currentRecordId, ); await update_ds(ret.dsSessionP, ret.currentRecordId); if (returned_ds) { var obj = { sessionChanged: returned_ds, viewType_target: _session.DS_GLB[returned_ds].viewType, rows_changed: rows_changed_arr, fieldsChanged: fieldsChanged_arr, }; await func.datasource.update(SESSION_ID, obj); resolve(); } }; const element_not_found = function (SESSION_ID, dsP, jobNoP, alter_attr, ui_id) { var _session = SESSION_OBJ[SESSION_ID]; if (_.isEmpty(SCREEN_BLOCKER_OBJ)) { // still busy not require alert if (_session.DS_GLB[dsP]) { log_error(SESSION_ID, 'UI element not found', alter_attr + ' > ' + ui_id, null, _session.DS_GLB[dsP].prog_id); } } if (jobNoP) { func.events.delete_job(SESSION_ID, jobNoP); } };