Quellcode durchsuchen

Switched to single setup list + cleanup of unused files

Andrej Studen @ ONKO-NIX vor 4 Jahren
Ursprung
Commit
48bd042ac6

+ 0 - 191
views/crfPortal.html

@@ -1,191 +0,0 @@
-<style>
-p.hidden{
-	display:none;
-}
-table {margin-bottom:20px;table-layout:fixed; border-collapse:collapse; border-spacing:10px}
-table.t1 {width:400px; border:1px solid black}
-table.t1 th {border:1px solid black;padding:4px;background-color:#e0e0e0}
-table.t1 td {text-align:center}
-table.t2 {width:800px; border:1px solid black;}
-table.t2 th {border:1px solid black;padding:4px;background-color:#e0e0e0}
-table.t2 td {border:1px solid black; text-align:center}
-
-table.headTable {width:800px}
-table.headTable th {font-size:20px,text-align:center,background-color:#e0e0e0}
-table.headTable td {font-size:20px,text-align:center}
-
-div.d1 {text-align:center; width=400px; background-color:#e0e0e0;
-        font-size:      20px; margin-bottom:20px}
-
-</style>
-
-<div class="d1">Clinical Report Form Portal</div>
-
-<div id="generalDataHead"></div>
-<div id="generalDataDiv" style="display:none">
-<table id="generalDataTable" cellspacing="2" cellpadding="5" border="0">
-<tr><td>Eudra CT Number: </td><td><strong id="eudraCTNumber">Loading</strong></td></tr>
-<tr><td>Study Sponsor: </td><td><strong id="studySponsor">Loading</strong></td></tr>
-<tr><td>Study Coordinator: </td><td><strong id="studyCoordinator">Loading</strong></td></tr>
-<tr><td>Regulatory authority Entry Number:</td><td><strong id="regulatoryNumber">Loading</strong></td></tr>
-</table>
-</div>
-
-<div id="pickFormHead"></div>
-<div id="pickFormDiv" style="display:none">
-	<div id="formDiv"></div>
-	<div id="selectFormDiv" style="display:block"></div>
-	<div id="listDiv"></div>
-</div>
-
-<div id="startDiv"></div>
-
-<div id="debugAreaHead"></div>
-<div id="debugAreaDiv" style="display:none">
-<textarea cols="95" rows="5" name="formStatus" id="formStatus">Entering data</textarea>
-</div>
-
-<script type="text/javascript">
-
-document.getElementById("formStatus").value+="\nStarting";
-window.onload = init();
-
-
-
-// Initialize the form by populating the Reagent drop-down list and
-// entering data associated with the current user.
-function init() {
-
-	var config=new Object();
-	config.document=document;
-	config.debugId='formStatus';
-
-	generateHead(config,"debugAreaHead","debugAreaDiv","Debug info");
-	generateHead(config,"generalDataHead","generalDataDiv","General data");
-	generateHead(config,"pickFormHead","pickFormDiv","Select CRF");
-
-	print(config,"Added generateHead");
-	//parameters should include
-	//parameters should include
-	//divName - place to render select entry table
-	//masterQuery - the master query that will collect al the data
-	//masterSelectVarName - variable that is going to fill the content of select. 
-	//		  Typically, the variable is a lookup in the master query
-	//masterUserVarName	- variable that stores the user id in the master query 
-	//		only entries matching current user in the master query will be selected
-	//authorization - additional data to check:
-	//	* if the current user is authorized to perform action and/or 
-	// 	* limit number of different queryVariable values user is entitled to use
-	//authorization should contain:
-	//	* queryName - query of user/queryVariable pairs to check for authorized access
-	//	* authUserVarName - name of the variable in authorization.queryName that contain usesId
-	//	* authSelectVarName - name of the selectVar in authorization query
-	//callback - function that executes when value of the select changes (onchange).
-	//		argument to callback are the parameters
-	//selectId - id of the DOM element where select is rendered - to check for value in callback
-	//dataDiv - div element to render potential output of the callback
-
-	//rework to enable addNew
-	let par=new Object();
-	par.masterQuery="crfEntry";
-	par.dataDiv="listDiv";
-	par.masterUserVarName="UserId";
-	par.formStatusName="FormStatus";
-	par.formStatus=1;
-	par.addDiv="selectFormDiv";
-	
-	par.config=config;
-
-	par.source=new Object();
-	par.source.queryName="StudyProperties";
-	par.source.schemaName="study";
-	par.source.vars=["eudraCTNumber","studyCoordinator","regulatoryNumber","studySponsor"];
-
-	par.vars=new Object();
-
-	//User
-	let parUser=new Object();
-	parUser.masterSelectVarName="UserId";
-	parUser.callback=function(){};
-	parUser.selectId="UserSelect";
-	parUser.inputType="select";
-	
-	//only display users in crfEditors list
-	parUser.filter=new Object();
-	parUser.filter.queryName="crfEditors";
-	parUser.filter.filterVarName="User";
-	parUser.filter.filters=new Object();
-	parUser.filter.filters["User"]=LABKEY.Security.currentUser.id;
-	par.vars["User"]=parUser;
-	
-
-
-	//Crf		
-	let parCrf=new Object();
-	parCrf.masterSelectVarName="entryId";
-	parCrf.callback=generateList;
-	parCrf.selectId="crfSelect";
-	parCrf.addSelect=true;
-	parCrf.addNewFlag=-1;
-	parCrf.inputType="select";
-	par.vars["Crf"]=parCrf;
-
-	//Site
-	let parSite=new Object();
-	parSite.masterSelectVarName="Site";
-	
-	parSite.callback=generateListAndPopulateDaughterSelect;
-	parSite.selectId="SiteSelect";
-	parSite.daughterSelect="Crf";
-	parSite.inputType="select";
-	
-	//apply additional filter to variable - specify
-	//- queryName, 
-	//- name of variable in queryName 
-	// - list of filters with name of the variable associated targeted value
-
-	parSite.filter=new Object();
-	parSite.filter.queryName="crfEditors";
-	parSite.filter.filterVarName="Site";
-	parSite.filter.filters=new Object();
-	parSite.filter.filters["User"]=LABKEY.Security.currentUser.id;
-	par.vars["Site"]=parSite;
-
-	//Form
-	par.vars["Form"]=new Object();
-	let parForm=par.vars["Form"];
-	parForm.masterSelectVarName="Form";
-	parForm.callback=function(){};
-	parForm.selectId="FormSelect";
-	parForm.selectAll=true;
-	parForm.inputType="select";
-	parForm.urlName="viewURL";
-
-	//FormStatus;
-	par.vars["FormStatus"]=new Object();
-	let parFormStatus=par.vars["FormStatus"];
-	parFormStatus.masterSelectVarName="FormStatus";
-	parFormStatus.callback=generateListAndPopulateDaughterSelect;
-	parFormStatus.selectId="FormStatusSelect";
-	parFormStatus.daughterSelect="Crf";
-	parFormStatus.inputType="select";
-
-	parFormStatus.filter=new Object();
-	parFormStatus.filter.queryName="formStatusVisibility";	
-	parFormStatus.filter.filterVarName="formStatus";
-	parFormStatus.filter.filters=new Object();
-	parFormStatus.filter.filters["visibilityLevel"]="crfEditor"; 
-
-	par.vars["eudraCTNumber"]=sourceVar("EudraCTNumber","eudraCTNumber","EudraCTNumber");
-	par.vars["studyCoordinator"]=sourceVar("StudyCoordinator","studyCoordinator","StudyCoordinator");
-	par.vars["studySponsor"]=sourceVar("StudySponsor","studySponsor","StudySponsor");
-	par.vars["regulatoryNumber"]=sourceVar("RegulatoryNumber","regulatoryNumber","RegulatoryNumber");
-
-	par.filters=["User","Site","FormStatus"];
-	//par.filters=["User","Site"];
-	drawForm(par);
-	
-}
-	
-	
-</script>

+ 0 - 8
views/crfPortal.view.xml

@@ -1,8 +0,0 @@
-<view xmlns="http://labkey.org/data/xml/view" title="CRF Portal" frame="portal">
-	<dependencies>
-		<dependency path="crf/crfPortal.js"/>
-	</dependencies>
-	<permissions>
-		<permission name="login"/>
-	</permissions>
-</view>

+ 0 - 85
views/reviewVisit0.html

@@ -1,85 +0,0 @@
-<style>
-table {margin-bottom:20px;table-layout:fixed; border-collapse:collapse; border-spacing:10px}
-table.t1 {width:400px; border:1px solid black}
-table.t1 th {border:1px solid black;padding:4px;background-color:#e0e0e0}
-table.t1 td {text-align:center}
-table.t2 {width:800px; border:1px solid black;}
-table.t2 th {border:1px solid black;padding:4px;background-color:#e0e0e0}
-table.t2 td {border:1px solid black; text-align:center}
-
-div.d1 {text-align:center; width=400px; background-color:#e0e0e0;
-        font-size:      20px; margin-bottom:20px}
-</style>
-
-<table cellspacing="2" cellpadding="5" border="0">
-<tr><td>CRF ID: </td><td><strong id="crfRefId">1583163135258</strong></td></tr>
-<tr><td>Eudra CT Number: </td><td><strong id="eudraCTNumber">Loading</strong></td></tr>
-<tr><td>Study Sponsor: </td><td><strong id="studySponsor">Loading</strong></td></tr>
-<tr><td>Study Coordinator: </td><td><strong id="studyCoordinator">Loading</strong></td></tr>
-<tr><td>Site: </td><td><strong id="siteName">Loading</strong></td></tr>
-<tr><td>Investigator: </td><td><strong id="investigatorName">Loading</strong></td></tr>
-</table>
-
-<form name="visitForm" id="visitForm">
-
-</form>
-
-<div id="submitDiv"/>
-
-
-<div id="errorDiv" style="display:none">
-<textarea id="errorTxt" cols="95" rows="10"></textarea>
-</div>
-
-<div id="debugDiv"/>
-<!--<div id="debug" style="display:block">
-<textarea cols="95" rows="10" name="formStatus" id="formStatus">
-Loading
-</textarea>
-</div>
--->
-
-
-<script type="text/javascript">
-
-window.onload = init();
-
-function init(){
-		
-	let searchParams = new URLSearchParams(window.location.search);
-	
-	//update this to pick crfRef from url
-	let crfRef=searchParams.get('entryId');
-	let formSetupQuery=searchParams.get('formSetupQuery');	
-	let registrationQueryId=searchParams.get('registrationQueryId');
-	document.getElementById("crfRefId").innerHTML=crfRef;
-
-
-	let config=new Object();
-	//will this change if we are in views?
-	config.review=true;
-	config.reviewMode=searchParams.get("reviewMode");
-	//where to get ParticipantId
-	config.registrationQueryId=registrationQueryId;
-	config.registrationParticipantIdField="participantCode";
-	config.masterForm="visitForm";
-	
-	config.document=document;
-	config.debugDiv="debugDiv";
-	config.debugId="formStatus";
-	config.crfRefId="crfRefId";
-	config.containerPath= LABKEY.ActionURL.getContainer();
-	config.setupQueryName=formSetupQuery;
-	config.submitReportId="submitReport";
-	
-	
-	clear(config);
-	print(config,"Container path"+config.containerPath);
-
-	generateMasterForm(config);
-
-
-	
-
-}
-</script>

+ 0 - 6
views/reviewVisit0.view.xml

@@ -1,6 +0,0 @@
-<view xmlns="http://labkey.org/data/xml/view" title="Review Visit #0">
-	<dependencies>
-			<dependency path="crf/crfVisit.js"/>
-	</dependencies>
-</view>
-<!-- need to restart labkey to add new files -->

+ 0 - 47
views/test.html

@@ -1,47 +0,0 @@
-<style>
-table {margin-bottom:20px;table-layout:fixed; border-collapse:collapse; border-spacing:10px}
-table.t1 {width:400px; border:1px solid black}
-table.t1 th {border:1px solid black;padding:4px;background-color:#e0e0e0}
-table.t1 td {text-align:center}
-table.t2 {width:800px; border:1px solid black;}
-table.t2 th {border:1px solid black;padding:4px;background-color:#e0e0e0}
-table.t2 td {border:1px solid black; text-align:center}
-
-div.d1 {text-align:center; width=400px; background-color:#e0e0e0;
-        font-size:      20px; margin-bottom:20px}
-</style>
-
-
-<textarea cols="90" rows="20" name="formStatus" id="formStatus">
-Loading
-</textarea>
-
-
-<script type="application/javascript">
-
-
-window.onload = init();
-
-
-function report(data){
-	myprint(this.config,"Got "+data.rows.length+" events");
-}
-
-function init(){
-    
-	let config=new Object();
-	config.document=document;
-	config.debugId='formStatus';
-	let setup=new Object();
-	setup.containerPath="TECANT/Data";
-	setup.schemaName="lists";
-	setup.queryName="alcoholConsumption";
-	setup.config=config;
-	setup.callback=report;
-	listQuery(config,setup);
-    	document.getElementById('formStatus').value+="\n Obj:"+obj;
-    
-
-}
-
-</script>

+ 0 - 5
views/test.view.xml

@@ -1,5 +0,0 @@
-<view xmlns="http://labkey.org/data/xml/view" title="Test">
-	<dependencies>
-			<dependency path="crf/test.js"/>
-	</dependencies>
-</view>

+ 0 - 79
views/visit0.html

@@ -1,79 +0,0 @@
-<style>
-table {margin-bottom:20px;table-layout:fixed; border-collapse:collapse; border-spacing:10px}
-table.t1 {width:400px; border:1px solid black}
-table.t1 th {border:1px solid black;padding:4px;background-color:#e0e0e0}
-table.t1 td {text-align:center}
-table.t2 {width:800px; border:1px solid black;}
-table.t2 th {border:1px solid black;padding:4px;background-color:#e0e0e0}
-table.t2 td {border:1px solid black; text-align:center}
-
-div.d1 {text-align:center; width=400px; background-color:#e0e0e0;
-        font-size:      20px; margin-bottom:20px}
-</style>
-
-<table cellspacing="2" cellpadding="5" border="0">
-<tr><td>CRF ID: </td><td><strong id="crfRefId">XXXXXXXXXXXXXX</strong></td></tr>
-<tr><td>Eudra CT Number: </td><td><strong id="eudraCTNumber">Loading</strong></td></tr>
-<tr><td>Study Sponsor: </td><td><strong id="studySponsor">Loading</strong></td></tr>
-<tr><td>Study Coordinator: </td><td><strong id="studyCoordinator">Loading</strong></td></tr>
-<tr><td>Site: </td><td><strong id="siteName">Loading</strong></td></tr>
-<tr><td>Investigator: </td><td><strong id="investigatorName">Loading</strong></td></tr>
-</table>
-
-<form name="visitForm" id="visitForm">
-
-</form>
-
-<div id="submitDiv"/>
- 
-
-<div id="errorDiv" style="display:none">
-<textarea id="errorTxt" cols="95" rows="10"></textarea>
-</div>
-
-<div id="debugDiv"/>
-
-<!--<div id="debug" style="display:block">
-<textarea cols="95" rows="10" name="formStatus" id="formStatus">
-Loading
-</textarea>
-</div>
--->
-
-<script type="text/javascript">
-
-window.onload = init();
-
-function init(){
-		
-	let searchParams = new URLSearchParams(window.location.search);
-	
-	//update this to pick crfRef from url
-	let crfRef=searchParams.get('entryId');
-	let formSetupQuery=searchParams.get('formSetupQuery');
-	document.getElementById("crfRefId").innerHTML=crfRef;
-
-
-	let config=new Object();
-	//will this change if we are in views?
-	config.masterForm="visitForm";
-	
-	config.document=document;
-	config.debugDiv="debugDiv";
-	config.debugId="formStatus";
-	config.crfRefId="crfRefId";
-	config.containerPath= LABKEY.ActionURL.getContainer();
-	config.setupQueryName=formSetupQuery;
-	config.submitReportId="submitReport";
-	
-	clear(config);
-	print(config,"Container path"+config.containerPath);
-
-	generateMasterForm(config);
-
-
-
-	
-
-}
-</script>

+ 0 - 6
views/visit0.view.xml

@@ -1,6 +0,0 @@
-<view xmlns="http://labkey.org/data/xml/view" title="Screening Visit">
-	<dependencies>
-			<dependency path="crf/crfVisit.js"/>
-	</dependencies>
-</view>
-<!-- need to restart labkey to add new files -->

+ 0 - 714
web/crf/crfPortal.js

@@ -1,714 +0,0 @@
-
-function print(config,msg){
-	config.document.getElementById(config.debugId).value+="\n"+msg;
-}
-
-function drawForm(par){
-    
-	populateSourceTable(par); //populateSourceTableData
-	let tableId="entryTable"; 
-	generateTable(par,"formDiv",tableId);
-	generateRow(par,tableId,"User");//generateTableRow
-	populateSelectTableEntry(par,"User");//populateTableRow , populateSelect
-
-	generateRow(par, tableId,"Site");
-	generateRow(par, tableId, "FormStatus");
-	generateRow(par, tableId,"Crf");
-
-	populateSelectTableEntry(par,"Site");
-	populateSelectTableEntry(par,"FormStatus");
-
-	let formTableId="selectFormTable";
-	generateTable(par,"selectFormDiv",formTableId);
-	generateRow(par,formTableId,"Form");
-
-	generateButtonRow(formTableId,"Add new CRF","Add", par, addNewEntry);
-
-	populateSelectTableEntry(par,"Form");
-
-	generateTable(par,"startDiv","startTable");
-	generateButtonRow("startTable","Start filling the selected form","Start", par, startForm);
-	
-	
-
-}
-
-function generateQConfig(listName){
-    let qConfig=new Object();
-    //qConfig.containerPath="TECANT/Data";
-    qConfig.schemaName="lists";
-    qConfig.queryName=listName;
-    return qConfig;
- }
- 
-
-function sourceVar(crfEntryName,elementId,sourceName){
-	let f=new Object();
-	f.masterSelectVarName=crfEntryName;
-	f.selectId=elementId;
-	f.inputType="innerHTML";
-	f.sourceSelectVarName=sourceName;
-	return f;
-}
-
-function getField(config, data, varName){
-	let debug=false;
-	if (debug) print(config, "getField");
-	let fields=data.metaData.fields;
-	for (f in fields){
-		if (debug) print(config,"Checking "+f+": name "+fields[f].name+"/"+varName);
-		if (fields[f].name!=varName) continue;
-		return fields[f];
-	}
-	return null;
-}
-
-function selectEntry(data,config, row){
-	let entry=data.rows[0];
-	let varName=row.masterSelectVarName;
-	let el=config.document.getElementById(row.selectId);
-	for (let i=0;i< el.options.length;i++){
-		print(config,"selectEntry: "+el.options[i].value+"/"+entry[varName]);
-		if (el.options[i].value!=entry[varName]) continue;
-		el.selectedIndex=i;
-		return;
-	}
-}
-
-
-function generateHead(config, headDivName,divName,title){
-	print(config,"generateHead");
-	let tb=config.document.createElement('table');
-	tb.className='t2';
-	let row=tb.insertRow();
-	let cell=config.document.createElement('th');
-	row.appendChild(cell);	
-	cell.setAttribute("colspan","4");
-	cell.style.fontSize="20px";
-	cell.style.textAlign="center";
-	let cellData=config.document.createTextNode(title);
-	cell.appendChild(cellData);
-	cell=row.insertCell();
-	cell.style.fontSize="20px";
-	let input=config.document.createElement("input");	
-	input.type="button";
-	input.value="Show";
-	input.id="toggle"+divName+"VisbilityButton";
-	input.onclick=function(){toggleVisibility(config,divName,input.id)};
-	cell.appendChild(input);
-	config.document.getElementById(headDivName).appendChild(tb);
-	print(config,"generateHead: Done");
-}
-
-function toggleVisibility(config,divName,buttonName){
-
-	let x = config.document.getElementById(divName);
-	if (x.style.display === "none") {
-    		x.style.display = "block";
-		config.document.getElementById(buttonName).value="Hide";
-
-  	} else {
-    		x.style.display = "none";
-		config.document.getElementById(buttonName).value="Show";
-
-  	}
-}
-
-function selectRowsSuccess(config,data){
-	print(config,"Select rows on "+data.queryName+" got "+data.rows.length+" rows.");
-}
-
-function selectRowsFailure(config,errorObj){
-	print(config,"selectRowsFail: "+errorObj.exception)
-}
-
-function populateSourceTable(par){
-	let debug=true;
-	if (debug){
-		print(par.config,"populateSourceTable: Starting");
-	}
-    let config=generateQConfig(par.source.queryName);
-    config.schemaName=par.source.schemaName; 
-	
-	if (!("source" in par)) return;
-	if (debug){
-		print(par.config,"populateSourceTable ["+par.source.queryName+"]");
-	}
-
-	config.success=function(data){populateSourceTableData(data,par)};
-	//config.success=function(data){selectRowsSuccess(par.config,data)};
-	
-	config.failure=function(errorObj){selectRowsFailure(par.config,errorObj)};
-	LABKEY.Query.selectRows(config);
-}
-
-function populateSourceTableData(data,par){
-	let debug=true;
-	if (debug){
-		print(par.config, "populateSourceTableData: nrow: "+data.rows.length);
-	}
-	let entry=data.rows[0];
-	for (let i=0;i < par.source.vars.length;i++){
-		let srcVarName=par.source.vars[i];
-		if (debug){
-			print(par.config, "populateSourceTable ["+srcVarName+"]");
-		}
-		let row=par.vars[srcVarName];
-		let el=par.config.document.getElementById(row.selectId);
-		if (debug){
-			print(par.config, "Element: "+el);
-		}
-		el.innerHTML=entry[row.sourceSelectVarName];
-	}
-}
-
-function generateTable(par,divName,elementId){
-	let debug=true;
-	if (debug)
-		print(par.config,"generateTable");
-	let tb=par.config.document.createElement('table');
-	tb.className="t2";
-	tb.id=elementId;
-	par.config.document.getElementById(divName).appendChild(tb);
-	if (debug)
-		print(par.config,"generateTable: Done");
-}
-
-
-function generateRow(par, tableId, rowId){
-	let debug=true;
-	if (debug)
-		print(par.config,"generateRow: Start");
-	let config=generateQConfig(par.masterQuery);
-	config.success=function(data){generateTableRow(data, par, tableId, rowId)};
-	LABKEY.Query.selectRows(config);
-	if (debug)
-		print(par.config,"generateRow: End");
-	return;
-
-}
-
-function generateTableRow(data, par, tableId, rowId){
-	let debug=true;
-	if (debug)
-		print(par.config,"generateTableRow: start");
-	let tb=par.config.document.getElementById(tableId);
-	let row=par.vars[rowId];
-	if (debug)
-		print(par.config,"getField for "+row.masterSelectVarName);
-	
-	let field=getField(par.config,data,row.masterSelectVarName);
-	let trow=tb.insertRow();
-	let cell=par.config.document.createElement('th');
-	trow.appendChild(cell);
-	let text = par.config.document.createTextNode(field.shortCaption);
-	cell.appendChild(text);
-	cell=trow.insertCell();
-	let input = par.config.document.createElement("select");
-	input.id = row.selectId;
-	input.onchange=function(){row.callback(par,rowId)};
-	cell.appendChild(input); 
-	if (debug)
-		print(par.config,"generateTableRow: end");
-	
-}
-
-function populateSelectTableEntry(par,rowId){
-
-	let debug=true;	
-	let row=par.vars[rowId];
-	if (debug)
-		print(par.config,"populateSelectTableEntry:"+par.masterQuery+"/"+row.masterSelectVarName);
-		
-	
-
-	let config=generateQConfig(par.masterQuery);
-    
-    if ("filter" in row){
-		//populateSelect on authorizationQuery with authSelectVarName
-		let filter=row.filter;
-		if (debug){
-			print(par.config,"Filter:"+filter.queryName);
-			print(par.config,"FilterVar "+filter.filterVarName);
-		}
-		config.queryName=filter.queryName;
-		config.filterArray=[];
-		for (f in filter.filters){
-			if (debug) print(par.config,"Adding filter: "+f+" val "+filter.filters[f]);
-			config.filterArray.push(LABKEY.Filter.create(f,filter.filters[f]));
-		}
-	}
-	else{
-		config.queryName=par.masterQuery;
-	}
-	
-	config.success=function(data){populateTableRow(data,par,rowId)};
-	LABKEY.Query.selectRows(config);
-	if (debug)
-		print(par.config,"generateSelect: End");
-	return;
-	
-}
-
-function populateTableRow(data,par,rowId){
-	//data is output of selectRows on either 
-	//	* masterQuery looking at masterSelectVarName or 
-	//	* authQuery looking at authSelectVarName
-
-	//in both cases, query[varName] is a lookup variable, so do populateSelect with lookupData,queryData and par
-	let debug=true;
-	let row=par.vars[rowId];
-	let varName=row.masterSelectVarName;
-	if ("filter" in row){
-		if (row.filter.queryName==data.queryName){
-			varName=row.filter.filterVarName;
-		}
-	}
-
-	if (debug)
-		print(par.config,"generateSelectVar: "+data.queryName+"/"+varName+" size "+data.rows.length);
-
-	let field=getField(par.config,data,varName);
-	
-	if (!field) {
-		print(par.config,"Field "+varName+" not found");
-		return;
-	}
-	if (debug)
-		print(par.config,"Using field "+field.name);
-	
-
-	if (!("lookup" in field)){
-		let entry=data.rows[0];
-		print(par.config,"Field "+varName+" not a lookup");
-		//populateSelectNotLookup(data,par,rowId, entry);	
-		return;
-	}
-	
-	let config=generateQConfig(field.lookup.queryName);
-	config.schemaName=field.lookup.schemaName;
-	config.success=function(lookupData){populateSelect(lookupData,data,par,rowId)};
-	//config.success=function(data){selectRowsSuccess(par.config,data)};
-	config.failure=function(errorObj){selectRowsFailure(par.config,errorObj)};
-	LABKEY.Query.selectRows(config);	
-	
-	if (debug)
-		print(par.config,"generateSelectVar: End");
-	
-}	
-
-function populateSelect(data,selectedData, par, rowId){
-	//data is the set of lookup entries, selectedData is a subset of entries valued at lookup.keyColumn 
-	let debug=true;
-	if (debug){
-		let msg="populateSelect Data: "+data.queryName;
-		msg+=" selectedData:"+selectedData.queryName;
-		print(par.config,msg);
-	}
-	let row=par.vars[rowId];
-	let selectId=row.selectId; 
-	
-	let varName=row.masterSelectVarName;
-	if ("filter" in row){
-		varName=row.filter.filterVarName;
-	}
-	let field=getField(par.config,selectedData,varName);
-
-	let displayColumn=field.lookup.displayColumn;
-	let keyColumn=field.lookup.keyColumn;
-
-	if (debug){
-		print(par.config,"Query: "+data.queryName);
-		print(par.config,"ElementId: "+selectId);
-		print(par.config,"keyColumn: "+keyColumn);
-		print(par.config,"displayColumn: "+displayColumn);
-	
-	}
-	let el = par.config.document.getElementById(selectId);
-	
-	if (debug)
-		print(par.config,"Element: "+el);
-   	
-	for(i = el.options.length; i >= 0; i--) {
-		el.remove(i);
-   	}
-	if ("addSelect" in row){
-		let opt = par.config.document.createElement("option");
-		opt.text = "<Select>";
-		opt.value = -1;
-		el.options[0] = opt;
-	}
-
-	if ("addNewFlag" in row){
-		let opt = par.config.document.createElement("option");
-		opt.text = "Add New" 
-		opt.value = row.addNewFlag;
-		el.options[el.options.length] = opt;
-	}
-
-	for (var i = 0; i < data.rows.length; i++) {
-		let key=data.rows[i][keyColumn];
-		let skip=true;
-		if (row.selectAll){
-			skip=false;
-		}
-		else{
-			if (debug)
-				print(par.config,"Selecting from: "+selectedData.rows.length);
-			for (let j=0; j< selectedData.rows.length; j++){
-				let entry=selectedData.rows[j];
-				if (debug)
-					print(par.config,"Comparing: "+entry[varName]+"/"+key);
-				if (key!=entry[varName]) continue;
-				skip=false;
-				break;
-			}
-		}
-		if (skip) continue;
-		let opt = par.config.document.createElement("option");
-		opt.text = data.rows[i][displayColumn];
-		opt.value = data.rows[i][keyColumn];
-		if (debug)
-			print(par.config,"Adding: "+opt.value+" : "+opt.text);
-	
-		el.options[el.options.length] = opt;
-	
-
-		if ("selectedKey" in row){ 
-			if (debug)
-				print(par.config,"Comparing: " + opt.value  + "/" + row["selectedKey"]);
-		
-        		if (opt.value==row["selectedKey"]){
-				el.selectedIndex=el.options.length-1;
-				if (debug)
-					print(par.config,"Equal; "+el.selectedIndex);
-			}
-		}
-	}
-	if (debug)
-		print(par.config,"Running callback");
-
-	row.callback(par,rowId);
-}	
-
-function generateListAndPopulateDaughterSelect(par,rowId){
-	let debug=true;
-
-	if (debug){
-		print(par.config,"generateListAndPopulateDaughter");
-	
-	}
-	
-	generateList(par,rowId);
-	let row=par.vars[rowId];
-	if ("daughterSelect" in row){
-		populateDaughterSelect(par,rowId,row["daughterSelect"],null);
-	}
-}
-
-function populateDaughterSelect(par,rowId,daughterRowId,entry){//populateSelectNotLookup
-	let debug=true;	
-	if (debug)
-		print(par.config,"populateDaughterSelect: "+rowId+" "+daughterRowId);
-
-	let row=par.vars[rowId];
-	if (debug)
-		print(par.config,"row["+rowId+"]:"+row);
-
-	let daughterRow=par.vars[daughterRowId];
-
-	if (debug)
-		print(par.config,"daughterRow["+daughterRowId+"]:"+daughterRow);
-
-	let el=par.config.document.getElementById(row.selectId);
-	if (debug)
-		print(par.config,"\n Element:"+el);
-	let varValue=el.options[el.selectedIndex].value;
-
-	if (debug)
-		print(par.config,"\nAdding filter ["+row.masterSelectVarName+"]:"+varValue);
-
-	let config=generateQConfig(par.masterQuery)
-	config.filterArray=[];
-	for (let i=0;i < par.filters.length;i++){
-		let filterRowId=par.filters[i];
-		let filterRow=par.vars[filterRowId];
-		let filterValue=par.config.document.getElementById(filterRow.selectId).value;
-		config.filterArray.push(LABKEY.Filter.create(filterRow.masterSelectVarName,filterValue));
-	}
-	config.success=function(data){populateSelectNotLookup(data,par,daughterRowId,entry)}; 
-	LABKEY.Query.selectRows(config);
-
-}
-
-function populateSelectNotLookup(data,par,rowId, entry){
-	//selectId
-	//masterSelectVarName
-
-	let debug=true;
-
-	if (debug)
-		print(par.config,"populateSelectNonLookup on "+data.queryName);
-	
-	let row=par.vars[rowId];
-	let varName=row.masterSelectVarName;
-	if (debug)	print(par.config,"var "+varName+" rows "+data.rows.length);
-
-	if (debug) print(par.config,"Getting element "+row.selectId);
-
-	let el=par.config.document.getElementById(row.selectId);
-
-	if (!el) {
-		print(par.config,"Element not found");
-		return;
-	}
-
-	if (debug) print(par.config,"Element "+el);
-	if (debug) print(par.config,"Clearing entries");
-
-	//remove previous options
-	for(i = el.options.length; i >= 0; i--) { 
-		el.remove(i);
-   	}
-	
-	if (debug)
-		print(par.config,"Adding entries");
-
-	if ("addSelect" in row){
-		if (debug)
-			print(par.config,"adding <Select>");
-
-		let opt = par.config.document.createElement("option"); 
-		opt.text = "<Select>";
-		opt.value = -2;
-		el.options[0] = opt;
-	}
-
-	if ("addNewFlag" in row){
-		if (debug) print(par.config,"adding Add new");
-		let opt = par.config.document.createElement("option");
-		opt.text = "Add New";
-		opt.value = row.addNewFlag;
-		el.options[el.options.length] = opt;
-	}
-
-	for (let i=0;i< data.rows.length;i++){
-		let valEntry=data.rows[i];
-		if (debug)
-			print(par.config,"adding "+valEntry[varName]);
-		let opt = par.config.document.createElement("option"); 
-		opt.text = valEntry[varName];
-		opt.value = valEntry[varName];
-		if (entry){
-			if (opt.value==entry[varName])
-			el.selectedIndex=el.options.length-1;
-		}
-		el.options[el.options.length] = opt;
-	}
-	if (entry) 
-		row.callback(par,rowId);
-}
-
-
-function generateList(par,rowId){
-	let row=par.vars[rowId];
-	let debug=true;
-	if (debug)
-		print(par.config,"generateList: "+par.masterQuery);
-	
-		//ignore authorization, just select on select variable
-	let el=par.config.document.getElementById(row.selectId);
-	let varValue=el.options[el.selectedIndex].value;
-	if (debug)
-		print(par.config,"Using value "+varValue+" from "+row.selectId);
-	
-	let iValue=parseInt(varValue); 
-
-	let div=par.config.document.getElementById(par.addDiv);
-	div.style.display="none";
-	//add new crf entry
-	if ("addNewFlag" in row){
-		if (debug)
-			print(par.config,"Comparing " + iValue + "/" + row.addNewFlag);
-
-		if (iValue==row.addNewFlag) {
-			addNew(par);
-			return;
-		}
-	}
-	
-
-
-	//do filtering
-	let filterArray=[];
-	for (let i=0;i < par.filters.length;i++){
-		let filterRowId=par.filters[i];
-		let filterRow=par.vars[filterRowId];
-		let filterValue=par.config.document.getElementById(filterRow.selectId).value;
-		filterArray.push(LABKEY.Filter.create(filterRow.masterSelectVarName,filterValue));
-	}
-	
-
-	//show all for system entries (Select, Add New)
-	if (debug)
-		print(par.config,"Using iValue "+iValue);
-	if (iValue<0) {
-		if (debug)
-			print(par.config,"Ignoring ["+row.masterSelectVarName+ "]: "+varValue);
-	}
-	else{
-		if (debug)
-			print(par.config,"Filtering ["+row.masterSelectVarName+"]: "+varValue);
-
-		if (rowId==="Crf"){
-			filterArray.push(LABKEY.Filter.create(row.masterSelectVarName,varValue));
-			if (debug)
-				print(par.config,"Filtering ["+row.masterSelectVarName+"]: "+varValue);
-
-		}
-		
-	}
-
-	var config=generateQConfig(par.masterQuery);
-	config.renderTo=par.dataDiv;
-	config.buttonBarPosition='top';
-	config.filters=filterArray;
-	config.viewName="sparseView";
-	config.success=function(data){updateSuccess(data,par)};
-	config.failure=function(json){updateFailure(json,par)};
-
-	LABKEY.QueryWebPart(config);
-	
-}
-
-function updateSuccess(data,par){
-	print(par.config,"Update success");
-}
-
-function updateFailure(json,par){
-	print(par.config,"Update failed");
-
-}
-
-function addNew(par){
-	print(par.config,"Show Add new");
-	let div=par.config.document.getElementById(par.addDiv);
-	div.style.display="block";
-}
-
-
-
-function generateButtonRow(tableId,caption,label,par,callback){
-	let tb=par.config.document.getElementById(tableId);
-	let trow=tb.insertRow();
-	let cell=par.config.document.createElement('th');
-	trow.appendChild(cell);
-	let text = par.config.document.createTextNode(caption);
-	cell.appendChild(text);
-	cell=trow.insertCell();
-	let input = par.config.document.createElement("input");
-	input.type="button";
-	input.value=label;
-	input.onclick=function(){callback(par)};
-	cell.appendChild(input); 
-}
-
-//callback candidate
-function addNewEntry(par){
-	print(par.config,"Add new, npar ");
-	let entry=new Object();
-
-	for (vv in par.vars){
-		let f=par.vars[vv];
-		print(par.config,"New: Adding "+f.masterSelectVarName);
-		setValue(par.config,entry,f);
-	}
-	for (f in entry){
-		print(par.config,"entry ["+f+"]="+entry[f]);
-	}
-	entry.entryId=Date.now();
-	entry.Date=new Date();
-	entry.formStatus=1;//In Progress
-	let config=generateQConfig(par.masterQuery);
-	config.rows=[entry];
-	config.success=function(data){
-		populateDaughterSelect(par,"Site","Crf",data.rows[0]);
-		selectEntry(par.config,data,par.vars["Crf"]);
-		generateList(par,"Crf");};
-	LABKEY.Query.insertRows(config);
-}
-
-function setValue(config,entry,f){
-	let el=config.document.getElementById(f.selectId);
-	print(config,"setValue: Element: "+el);
-	if (f.inputType=="select"){
-		entry[f.masterSelectVarName]=el.value;
-	}
-	if (f.inputType=="innerHTML"){
-		entry[f.masterSelectVarName]=el.innerHTML;
-	}
-}
-
-
-
-
-//another callback for generateButtonRow
-function startForm(par){
-	let debug=true;
-	if (debug)
-		print(par.config,"startForm");
-	let crfVar=par.vars["Crf"];
-	let el=par.config.document.getElementById(crfVar.selectId);
-	let config=generateQConfig(par.masterQuery);
-	config.filterArray=[LABKEY.Filter.create(crfVar.masterSelectVarName,el.value)]
-    config.success=function(data){findURL(data,par)};
-	LABKEY.Query.selectRows(config);
-	// The set of URL par.
-}
-
-function findURL(data,par){
-	let debug=true;
-	if (debug)
-		print(par.config,"findURL");
-	let entry=data.rows[0];
-	
-	let fields=data.metaData.fields;
-	let formVar=par.vars["Form"];
-	let formVarName=formVar.masterSelectVarName;
-	let lookup;
-	for (f in fields){
-		if (fields[f].name!=formVarName) continue;
-		lookup=fields[f].lookup;
-		break;
-	}
-	let config=generateQConfig(lookup.queryName);
-	config.schemaName=lookup.schemaName;
-	config.filterArray=[LABKEY.Filter.create(lookup.keyColumn,entry[formVarName])];
-	config.success=function(data){finalRedirect(data,entry,par)};
-	LABKEY.Query.selectRows(config);
-}
-
-function finalRedirect(data,entry,par){
-	let debug=true;
-	if (debug)
-		print(par.config,"final redirect");
-	let formEntry=data.rows[0];
-	let formVar=par.vars["Form"];
-	let formUrl=formEntry[formVar.urlName];
-	var params = {
-		"name": formUrl, // The destination wiki page. The name of this parameter is not arbitrary.
-		"userid": entry[par.vars["User"].masterSelectVarName], 
-		"entryId": entry[par.vars["Crf"].masterSelectVarName],
-		"formSetupQuery":formEntry["setupQuery"],
-		"registrationQueryId":formEntry["masterQuery"]
-	};
-
-	let containerPath= LABKEY.ActionURL.getContainer();
-	//"TECANT";//part of data?
-        // This changes the page after building the URL. 
-	//Note that the wiki page destination name is set in params.
-        var wikiURL = LABKEY.ActionURL.buildURL("crf", formUrl , containerPath, params);
-        print(par.config,"Redirecting to "+wikiURL);
-		 
-	window.location = wikiURL;
-}

+ 3 - 1
web/crf/crfVisit.js

@@ -1468,7 +1468,9 @@ function generateMasterForm(config){
 	configSelectRows.schemaName='lists';
 	configSelectRows.queryName=config.setupQueryName;
 	//this is new
-	configSelectRows.formName=config.formName;
+	configSelectRows.queryName="FormSetup";
+	configSelectRows.filterArray=[LABKEY.Filter.create("formName",config.formId)];
+
 	configSelectRows.success=function(data){generateForm(config,data);};
 	configSelectRows.failure=onFailure;//function(errorTxt){print(config,"generateForm fail" + errorTxt)};
 	LABKEY.Query.selectRows(configSelectRows);

+ 7 - 1
web/crf/formPortal.js

@@ -369,6 +369,7 @@ function openForm(config,formConfig,crfRef, crfEntry){
 	if (crfEntry==undefined) return;
 
 	let formEntry=undefined;
+
 	let formId=crfEntry.Form;
 	for (let i=0;i<formConfig.dataForms.rows.length;i++){
 		if (formConfig.dataForms.rows[i].Key!=formId) continue;
@@ -383,6 +384,9 @@ function openForm(config,formConfig,crfRef, crfEntry){
 	if ("reviewMode" in config) formUrl=formEntry["reviewFormUrl"];
 	print(config,"Setting url "+formUrl);
 
+	//direct all to the same html
+	formUrl="visit";
+
 	reviewMode="EDIT";
 	if ("reviewMode" in config) reviewMode=config.reviewMode;
 	let params = {
@@ -392,7 +396,9 @@ function openForm(config,formConfig,crfRef, crfEntry){
 		"entryId": crfRef,
 		"formSetupQuery":formEntry["setupQuery"],
 		"registrationQueryId":formEntry["masterQuery"],
-		"reviewMode":reviewMode
+		"reviewMode":reviewMode,
+		"formId":formId,
+		"formName":formEntry["formName"]
 	};
 
 	let containerPath= LABKEY.ActionURL.getContainer();

+ 0 - 224
web/crf/generateTable.js

@@ -1,224 +0,0 @@
-function generateTable(listName,divName,unique){
-	//add temp variables
-	LABKEY.Query.selectRows({schemaName: 'lists',queryName: listName, requiredVersion:"8.3", 
-		parameters:{"divName":divName}, success:function(data){populateTable(data,divName,unique)} });
-}
-
-function populateTable(data,divName,unique){
-	//generate and populate table with the first suitable entry
-	document.getElementById('formStatus').value+="\n Query: "+data.queryName;
-	document.getElementById('formStatus').value+="\n divName: "+divName;
-
-	//document.getElementById('formStatus').value+="\n Div: "+resp.params["query.param.divName"];
-
-	var obj=data.metaData.fields;
-	for (f in obj){	
-		document.getElementById('formStatus').value+="\n Data["+f+"]: "+obj[f];
-		for (g in obj[f]){
-			document.getElementById('formStatus').value+="\n Data.metaData.fields["+f+"]["+g+"]: "+obj[f][g];
-		}
-		if ("lookup" in obj[f]){
-			for (h in obj[f]["lookup"]){
-				document.getElementById('formStatus').value+="\n Lookup["+h+"]: "+obj[f]["lookup"][h];
-	
-			}
-		}
-
-	}
-	var crfRef=document.getElementById("crfRefId").innerHTML;
-	var entry=new Object();
-
-	for (i=0;i<data.rows.length;i++){
-		var entry=data.rows[i];
-		if (entry.crfRef!=crfRef) {
-			document.getElementById('formStatus').value+="\n Crfref mismatch: "+crfRef+"/"+entry[crfRef];
-			continue;
-		}	
-		break;
-	}
-	
-
-	var tb=document.createElement('table');
-	tb.className="t2";
-	document.getElementById(divName).appendChild(tb);
-
-	var fields=data.metaData.fields;
-	for (f in fields){
-		if (fields[f].hidden) continue;
-		
-		var vName=fields[f].name;
-
-		if (vName=="crfRef") continue;
-
-		var vType=fields[f].type;
-
-		let row=tb.insertRow();
-		let cell=row.insertCell();
-		let text = document.createTextNode(fields[f].shortCaption);
-		cell.appendChild(text);
-		cell=row.insertCell();
-		var cellClass="input";
-		var cellType="text";
-		if ("lookup" in fields[f]){
-			cellClass="select";
-		}
-		if (vType=="string"){
-			;
-		}
-		if (vType=="date"){
-			cellType="date";
-		}
-		
-		var input = document.createElement(cellClass);
-		input.type = cellType;
-		input.id = vName;
-
-		if (vType=="string" ){
-			if (vName in entry) { input.value=entry[vName];}
-		}
-
-		if (vType=="date"){
-			if (vName in entry) {input.valueAsDate=new Date(entry[vName]);}
-		}
-
-		if ("lookup" in fields[f]){
-			var lookup=fields[f]["lookup"];
-			var config=new Object();
-			document.getElementById('formStatus').value+="\n Query: "+lookup.queryName;
-			config.schemaName=lookup.schemaName;
-			config.queryName=lookup.queryName;
-			var parameters={"elementId":input.id,"keyColumn":lookup.keyColumn,"displayColumn":lookup.displayColumn};
-			if (vName in entry) parameters.selectedKey=entry[vName];
-			config.success=function(data){populateSelect(data,parameters)};
-			LABKEY.Query.selectRows(config);
-		}
-		cell.appendChild(input); 
-	}
-	var row=tb.insertRow();
-	let cell=row.insertCell();
-	cell.setAttribute("colspan","2");
-	var input=document.createElement("input");	
-	input.type="button";
-	input.value="Add";
-	input.onclick=function(){saveData(data.queryName,unique)};
-	cell.appendChild(input);
-		
-}	
-
-function populateSelect(data,parameters){
-	document.getElementById('formStatus').value+="\n Data: "+data;
-	var elementId=parameters.elementId;
-	var keyColumn=parameters.keyColumn;
-	var displayColumn=parameters.displayColumn;
-	document.getElementById('formStatus').value+="\n ElementId: "+elementId;
-	document.getElementById('formStatus').value+="\n keyColumn: "+keyColumn;
-	document.getElementById('formStatus').value+="\n displayColumn: "+displayColumn;
-	
-	if ("selectedKey" in parameters){
-		document.getElementById('formStatus').value+="\n SelectedKey: "+parameters["selectedKey"];
-	}
-
-	var el = document.getElementById(elementId);
-	document.getElementById('formStatus').value+="\n Element: "+el;
-   	for(i = el.options.length; i >= 0; i--) {
-		el.remove(i);
-   	}
-	var opt = document.createElement("option");
-	opt.text = "<Select>";
-	opt.value = -1;
-	el.options[0] = opt;
-
-	for (var i = 0; i < data.rows.length; i++) {
-		var opt = document.createElement("option");
-		opt.text = data.rows[i][displayColumn];
-		opt.value = data.rows[i][keyColumn];
-		document.getElementById('formStatus').value+="\n Adding: "+opt.value+" : "+opt.text;
-	
-		el.options[el.options.length] = opt;
-		if ("selectedKey" in parameters){
-			document.getElementById('formStatus').value+="\n Comparing: " + opt.value  + "/" + 
-				parameters["selectedKey"];
-			
-           		if (opt.value==parameters["selectedKey"]){
-				el.selectedIndex=el.options.length-1;
-				document.getElementById('formStatus').value+="\n Equal; "+el.selectedIndex;
-			}
-	   	}
-	}
-
-}	
-
-function failureSelect(errorInfo,resp,opt){
-	document.getElementById('formStatus').value+="\n Error: ";
-
-}
-
-function saveData(queryName,unique){
-	document.getElementById('formStatus').value+="\n saveData: ";
-	var config=new Object();
-	config.schemaName='lists';//could be made more generic
-	config.queryName=queryName;
-	var crfRef=document.getElementById("crfRefId").innerHTML;
-	config.filterArray=[ LABKEY.Filter.create('crfRef',crfRef)];
-	config.success=function(data){saveDataToList(data,unique)};
-	LABKEY.Query.selectRows(config);
-}
-
-function saveDataToList(data,unique){
-	document.getElementById('formStatus').value+="\n saveDataToList: ";
-	var update=false;
-	if (unique && data.rows.length>0){
-		var entry=data.rows[0]
-		update=true;
-	}
-	else{
-		var entry=new Object();
-		entry.crfRef=document.getElementById("crfRefId").innerHTML;
-	}
-	
-	var config=new Object();
-	config.schemaName=data.schemaName;//could be made more generic
-	config.queryName=data.queryName;
-	//entry.crfRef=document.getElementById("crfRefId").innerHTML;
-	
-	var fields=data.metaData.fields;
-	for (f in fields){
-		if (fields[f].hidden) continue;
-		
-		var vName=fields[f].name;
-
-		if (vName=="crfRef") continue;
-
-		var el=document.getElementById(vName);
-
-		if (!el) continue;
-	
-		var vType=fields[f].type;
-
-		if ("lookup" in fields[f]){
-			entry[vName]=el.options[el.selectedIndex].value;
-			continue;
-		}
-		if (vType=="date"){
-			var date=el.valueAsDate;
-			if (date==="null") continue;
-			date.setUTCHours(12);
-			entry[vName]=date.toString();
-		}	
-		if (vType=="string"){
-			entry[vName]=el.value;
-		}	
-	}
-	config.rows=[entry];
-
-	if (update) 
-		LABKEY.Query.updateRows(config);
-	else 
-		LABKEY.Query.insertRows(config); 
-}
-
-
-const _generateTable = generateTable;
-export { _generateTable as generateTable };
-const _saveData = saveData;
-export { _saveData as saveData };

+ 0 - 28
web/crf/test.js

@@ -1,28 +0,0 @@
-var obj=new Object();
-obj.message='Andrej';
-
-function myprint(config,msg){
-   config.document.getElementById(config.debugId).value+="\n"+msg;
-}
-
-function generateQConfig(setup){
-   let qConfig=new Object();
-   qConfig.containerPath=setup.containerPath;
-   qConfig.schemaName=setup.schemaName;
-   qConfig.queryName=setup.queryName;
-   return qConfig;
-}
-
-
-function listQuery(config,setup){
-   let debug=true;
-   if (debug)
-   	myprint(config,"listQuery");
-   let qConfig=generateQConfig(setup);
-   qConfig.success=function(data){setup.callback(data)};
-   qConfig.failure=function(errorInfo){
-	myprint(config,"selectRows error: "+errorInfo.exception);
-   };
-   myprint(config,"selectRows");
-   LABKEY.Query.selectRows(qConfig);
-}