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 2.98 kB
console.log("=================================================");console.log(" Xuda UI Worker started..."+(new Date).getTime());console.log("=================================================");var UI_WORKER_OBJ={jobs:[],num:9e3};const init_queue=async function(){let last_job_in_queue=0;const job_iterator=async function(){let from_job_num_to_run=last_job_in_queue;last_job_in_queue=UI_WORKER_OBJ.num-from_job_num_to_run;if(typeof UI_WORKER_OBJ.stat==="undefined"||UI_WORKER_OBJ.stat==="undefined"||UI_WORKER_OBJ.stat===null){this.attempt=0;if(UI_WORKER_OBJ.jobs.length){for await(const[key,val]of Object.entries(UI_WORKER_OBJ.jobs)){if(val.job_num<from_job_num_to_run)continue;if(val.stat){break}if(!UI_WORKER_OBJ.jobs[Number(key)]||val.job_num===9999999)continue;await execute(val)}}}else{this.attempt++}};let interval=setInterval(job_iterator,1)};const add_to_queue=async function(params){var obj={SESSION_ID,source,functionP,paramsP,calling_job,xu_ui_id,dsSession,calling_trigger_prop,job_num:UI_WORKER_OBJ.num}=params;if(functionP==="execute_xu_all_attributes"){const queue_key=source+"_"+functionP+"_"+(xu_ui_id||"")+"_"+(paramsP?.fields_arr?.toString()||"");obj.queue_key=queue_key;let exist_job=UI_WORKER_OBJ.jobs.find(e=>{if(e.queue_key===queue_key){return e}});if(exist_job){exist_job.paramsP=paramsP;exist_job.calling_trigger_prop=calling_trigger_prop;return}}if(calling_job){var job_index=find_job_index(calling_job);if(job_index===null||typeof job_index==="undefined")return;try{if(!UI_WORKER_OBJ.jobs[job_index].splice_count){UI_WORKER_OBJ.jobs[job_index].splice_count=0}UI_WORKER_OBJ.jobs[job_index].splice_count++;UI_WORKER_OBJ.jobs.splice(job_index+UI_WORKER_OBJ.jobs[job_index].splice_count,0,obj)}catch(e){console.error("bug")}}else{UI_WORKER_OBJ.jobs.push(obj)}UI_WORKER_OBJ.num++;return UI_WORKER_OBJ.num-1};const delete_job=async function(jobNoP){var job_index=find_job_index(jobNoP);if(!UI_WORKER_OBJ.jobs[job_index]){UI_WORKER_OBJ.stat=null;return}var dsSession=UI_WORKER_OBJ.jobs[job_index].dsSession;UI_WORKER_OBJ.stat=null;UI_WORKER_OBJ.jobs.splice(job_index,1)};const find_job_index=function(jobNoP){var ret=null;if(!UI_WORKER_OBJ)return ret;for(let[key,val]of Object.entries(UI_WORKER_OBJ.jobs)){if(val&&val.job_num==jobNoP){ret=Number(key);break}}return ret};const execute=async function(queue_obj){try{var job_index=find_job_index(queue_obj.job_num);if(UI_WORKER_OBJ.jobs?.[job_index]?.stat==="busy"){if(queue_obj.jobNoP)UI_WORKER_OBJ.stat=job_index;return}if(queue_obj.jobNoP&&!UI_WORKER_OBJ.jobs[job_index]){UI_WORKER_OBJ.stat=null;return}if(queue_obj.jobNoP)UI_WORKER_OBJ.stat=job_index;if(UI_WORKER_OBJ.jobs[job_index]){UI_WORKER_OBJ.jobs[job_index].stat="busy"}postMessage(queue_obj)}catch(error){debugger}};self.addEventListener("message",async function(e){switch(e.data.method){case"init":{init_queue();break}case"add_to_queue":{add_to_queue(e.data.params);break}case"delete_job":{delete_job(e.data.params.job_num);break}default:break}},false);