@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 • 8.71 kB
JavaScript
const _this={};export const init_module=e=>{_this.func=e.func;_this.glb=e.glb;_this.SESSION_OBJ=e.SESSION_OBJ;_this.APP_OBJ=e.APP_OBJ;_this.IS_DOCKER=e.IS_DOCKER;_this.IS_API_SERVER=e.IS_API_SERVER;_this.IS_PROCESS_SERVER=e.IS_PROCESS_SERVER};export const build_filter=async function(SESSION_ID,dataSourceSession,v,_ds){let file_ret2=await _this.func.utils.FILES_OBJ.get(SESSION_ID,_ds._dataSourceTableId);if(!file_ret2){_this.func.utils.debug_report(SESSION_ID,"datasource build query","Table reference not exist","E");return}let view_ret=await _this.func.utils.VIEWS_OBJ.get(SESSION_ID,_ds.args.prog_id);v.dataSourceIndexId=view_ret.progDataSource.dataSourceIndexId;v.dataSourceIndexIdExp=view_ret.progDataSource.dataSourceIndexIdExp;if(v.dataSourceIndexIdExp){let ret_dataSourceIndexIdExp=await _this.func.expression.get(SESSION_ID,v.dataSourceIndexIdExp,dataSourceSession,"index",_ds.args.rowIdP);if(ret_dataSourceIndexIdExp.result){v.dataSourceIndexId=ret_dataSourceIndexIdExp.result}if(!v.dataSourceIndexId){_this.func.utils.debug_report(SESSION_ID,"BUILD FILTER QUERY","Index expression return empty result","W")}v.dataSourceIndexesObj=view_ret.progDataSource.dataSourceIndexesObj;const index_obj=_this.func.common.find_item_by_key_root(file_ret2.tableIndexes,"id",v.dataSourceIndexId);if(!index_obj){return _this.func.utils.debug_report(SESSION_ID,"BUILD FILTER QUERY","Index not found in table: "+_ds._dataSourceTableId,"W")}if(!v.dataSourceIndexesObj?.[v.dataSourceIndexId]){_this.func.utils.debug_report(SESSION_ID,"BUILD FILTER QUERY","Index not found","W")}}var filter_from={};var filter_to={};let ret=await _this.func.utils.VIEWS_OBJ.get(SESSION_ID,_ds.args.prog_id);var sortOrder=ret.progDataSource.dataSourceSort;var sortOrderTypeExp=ret.progDataSource.dataSourceSortExp;if(_ds.sortOrder){sortOrder=_ds.sortOrder}if(_ds.sortOrderTypeExp){sortOrderTypeExp=_ds.sortOrderTypeExp}v.sortOrder=sortOrder;v.sortOrderTypeExp=sortOrderTypeExp;if(sortOrderTypeExp){var sort_orderExp=await _this.func.expression.get(SESSION_ID,v.sortOrderTypeExp,dataSourceSession,"sortorder",_ds.args.rowIdP);if(sort_orderExp.result){v.sortOrder=sort_orderExp.result;sortOrder=v.sortOrder}}let file_ret=await _this.func.utils.FILES_OBJ.get(SESSION_ID,_ds._dataSourceTableId);if(v.dataSourceIndexId){_ds.filter_from={};_ds.filter_to={};_ds.locate_from={};_ds.locate_to={};var locate_exist;var locate_error;if(v.viewIndex){for await(const[keySegment,valSegment]of Object.entries(v.viewIndex[v.dataSourceIndexId])){var fieldId=keySegment;if(!_this.func.common.find_item_by_key(file_ret.tableFields,"field_id",fieldId)){_this.func.utils.debug_report(SESSION_ID,"datasource build query",`Wrong index fields for ${fieldId} at field range ${v.viewSourceDesc}`,"E",null,_ds);break}var fieldProp=_this.func.common.find_item_by_key(file_ret.tableFields,"field_id",fieldId);var fieldType=fieldProp.props.fieldType;var fieldValFrom=valSegment.from;var fieldValTo=valSegment.to;const get_val=async function(valP,actionP,typeP){var ret={};ret.result=valP;ret.fields={};ret.fields[fieldId]=valP;if(!ret.result){ret.result=0;if(fieldType!=="number"){ret.result="";ret.fields[fieldId]=ret.result}}else{if(fieldType==="number"){if(!valP.includes("@")){if(typeof valP==="boolean"){ret.result=valP?1:0}else{ret.result=Number(valP)}ret.fields[fieldId]=ret.result}}else{if(!valP.includes("@")){ret.result=valP;ret.fields[fieldId]=ret.result}}ret=await _this.func.expression.get(SESSION_ID,ret.result,dataSourceSession,"query",_ds.args.rowIdP)}_this.func.utils.debug.log(SESSION_ID,_ds.args.prog_id+"_"+valSegment.id,{module:v.viewModule,action:actionP,prop:typeP,details:ret.result,result:ret.result,error:ret.error,warning:ret.warning,source:v.viewSourceDesc,fields:ret.fields,type:"query",prog_id:_ds.args.prog_id,dsSession:dataSourceSession});return ret};var value_from=await get_val(fieldValFrom,"range","from");var value_to=await get_val(fieldValTo,"range","to");v.segFrom.push(value_from.result);v.segTo.push(value_to.result);var add_filters_to_datasource=function(objP,typeP){for(let[key,val]of Object.entries(objP.fields)){if(!val)val=null;_ds[typeP][key]=val}};add_filters_to_datasource(value_from,"filter_from");add_filters_to_datasource(value_to,"filter_to");filter_from[fieldId]=value_from.result;filter_to[fieldId]=value_to.result;if(_ds.tree_obj.menuType==="component"){v.segLocateFrom[keySegment]=v.segFrom[keySegment];v.segLocateTo[keySegment]=v.segTo[keySegment];v.fieldLocateValFrom=valSegment.locate_from;v.fieldLocateValTo=valSegment.locate_to;if(valSegment.locate_from||valSegment.locate_to)locate_exist=true;var value_from_locate=await get_val(v.fieldLocateValFrom,"locate","from");var value_to_locate=await get_val(v.fieldLocateValTo,"locate","to");v.segLocateFrom[keySegment]=value_from_locate.result;v.segLocateTo[keySegment]=value_to_locate.result;add_filters_to_datasource(value_from_locate,"locate_from");add_filters_to_datasource(value_to_locate,"locate_to")}}}const query_string_helper=function(fileIdP,indexIdP,segFromP,segToP,sortOrderP,filter_from,filter_to){var query={};var from=[fileIdP,indexIdP,segFromP];var to=[fileIdP,indexIdP,segToP];query.desc=sortOrderP==="des";query.view="db_index";query.table_id=fileIdP;query.indexId=indexIdP;if(sortOrderP==="des"){query.startkey=to;query.endkey=from}else{query.startkey=from;query.endkey=to}query.filter_from=filter_from;query.filter_to=filter_to;query.sortOrder=sortOrderP;return query};{v.couchView=query_string_helper(_ds._dataSourceTableId,v.dataSourceIndexId,v.segFrom,v.segTo,sortOrder,filter_from,filter_to)}if(_ds.tree_obj.menuType==="component"&&locate_exist&&!locate_error){v.locateQuery=query_string_helper(_ds._dataSourceTableId,v.dataSourceIndexId,v.segLocateFrom,v.segLocateTo,sortOrder,_ds.locate_from,_ds.locate_to)}}else{v.couchView={view:"db_index_all",table_id:_ds._dataSourceTableId}}};export const process_view_dataset=async function(SESSION_ID,dataSourceSession,_ds){const tree_obj=await _this.func.utils.TREE_OBJ.get(SESSION_ID,_ds.prog_id);var rows_count=_ds?.v.raw_data?.rows?.length||0;var args=_ds.args;const finish_dataset=async function(){_ds.rows_found=rows_count;if(tree_obj.menuType==="get_data"&&rows_count&&await _this.func.datasource.get_view_events_count(SESSION_ID,dataSourceSession,"after_record")>0){await _this.func.datasource.execute_view_events(SESSION_ID,dataSourceSession,"after_record")}return _this.func.datasource.callback(SESSION_ID,dataSourceSession,args.dataSourceNoP,args.rowIdP,args.jobNoP,null,_ds.nodeId)};const iterate_rows=async function(){for await(const[key,raw_data_row]of Object.entries(_ds.v.raw_data.rows)){_ds.currentRecordId=raw_data_row.id;await _this.func.datasource.render_fields_dataset(SESSION_ID,dataSourceSession,raw_data_row);break}return await finish_dataset()};if(rows_count){return await iterate_rows()}_ds.currentRecordId="dataset";_ds.set_mode="C";await _this.func.datasource.render_fields_dataset(SESSION_ID,dataSourceSession);await _this.func.events.validate(SESSION_ID,"record_not_found",dataSourceSession);_ds.record_not_found=true;return await finish_dataset()};export const set_dataset_key_data=function(SESSION_ID,dataSourceSession,valP){var _ds=_this.SESSION_OBJ[SESSION_ID].DS_GLB[dataSourceSession];var v=_ds.v;v.udfData=valP.value.udfData;var keyData={_id:valP.value._id,_rev:valP.value._rev,table_id:_ds._dataSourceTableId};_ds.key=keyData};export const get_locate_from_db=async function(SESSION_ID,dataSourceSession){var _ds=_this.SESSION_OBJ[SESSION_ID].DS_GLB[dataSourceSession];var v=_ds.v;if(!v.locateQuery){return}const json=await _this.func.db.get_query(SESSION_ID,_ds._dataSourceTableId,v.locateQuery,dataSourceSession,v.viewSourceDesc,"locate record");var rows=json.rows.length;if(!rows){return await _this.func.events.validate(SESSION_ID,"locate_not_found",dataSourceSession)}_ds.locatedRecordId=json.rows[0].id;return};export const find_fieldId_in_index=function(SESSION_ID,dataSourceSession,fieldId){var _ds=_this.SESSION_OBJ[SESSION_ID].DS_GLB[dataSourceSession];var v=_ds.v;var ret;_.forEach(v.viewIndex,function(val,key){if(val.data[0]===fieldId){ret=key;return false}});return ret};export const dataset_save_before_exit=async function(SESSION_ID,dataSourceSession,reEnterP){var exit_event_count=0;if(!reEnterP){exit_event_count=await _this.func.datasource.get_view_events_count(SESSION_ID,dataSourceSession,"on_exit")}var _ds=_this.SESSION_OBJ[SESSION_ID].DS_GLB[dataSourceSession];var v=_ds.v;if(exit_event_count){await _this.func.datasource.execute_view_events(SESSION_ID,dataSourceSession,"on_exit");if(v?.screenInfo?.properties?.menuType==="set_data"&&_.size(v.jsonP.rows)){return await _this.func.db.save_data(SESSION_ID,dataSourceSession)}}return};