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.

1 lines 5.08 kB
const screen_save=async function(SESSION_ID,paramsP){var str='[screenid="'+paramsP.screenId+'"]';var elm=$("#"+paramsP.screenId).find(str);var dsSession;if(!elm||!elm.length){return func.db.save_data(SESSION_ID,paramsP.dsSession,0)}for await(const[key,val]of Object.entries(elm)){if(key==="length"){break}if(!val){continue}dsSession=$(val).data().xuData.dsSession;let _ds=SESSION_OBJ[SESSION_ID].DS_GLB[dsSession];if(!dsSession||!_ds){continue}if(_ds.tree_obj.renderType==="form"){if(_ds._dataSourceTableId){if(!_ds.abort_save)await func.db.save_data(SESSION_ID,dsSession,key);_ds.abort_save=false;continue}}}};export const action_execute=async function(SESSION_ID,actionP,params,isScreenActionP,event_sourceP,jobNoP,containerP){var _ds=SESSION_OBJ[SESSION_ID].DS_GLB[params.dsSession];if(!_ds){func.events.delete_job(SESSION_ID,jobNoP);return}var action=actionP;var formGrid_dsSession;var EVENTSUFFIX="_triggered";if(!isScreenActionP)formGrid_dsSession=params.dsSession;var do_event=async function(actionP){var delete_job=async function(jobsP){await func.events.check_jobs_idle(SESSION_ID,jobsP);func.events.delete_job(SESSION_ID,jobNoP)};const jobsP=await func.events.validate(SESSION_ID,actionP+EVENTSUFFIX,params.dsSession,null,"action");await delete_job(jobsP)};const fx={act_next:async function(){await locate_record(SESSION_ID,"next",params.dsSession);if(_ds.tree_obj.renderType==="form"){$("body").trigger("xu-bind-refresh."+params.dsSession.toString())}},act_prev:async function(){await locate_record(SESSION_ID,"prev",params.dsSession);if(_ds.tree_obj.renderType==="form")$("body").trigger("xu-bind-refresh."+params.dsSession.toString())},act_last:async function(){await locate_record(SESSION_ID,"last",params.dsSession);if(_ds.tree_obj.renderType==="form")$("body").trigger("xu-bind-refresh."+params.dsSession.toString())},act_first:async function(){await locate_record(SESSION_ID,"first",params.dsSession);if(_ds.tree_obj.renderType==="form")$("body").trigger("xu-bind-refresh."+params.dsSession.toString())},act_refresh:async function(sourceP){let screen_params=params.screen_params;await func.datasource.create(SESSION_ID,params.prog_id,params.dsSession,params.parentDataSourceNo,params.containerId,params.rowIdP);let _ds=SESSION_OBJ[SESSION_ID].DS_GLB[params.dsSession];_ds.screen_params=screen_params;func.UI.screen.update_SYS_OBJ_WIN_INFO(SESSION_ID,params.dsSession);$("body").trigger("xu-bind-refresh."+params.dsSession.toString());let prog_obj=await func.utils.VIEWS_OBJ.get(SESSION_ID,_ds.prog_id);let field_changed=[];for(let field of prog_obj?.progFields){field_changed.push(field?.data?.field_id||"")}func.UI.screen.refresh_xu_attributes(SESSION_ID,field_changed)},act_save:async function(){await screen_save(SESSION_ID,params)},act_delete:async function(){_ds.data_feed.rows_deleted.push(_ds.currentRecordId);await screen_save(SESSION_ID,params)},act_reload:async function(){var _ds=SESSION_OBJ[SESSION_ID].DS_GLB[params.dsSession];let screen_params=_.cloneDeep(params.screen_params);switch(params.screen_params.screen_type){case"modal":debugger;break;case"popover":debugger;break;case"panel":func.UI.screen.refresh_screen(SESSION_ID,null,params.dsSession);func.events.delete_job(SESSION_ID,jobNoP);break;case"page":let nav=$(SESSION_OBJ[SESSION_ID].root_element).find("xu-nav")[0];nav.popTo();break;default:screen_params.$callingContainerP.empty();break}let ret=await func.UI.screen.init(SESSION_ID,params.screen_params.prog_id,params.screen_params.sourceScreenP,params.screen_params.callingDataSource_objP,params.screen_params.$callingContainerP,params.screen_params.triggerIdP,params.screen_params.rowIdP,null,params.screen_params.is_panelP,params.screen_params.parameters_obj_inP,params.screen_params.source_functionP)},act_print:async function(){window.print()}};if(event_sourceP==="click"){await func.events.validate(SESSION_ID,action+"_clicked",params.dsSession,null,"toolbar");params.event_sourceP=event_sourceP;params.isScreenActionP=isScreenActionP;await func.events.add_to_queue(SESSION_ID,params.renderType,null,event_sourceP,"invoke_action",action,params.udfContainer,null,null,null,null,params.rootScreenIdP,null,null,null,null,null,"click",params,null,null,null)}else{await fx[action]();await do_event(action)}};const locate_record=async function(SESSION_ID,actionP,dsSessionP){var arr=[];var result;var _ds=SESSION_OBJ[SESSION_ID].DS_GLB[dsSessionP];var current=_ds.currentRecordId;if(!current)return;var i=1;try{let arr=ds?.data_feed?.rows||[];var len=srr.length;const idx=func.common.find_ROWID_idx(_ds,_ds.currentRecordId);if(actionP==="next"){if(idx+1<len){new_idx=idx+1;result=arr[new_idx]._ROWID}else{new_idx=idx;result=arr[new_idx]._ROWID}}if(actionP==="prev"){if(idx-1>0){new_idx=idx-1;result=arr[new_idx]._ROWID}else{new_idx=idx;result=arr[new_idx]._ROWID}}if(actionP==="first"){new_idx=1;result=arr[new_idx]._ROWID}if(actionP==="last"){new_idx=arr.length-1;result=arr[new_idx]._ROWID}var datasource_changes={[_ds.dsSession]:{[result]:"set"}};await func.datasource.update(SESSION_ID,datasource_changes)}catch(err){console.error(err)}};