//global config variable const config=new Object(); function print(msg){ config.document.getElementById(config.debugArea).value+="\n"+msg; } function clear(){ config.document.getElementById(config.debugArea).value=""; } function getMode(){ if ("role" in config){ return config.role; } return "crfEditor"; } function doNothing(){ print('doNothing called'); } function makeQuery(containerName,queryName,fieldName,filterArray){ //queryArray should contain elements with //- fieldName to set the data variable //- containerName to select container (data,config,CRF) //- queryName to select query //- filterArray to perform filtering, empty array works //- callback cb to be called with no arguments let e=new Object(); e.containerName=containerName; e.queryName=queryName; e.fieldName=fieldName; e.filterArray=filterArray; return e; } function getDataFromQueries(queryArray,cb){ afterQuery(new Object(),-1,queryArray,cb); } function afterQuery(data,id,queryArray,cb){ print('afterQuery['+id+']: '); if (id>-1){ let fieldName=queryArray[id].fieldName; print('afterQuery['+fieldName+']: '+data.rows.length); //uses config.formConfig config.formConfig[fieldName]=data; } id+=1; if (id==queryArray.length) { cb(); return; } let e=queryArray[id]; let qconfig=new Object(); qconfig.containerPath=getContainer(e.containerName); qconfig.schemaName="lists"; if ("schemaName" in e){ print('afterQuery: schemaName='+e.schemaName); qconfig.schemaName=e.schemaName; } if ("columns" in e){ print('afterQuery: columns='+e.columns); qconfig.columns=e.columns; } qconfig.queryName=e.queryName; //this should point to configuration container //don't filter -> so we can pick up other forms (say registration) later on //qconfig.filterArray=[LABKEY.Filter.create('Key',config.formId)]; if ("filterArray" in e) qconfig.filterArray=e.filterArray; //qconfig.filterArray=[LABKEY.Filter.create('formStatus',1)] qconfig.success=function(data){afterQuery(data,id,queryArray,cb);}; qconfig.failure=doNothing; LABKEY.Query.selectRows(qconfig); } function printMessage(msg){ let txt=config.document.createElement("p"); config.document.getElementById(config.div).appendChild(txt); txt.innerText=msg; } function userName(id){ let formConfig=config.formConfig; for (let i=0;i0) msg+=', '; msg+=currentSites[i].siteName; } msg+=')'; printMessage(msg); for (let i=0;i0) potentialSiteNumbers+=','; potentialSiteNumbers+=currentSites[k].siteNumber; if (entry.Site!=currentSites[k].siteNumber) continue; matchingSite=currentSites[k].siteNumber; break; } potentialSiteNumbers+=']'; if (matchingSite==-1){ print('Skipping wrong site: '+entry.Site+'/'+potentialSiteNumbers); continue; } //insert form // let fbox=config.document.createElement("div"); fbox.classList.add("box","gold"); let fp=config.document.createElement("p"); let id=entry.entryId; fp.innerHTML=id; //it would be great if this were patientId if available //fp.classList.add("large","center"); fp.classList.add("center"); fbox.appendChild(fp); let fp1=config.document.createElement("p"); let user="NONE"; for (let ii=0;ii