| 
					
				 | 
			
			
				@@ -143,9 +143,6 @@ function fullAccessSetup(config,listName){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	setup.filters['crfRef']=getCRFref(config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	setup.getInputId=function(vName){return listName+"_"+vName;} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	setup.addApply="Save"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	//not neccesarily unique 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	//setup.unique=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	//no addApply 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return setup; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -289,21 +286,28 @@ function generateSection(config, sectionName, sectionTitle, listName, additional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (debug) print(config,"generate master table"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	let setup=fullAccessSetup(config,listName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ("reviewMode" in config)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		setup=readonlySetup(config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	//master table is unique per visit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	setup.unique=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if (config.review)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		setup=readonlySetup(config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	generateTable(config,listName,divTable.id,true,additionalData,setup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if (debug) print(config,"generate master table: done"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	let generateSubTable=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ("reviewMode" in config) generateSubTable=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (! ("showFlag" in additionalData) ) generateSubTable=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if ("showFlag" in additionalData){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (generateSubTable){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		let qName=additionalData.queryName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		let dName=additionalData.divName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		let setup=fullAccessSetup(config,qName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (config.review) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if ("reviewMode" in config) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			setup=readonlySetup(config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		generateTable(config,qName,dName,false,additionalData,setup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -351,6 +355,14 @@ function generateReview(config,data,divReviewId,divReviewListId, listName){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		if (vName=="ModifiedBy") return true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return false;}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reviewSetup.addApply="Add Review"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	let generateTableFlag=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ("reviewMode" in config && config.reviewMode == "APPROVED" ){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		delete reviewSetup.addApply; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		reviewSetup.readonlyFlag=function(vName){return false;} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		generateTableFlag=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reviewSetup.filters=new Object(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reviewSetup.filters["crfRef"]=getCRFref(config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reviewSetup.filters["queryName"]=listId;//entry in reviewComments list is queryname, all in small caps 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -366,6 +378,9 @@ function generateReview(config,data,divReviewId,divReviewListId, listName){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		print(config,msg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	updateListDisplay(config,divReviewListId,"reviewComments",reviewSetup.filters,true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (! generateTableFlag) return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	generateTable(config,"reviewComments",divReviewId,false,new Object(),reviewSetup); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1452,6 +1467,8 @@ function generateMasterForm(config){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	configSelectRows.containerPath=config.containerPath; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	configSelectRows.schemaName='lists'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	configSelectRows.queryName=config.setupQueryName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	//this is new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	configSelectRows.formName=config.formName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	configSelectRows.success=function(data){generateForm(config,data);}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	configSelectRows.failure=onFailure;//function(errorTxt){print(config,"generateForm fail" + errorTxt)}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	LABKEY.Query.selectRows(configSelectRows); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1460,11 +1477,13 @@ function generateMasterForm(config){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		print(config,"Generating buttons"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	//requires onSubmit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if (config.review){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ("reviewMode" in config){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (config.reviewMode=="REVIEW"){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		generateButton(config,"submitDiv","Complete submission","Upload to database",onDatabaseUpload,config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		generateButton(config,"submitDiv","Review submission","Ask for further review",onUpdateForReview,config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		generateButton(config,"submitDiv","Remove submission","Remove CRF form",onRemoveCRF,config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			generateButton(config,"submitDiv","Complete submission","Upload to database",onDatabaseUpload,config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			generateButton(config,"submitDiv","Review submission","Ask for further review",onUpdateForReview,config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			generateButton(config,"submitDiv","Remove submission","Remove CRF form",onRemoveCRF,config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	}	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		generateButton(config,"submitDiv","Complete submission","Submit",onSubmit,config); 
			 |