crfPortal.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. function print(config,msg){
  2. config.document.getElementById(config.debugId).value+="\n"+msg;
  3. }
  4. function drawForm(par){
  5. populateSourceTable(par);
  6. }
  7. function generateQConfig(listName){
  8. let qConfig=new Object();
  9. qConfig.containerPath="TECANT/Data";
  10. qConfig.schemaName="lists";
  11. qConfig.queryName=listName;
  12. return qConfig;
  13. }
  14. function sourceVar(crfEntryName,elementId,sourceName){
  15. let f=new Object();
  16. f.masterSelectVarName=crfEntryName;
  17. f.selectId=elementId;
  18. f.inputType="innerHTML";
  19. f.sourceSelectVarName=sourceName;
  20. return f;
  21. }
  22. function generateHead(config, headDivName,divName,title){
  23. print(config,"generateHead");
  24. let tb=config.document.createElement('table');
  25. tb.className='t2';
  26. let row=tb.insertRow();
  27. let cell=config.document.createElement('th');
  28. row.appendChild(cell);
  29. cell.setAttribute("colspan","4");
  30. cell.style.fontSize="20px";
  31. cell.style.textAlign="center";
  32. let cellData=config.document.createTextNode(title);
  33. cell.appendChild(cellData);
  34. cell=row.insertCell();
  35. cell.style.fontSize="20px";
  36. let input=config.document.createElement("input");
  37. input.type="button";
  38. input.value="Show";
  39. input.id="toggle"+divName+"VisbilityButton";
  40. input.onclick=function(){toggleVisibility(config,divName,input.id)};
  41. cell.appendChild(input);
  42. config.document.getElementById(headDivName).appendChild(tb);
  43. print(config,"generateHead: Done");
  44. }
  45. function toggleVisibility(config,divName,buttonName){
  46. let x = config.document.getElementById(divName);
  47. if (x.style.display === "none") {
  48. x.style.display = "block";
  49. config.document.getElementById(buttonName).value="Hide";
  50. } else {
  51. x.style.display = "none";
  52. config.document.getElementById(buttonName).value="Show";
  53. }
  54. }
  55. function selectRowsSuccess(config,data){
  56. print(config,"Select rows on "+data.queryName+" got "+data.rows.length+" rows.");
  57. }
  58. function populateSourceTable(par){
  59. let debug=true;
  60. if (debug){
  61. print(par.config,"populateSourceTable: Starting");
  62. }
  63. let config=generateQConfig(par.source.queryName);
  64. config.schemaName=par.source.schemaName;
  65. if (!("source" in par)) return;
  66. if (debug){
  67. print(par.config,"populateSourceTable ["+par.source.queryName+"]");
  68. }
  69. config.success=function(data){populateSourceTableData(data,par)};
  70. //config.success=function(data){selectRowsSuccess(par.config,data)};
  71. config.failure=function(errorTxt){print(par.config,"populateSourceData:fail"+errorTxt.exception)};
  72. LABKEY.Query.selectRows(config);
  73. }
  74. function populateSourceTableData(data,par){
  75. let debug=true;
  76. if (debug){
  77. print(par.config, "populateSourceTableData: nrow: "+data.rows.length);
  78. }
  79. let entry=data.rows[0];
  80. for (let i=0;i < par.source.vars.length;i++){
  81. let srcVarName=par.source.vars[i];
  82. if (debug){
  83. print(par.config, "populateSourceTable ["+srcVarName+"]");
  84. }
  85. let row=par.vars[srcVarName];
  86. let el=par.config.document.getElementById(row.selectId);
  87. if (debug){
  88. print(par.config, "Element: "+el);
  89. }
  90. el.innerHTML=entry[row.sourceSelectVarName];
  91. }
  92. }
  93. function generateListAndPopulateDaughterSelect(parameters,rowId){;}
  94. function generateList(parameters,rowId){;}