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.51 kB
const screen_save=async function(SESSION_ID,paramsP){await func.runtime.bind.wait_for_pending_updates?.(SESSION_ID);var str='[screenid="'+paramsP.screenId+'"]';var elm=document.getElementById(paramsP.screenId)?.querySelectorAll(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=func.runtime.ui.get_data(val,"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"){func.runtime.platform.emit("xu-bind-refresh."+params.dsSession.toString())}},act_prev:async function(){await locate_record(SESSION_ID,"prev",params.dsSession);if(_ds.tree_obj.renderType==="form")func.runtime.platform.emit("xu-bind-refresh."+params.dsSession.toString())},act_last:async function(){await locate_record(SESSION_ID,"last",params.dsSession);if(_ds.tree_obj.renderType==="form")func.runtime.platform.emit("xu-bind-refresh."+params.dsSession.toString())},act_first:async function(){await locate_record(SESSION_ID,"first",params.dsSession);if(_ds.tree_obj.renderType==="form")func.runtime.platform.emit("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.runtime.ui.update_sys_obj_win_info(SESSION_ID,params.dsSession);func.runtime.platform.emit("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||"")}await func.runtime.ui.refresh_xu_attributes({SESSION_ID:SESSION_ID,fields_arr: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=structuredClone(params.screen_params);switch(params.screen_params.screen_type){case"modal":debugger;break;case"popover":debugger;break;case"panel":await func.runtime.ui.refresh_screen({SESSION_ID:SESSION_ID,fields_changed_arr:null,datasource_changed:params.dsSession});func.events.delete_job(SESSION_ID,jobNoP);break;case"page":let nav=SESSION_OBJ[SESSION_ID].root_element.querySelector("xu-nav");nav.popTo();break;default:func.runtime.ui.empty(screen_params.$callingContainerP);break}let ret=await func.runtime.ui.init_screen({SESSION_ID:SESSION_ID,prog_id:params.screen_params.prog_id,sourceScreenP:params.screen_params.sourceScreenP,callingDataSource_objP:params.screen_params.callingDataSource_objP,$callingContainerP:params.screen_params.$callingContainerP,triggerIdP:params.screen_params.triggerIdP,rowIdP:params.screen_params.rowIdP,jobNoP:null,is_panelP:params.screen_params.is_panelP,parameters_obj_inP:params.screen_params.parameters_obj_inP,source_functionP: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)}};