Pārlūkot izejas kodu

Adding remove CRF button

Andrej Studen @ ONKO-NIX 4 gadi atpakaļ
vecāks
revīzija
906a5c5508
1 mainītis faili ar 107 papildinājumiem un 5 dzēšanām
  1. 107 5
      web/crf/crfVisit.js

+ 107 - 5
web/crf/crfVisit.js

@@ -453,7 +453,7 @@ function toggleVisibility(config, divName,buttonName){
   	}
 }
 
-function generateButton(config,divName,buttonName,callback,callbackParameters){
+function generateButton(config,divName,title,buttonName,callback,callbackParameters){
 	let debug=true;
 	if (debug) print(config,"generateButton");
 	
@@ -463,7 +463,7 @@ function generateButton(config,divName,buttonName,callback,callbackParameters){
 	let r1=tb.insertRow();
 	th=config.document.createElement('th');
 	r1.appendChild(th);
-	th.innerHTML="Complete submission";
+	th.innerHTML=title;
 	//*!*
 	let c2=r1.insertCell();
 	let i1=config.document.createElement("input");	
@@ -1325,7 +1325,107 @@ function checkData(data,config){
 }
 
 
+//**************************************************
+//
+function onRemoveCRF(config){
+	let debug=true;
+
+	if (debug){
+		print(config,"Removing CRF");
+	}
+
+	let selectRows=new Object();
+	selectRows.containerPath=config.containerPath;
+	selectRows.schemaName="lists";
+	selectRows.queryName="inputLists";
+	selectRows.success=function(data){afterInputLists(data,config)};
+	LABKEY.Query.selectRows(selectRows);
+}
+
+function afterInputLists(data,config){
+	let debug=true;
+	if (debug)
+		print(config,"After input lists");
+	config.inputLists=data;
+	config.inputListsIterator=0;
+
+	removeCRFLoop(config);
+}
 
+function removeCRFLoop(config){
+	let debug=true;
+
+	let i=config.inputListsIterator;
+	
+	if (debug)
+		print(config,"removeCRFLoop ["+i+"/"+config.inputLists.rows.length+"]");
+
+	if (i>config.inputLists.rows.length)
+		//return;
+		redirect(config);
+
+	let queryName="crfEntry";
+	let idVar="entryId";
+
+	
+	if (i<config.inputLists.rows.length){
+		queryName=config.inputLists.rows[i].queryName;
+		idVar="crfRef";
+	}
+	if (debug)
+		print(config,"["+i+"/"+config.inputLists.rows.length+"] "+queryName+"/"+idVar);
+
+	let selectRows=new Object();
+	selectRows.containerPath=config.containerPath;
+	selectRows.schemaName="lists";
+	selectRows.queryName=queryName;
+	selectRows.filterArray=[LABKEY.Filter.create(idVar,getCRFref(config))];
+	selectRows.success=function(data){removeListCRF(data,config)};
+	LABKEY.Query.selectRows(selectRows);
+}
+
+function removeListCRF(data,config){
+	let debug=true;
+
+	if (debug)
+		print(config,data.queryName+": "+data.rows.length);
+
+	config.inputListsIterator+=1;
+	
+	if (data.rows.length==0){
+		removeCRFLoop(config);
+		return;
+	}
+
+	let deleteRows=new Object();
+	deleteRows.containerPath=config.containerPath;
+	deleteRows.schemaName=data.schemaName;
+	deleteRows.queryName=data.queryName;
+	deleteRows.success=function(data){removeCRFLoop(config)};
+	deleteRows.rows=data.rows;
+	LABKEY.Query.deleteRows(deleteRows);
+	
+}
+
+function redirect(config){
+	let formUrl="begin";
+	var params = {
+		"name": formUrl, // The destination wiki page. The name of this parameter is not arbitrary.
+	};
+
+	let containerPath= config.containerPath;
+        
+	// This changes the page after building the URL. 
+	//Note that the wiki page destination name is set in params.
+        
+	var homeURL = LABKEY.ActionURL.buildURL("project", formUrl , containerPath, params);
+        print(config,"Redirecting to "+homeURL);
+		 
+	window.location = homeURL;
+
+	
+
+}
 
 function generateMasterForm(config){
 
@@ -1362,11 +1462,13 @@ function generateMasterForm(config){
 	//requires onSubmit
 	if (config.review){
 	
-		generateButton(config,"submitDiv","Upload to database",onDatabaseUpload,config);
-		generateButton(config,"submitDiv","Ask for further review",onUpdateForReview,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","Submit",onSubmit,config);
+		generateButton(config,"submitDiv","Complete submission","Submit",onSubmit,config);
+		generateButton(config,"submitDiv","Remove submission","Remove CRF form",onRemoveCRF,config);
 	}
 
 }