|
@@ -149,13 +149,15 @@ function generateDebugSection(){
|
|
|
let div=config.document.createElement('div');
|
|
|
div.id=sectionName;
|
|
|
config.document.getElementById(formName).appendChild(div);
|
|
|
+
|
|
|
//start open (for debug)
|
|
|
- input.value="Hide";
|
|
|
- div.style.display="block";
|
|
|
+
|
|
|
+ //input.value="Hide";
|
|
|
+ //div.style.display="block";
|
|
|
|
|
|
//start hidden (for production)
|
|
|
- //input.value="Show";
|
|
|
- //div.style.display="none";
|
|
|
+ input.value="Show";
|
|
|
+ div.style.display="none";
|
|
|
|
|
|
let debugArea=config.document.createElement('textarea');
|
|
|
debugArea.rows=10;
|
|
@@ -350,6 +352,8 @@ function generateSection(formSetupEntry){
|
|
|
|
|
|
|
|
|
let setup=fullAccessSetup(qName);
|
|
|
+ //only set master query for additionalData
|
|
|
+ setup.masterQuery=listName;
|
|
|
//if (readonly) setup=readonlySetup(config);
|
|
|
generateTable(qName,dName,additionalData,setup);
|
|
|
//generateTable(formSetupEntry,qName,dName,additionalData,setup);
|
|
@@ -793,8 +797,11 @@ function generateReviewSection2(pid){
|
|
|
function generateReview(divReviewId,divReviewListId, listName, accessMode){
|
|
|
let listId=config.formConfig.fields[listName].queryId;
|
|
|
|
|
|
+ //listId is a number->should it be queryName?
|
|
|
+
|
|
|
+
|
|
|
let debug=true;
|
|
|
- if (debug) print("Generate review for: "+listId);
|
|
|
+ if (debug) print("Generate review for: "+listId+'/'+listName);
|
|
|
|
|
|
let reviewSetup=new Object();
|
|
|
reviewSetup.readonlyFlag=function(vName){
|
|
@@ -1237,20 +1244,25 @@ function populateSubQuery(entry,field,setup){
|
|
|
|
|
|
function populateField(entry,field,setup){
|
|
|
|
|
|
- print('populateFieldRow ['+field.name+']: '+entry[field.name]+' ['+
|
|
|
- setup.getInputId(field.name)+']');
|
|
|
-
|
|
|
let vName=field.name;
|
|
|
- let vType=field.type;
|
|
|
- let id=setup.getInputId(vName);
|
|
|
- let input=config.document.getElementById(id);
|
|
|
- let isLookup=("lookup" in field);
|
|
|
+ let fName='[populateFieldName/'+vName+']';
|
|
|
|
|
|
let varValue="UNDEF";
|
|
|
+
|
|
|
//if (vName in setup.filters) varValue=setup.filters[vName];
|
|
|
if (vName in entry) varValue=entry[vName];
|
|
|
//if part of the filter, set it to value
|
|
|
if (vName in setup.filters) varValue=setup.filters[vName];
|
|
|
+
|
|
|
+ let isLookup=("lookup" in field);
|
|
|
+
|
|
|
+ print(fName+' v='+varValue+'/'+isLookup+' ['+
|
|
|
+ setup.getInputId(field.name)+']');
|
|
|
+
|
|
|
+ let vType=field.type;
|
|
|
+ let id=setup.getInputId(vName);
|
|
|
+ let input=config.document.getElementById(id);
|
|
|
+
|
|
|
|
|
|
//date
|
|
|
if (vType=="date"){
|
|
@@ -1271,6 +1283,8 @@ function populateField(entry,field,setup){
|
|
|
let eType=input.nodeName.toLowerCase();
|
|
|
print('Element type: '+eType);
|
|
|
|
|
|
+ //change varValue for printing
|
|
|
+ if (varValue=="UNDEF") varValue="";
|
|
|
//HTMLTextArea, createElement(textArea)
|
|
|
if (eType==="textarea"){
|
|
|
input.value=varValue;
|
|
@@ -1364,6 +1378,8 @@ function generateTable(listName,divName,additionalData,setup){
|
|
|
let debug=true;
|
|
|
let fName="[generateTable/"+listName+"]";
|
|
|
if (debug) print(fName);
|
|
|
+
|
|
|
+ //is listName and setup.queryName a duplicate of the same value
|
|
|
print(fName+': setup.queryName '+setup.queryName);
|
|
|
//assume data is set in config.formConfig.dataQueries[data.queryName].rows;
|
|
|
|
|
@@ -1569,6 +1585,11 @@ function updateLastSavedFlag(data,setup,elementId){
|
|
|
let writeMode=!setup.readonlyFlag();
|
|
|
if ("unique" in setup)
|
|
|
setData(function (){populateTable(data.queryName,writeMode);});
|
|
|
+ if ("masterQuery" in setup){
|
|
|
+ let ad=config.formConfig.additionalData[setup.masterQuery];
|
|
|
+ print('Updating list display: '+setup.queryName+'/'+ad.queryName);
|
|
|
+ updateListDisplay(ad.divQueryName,ad.queryName,ad.filters,false);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//******************************************upload to database *********************
|
|
@@ -1688,12 +1709,14 @@ function afterParticipantId(fc){
|
|
|
|
|
|
|
|
|
function copyToDataset(){
|
|
|
- print('copyToDataset');
|
|
|
+ let fName='[copyToDataset]: ';
|
|
|
+ print(fName+'['+config.upload.queryId+'/'+config.upload.queries.length+']');
|
|
|
//watch dog + scheduler
|
|
|
//
|
|
|
|
|
|
//watchdog part
|
|
|
if (config.upload.queryId==config.upload.queries.length) {
|
|
|
+ print(fName+'completing');
|
|
|
let targetStatus=config.formConfig.targetStatus['onDatabaseUpload'];
|
|
|
let targetRecipient=config.formConfig.targetRecipient['onDatabaseUpload'];
|
|
|
let action=new Object();
|
|
@@ -1717,10 +1740,10 @@ function copyToDataset(){
|
|
|
}
|
|
|
|
|
|
function afterListData(data){
|
|
|
+ let fName='[afterListData]: ';
|
|
|
|
|
|
let queryName=config.upload.queries[config.upload.queryId].queryName;
|
|
|
- let msg="["+queryName+"/list]: "+data.rows.length+" entries";
|
|
|
- print(msg);
|
|
|
+ print(fName+" ["+queryName+"/list]: "+data.rows.length+" entries");
|
|
|
config.upload.queries[config.upload.queryId].listData=data;
|
|
|
let id=config.upload.participantId;
|
|
|
|
|
@@ -1736,10 +1759,12 @@ function afterListData(data){
|
|
|
|
|
|
|
|
|
function afterStudyData(data){
|
|
|
+
|
|
|
+ let fName='[afterStudyData]: ';
|
|
|
let queryObj=config.upload.queries[config.upload.queryId];
|
|
|
queryObj.studyData=data;
|
|
|
|
|
|
- let msg="["+queryObj.queryName+"/study]: "+data.rows.length+" entries";
|
|
|
+ let msg=fName+"["+queryObj.queryName+"/study]: "+data.rows.length+" entries";
|
|
|
print(msg);
|
|
|
|
|
|
|
|
@@ -1759,22 +1784,27 @@ function afterStudyData(data){
|
|
|
|
|
|
for (let i=0;i<studyRows.length;i++){
|
|
|
let entry=studyRows[i];
|
|
|
+ //
|
|
|
if (! (i<listRows.length) ) continue;
|
|
|
let entryList=listRows[i];
|
|
|
//keeps study only variables (ParticipantId, SequenceNum)
|
|
|
for (let f in entryList) {
|
|
|
entry[f]=entryList[f];
|
|
|
- print("Copying ["+f+"]: "+entry[f]+"/"+entryList[f]);
|
|
|
+ print(fName+"Copying ["+f+"]: "+entry[f]+"/"+entryList[f]);
|
|
|
}
|
|
|
}
|
|
|
+ print(fName+' copying completed');
|
|
|
+
|
|
|
if (studyRows.length>0) {
|
|
|
let qconfig=new Object();
|
|
|
- qconfig.queryName=queryName;
|
|
|
+ qconfig.queryName=queryObj.queryName;
|
|
|
qconfig.schemaName="study";
|
|
|
qconfig.rows=studyRows;
|
|
|
qconfig.containerPath=getContainer('data');
|
|
|
qconfig.success=afterStudyUpload;
|
|
|
- LABKEY.Query.updateRows(qconfig)
|
|
|
+ LABKEY.Query.updateRows(qconfig);
|
|
|
+ print(fName+'updateRows sent');
|
|
|
+
|
|
|
}
|
|
|
else{
|
|
|
let data=new Object();
|
|
@@ -1784,9 +1814,11 @@ function afterStudyData(data){
|
|
|
}
|
|
|
|
|
|
function afterStudyUpload(data){
|
|
|
-
|
|
|
+ let fName='[afterStudyUpload] ';
|
|
|
+ print(fName);
|
|
|
//let participantField=config.participantField;
|
|
|
let participantField=config.formConfig.studyData["SubjectColumnName"];
|
|
|
+ print(fName+' participantField: '+participantField);
|
|
|
|
|
|
let queryObj=config.upload.queries[config.upload.queryId];
|
|
|
let queryName=queryObj.queryName;
|
|
@@ -3264,6 +3296,9 @@ function afterDatasets(data,cb){
|
|
|
selectRows.schemaName=field.lookup.schemaName;
|
|
|
selectRows.queryName=field.lookup.queryName;
|
|
|
selectRows.containerPath=getContainer('data');
|
|
|
+ if ("containerPath" in field.lookup){
|
|
|
+ selectRows.containerPath=field.lookup.containerPath;
|
|
|
+ }
|
|
|
selectRows.columns=field.lookup.keyColumn+","+
|
|
|
field.lookup.displayColumn;
|
|
|
//wait for all lookups to return
|