9786016a1473b5a4f97283db2cf34a092e0085c1
chmalee
  Wed Mar 18 09:25:39 2020 -0700
Add udcTimout and measureTiming to validate form to save the checkbox selections for after checking the hub, pointed out by Dan, refs #24559

diff --git src/hg/hgHubConnect/hgHubConnect.c src/hg/hgHubConnect/hgHubConnect.c
index f52d4d6..18874e3 100644
--- src/hg/hgHubConnect/hgHubConnect.c
+++ src/hg/hgHubConnect/hgHubConnect.c
@@ -426,75 +426,83 @@
         "type=\"text\" size=\"65\"> \n");
     }
 printf("<input name=\"hubValidateButton\" id='hubValidateButton' "
     "class=\"hubField\" type=\"button\" value=\"Check Hub settings\">\n");
 printf(" or \n");
 printf("<input name=\"hubLoadMaybeTiming\" id='hubLoadMaybeTiming' "
     "class=\"hubField\" type=\"button\" value=\"Load Hub\">\n");
 printf("</div>\n"); // validateHubUrlRow div
 
 printf("<div id=\"extraSettingsContainer\" class=\"addHubBar\">\n");
 printf("<img id=\"advancedSettingsButton\" src=\"../images/add_sm.gif\">\n");
 printf("Advanced Settings");
 
 char *measureTiming = cartCgiUsualString(cart, "measureTiming", NULL);
 char *udcTimeout = cartCgiUsualString(cart, "udcTimeout", NULL);
+boolean doMeasureTiming = isNotEmpty(measureTiming);
+boolean doUdcTimeout = isNotEmpty(udcTimeout);
 
 printf("<div id=\"extraSettingsList\" style=\"display: none\">\n");
 printf("<ul style=\"list-style-type:none\">\n<li>\n");
 // measureTiming first
 printf("<input name=\"addMeasureTiming\" id=\"addMeasureTiming\" "
-    "class=\"hubField\" type=\"checkbox\" %s>", measureTiming != NULL ? "checked": "");
+    "class=\"hubField\" type=\"checkbox\" %s>", doMeasureTiming ? "checked": "");
 printf("<label for=\"addMeasureTiming\">Display load times</label>\n");
 
 // and a tooltip explaining this checkbox
 printf("<div class=\"tooltip\"> (?)\n");
 printf("<span class=\"tooltiptext\">"
     "Checking this box shows the timing measurements below the Genome Browser image. "
     "Useful for determining slowdowns to loading or drawing tracks."
     "</span>\n");
 printf("</div></li>\n"); // tooltip div
 
 printf("<li>\n");
 // udcTimeout enable/disable
 printf("<input name=\"disableUdcTimeout\" id=\"disableUdcTimeout\" "
-    "class=\"hubField\" type=\"checkbox\" %s >", udcTimeout != NULL ? "checked" : "");
+    "class=\"hubField\" type=\"checkbox\" %s >", doUdcTimeout ? "checked" : "");
 printf("<label for=\"disableUdcTimeout\">Enable hub refresh</label>\n");
 // add a tooltip explaining these checkboxes
 printf("<div class=\"tooltip\"> (?)\n");
 printf("<span class=\"tooltiptext\">"
     "Checking this box changes the cache expiration time (default of 5 minutes) "
     "and allows the Genome Browser to reload Hub configuration and data files with each refresh."
     "</span>\n");
 printf("</div></li>\n"); // tooltip div
 printf("</ul>\n");
 printf("</div>\n"); // extraSettingsList div
 printf("</div>\n"); // extraSettingsContainer div
 
 if (hubUrl != NULL && doHubValidate)
     doValidateNewHub(hubUrl);
 else
     printf("<div id=\"hubDeveloperInstructions\">Enter URL to hub to check configuration settings "
         "or load hub </div> \n");
 printf("</div>"); // hubDeveloper div
 
 jsOnEventById("click", "hubValidateButton",
     "var validateText = document.getElementById('validateHubUrl');"
+    "var udcTimeout = document.getElementById('disableUdcTimeout').checked === true;"
+    "var doMeasureTiming = document.getElementById('addMeasureTiming').checked === true;"
     "validateText.value=$.trim(validateText.value);"
     "if(validateUrl($('#validateHubUrl').val())) { "
     " document.validateHubForm.elements['validateHubUrl'].value=validateText.value;"
     " document.validateHubForm.elements['" hgHubDoHubCheck "'].value='on';"
+    " if (doMeasureTiming) { document.validateHubForm.elements['measureTiming'].value='1'; }"
+    " else { document.validateHubForm.elements['measureTiming'].value=''}"
+    " if (udcTimeout) { document.validateHubForm.elements['udcTimeout'].value='1'; }"
+    " else { document.validateHubForm.elements['udcTimeout'].value=''}"
     " document.validateHubForm.submit(); return true; }"
     "else { return false; }"
     );
 jsOnEventById("click", "hubLoadMaybeTiming",
     "var validateText = document.getElementById('validateHubUrl');"
     "var udcTimeout = document.getElementById('disableUdcTimeout').checked === true;"
     "var doMeasureTiming = document.getElementById('addMeasureTiming').checked === true;"
     "validateText.value=$.trim(validateText.value);"
     "if(validateUrl($('#validateHubUrl').val())) {"
     "   loc = \"../cgi-bin/hgTracks?&hgHub_do_firstDb=on\" + \"&hubUrl=\" + validateText.value;"
     "   if (doMeasureTiming) { loc += \"&measureTiming=1\";} else { loc += \"&measureTiming=[]\"; }"
     "   if (udcTimeout) { loc += \"&udcTimeout=5\"; } else { loc += \"&udcTimeout=[]\"; }"
     "   window.location.href=loc; "
     "} else { return false; }"
     );
@@ -1752,30 +1760,32 @@
 puts("</FORM>");
 
 // this is the form for the search hub button
 printf("<FORM ACTION=\"%s\" NAME=\"searchHubForm\">\n",  "../cgi-bin/hgHubConnect");
 cgiMakeHiddenVar(hgHubSearchTerms, "");
 cgiMakeHiddenVar(hgHubDoSearch, "on");
 cgiMakeHiddenVar(hgHubDbFilter, "");
 cartSaveSession(cart);
 puts("</FORM>");
 
 // this is the form for the validate button
 if (doHubDevMode)
     {
     printf("<FORM ACTION=\"%s\" NAME=\"validateHubForm\">\n",  "../cgi-bin/hgHubConnect");
     cgiMakeHiddenVar("validateHubUrl", "");
+    cgiMakeHiddenVar("measureTiming", "");
+    cgiMakeHiddenVar("udcTimeout", "");
     // allows saving the old url in the search bar but not run hubCheck on it right away
     // mostly for when you come back to hgHubConnect after just looking at hgTracks
     cgiMakeHiddenVar(hgHubDoHubCheck, "off");
     cartSaveSession(cart);
     puts("</FORM>");
     }
 
 // ... and now the main form
 printf("<FORM ACTION=\"%s\" METHOD=\"POST\" NAME=\"mainForm\">\n", "../cgi-bin/hgGateway");
 cartSaveSession(cart);
 
 // we have two tabs for the public and unlisted hubs
 printf("<div id=\"tabs\">"
        "<ul> <li><a class=\"defaultDesc\" href=\"#publicHubs\">Public Hubs</a></li>"
        "<li><a class=\"defaultDesc\" href=\"#unlistedHubs\">My Hubs</a></li> ");