651f959d7553ee0256b1e0b37ffa83d64709511d lrnassar Mon Mar 16 17:57:16 2026 -0700 Adding accessible labels to form controls across main CGI pages. Extends cheapcgi and hui libraries with aria-label support for track visibility dropdowns, and adds <label> elements to hgBlat, hgTables, hgPcr, and hgGateway form controls. Also adds Form Control Labels section to accessibility page. refs #37253 diff --git src/hg/hgPcr/hgPcr.c src/hg/hgPcr/hgPcr.c index 6cbcd272147..cabcf8a8241 100644 --- src/hg/hgPcr/hgPcr.c +++ src/hg/hgPcr/hgPcr.c @@ -432,84 +432,88 @@ "});\n" , searchBarId ); printf("</center></td><TD><CENTER>\n"); printf("Assembly:<BR><span id='genomeLabel'>%s</span>", getCurrentGenomeLabel(db)); printf("</CENTER></TD>\n"); if (gotTargetDb) { struct targetPcrServer *targetServerList = getTargetServerList(db, NULL); if (targetServerList != NULL) { char *target = cartUsualString(cart, "wp_target", "genome"); printf("%s", "<TD><CENTER>\n"); - printf("Target:<BR>"); + printf("<label>Target:<BR>"); showTargets(target, targetServerList); + printf("</label>"); printf("%s", "</CENTER></TD>\n"); } else cgiMakeHiddenVar("wp_target", "genome"); } else cgiMakeHiddenVar("wp_target", "genome"); printf("%s", "<TD COLWIDTH=2><CENTER>\n"); -printf("Forward primer:<BR>"); +printf("<label for='wp_f'>Forward primer:</label><BR>"); cgiMakeTextVar("wp_f", fPrimer, 22); printf("%s", "</CENTER></TD>\n"); printf("%s", "<TD><CENTER COLWIDTH=2>\n"); -printf(" Reverse primer:<BR>"); +printf("<label for='wp_r'> Reverse primer:</label><BR>"); cgiMakeTextVar("wp_r", rPrimer, 22); printf("%s", "</CENTER></TD>\n"); printf("%s", "<TD><CENTER>\n"); printf(" <BR>"); cgiMakeButton("Submit", "Submit"); printf("%s", "</CENTER></TD>\n"); printf("</TR></TABLE><BR>"); printf("<TABLE BORDER=0 WIDTH=\"96%%\" COLS=4><TR>\n"); printf("%s", "<TD><CENTER>\n"); -printf("Max product size: "); +printf("<label>Max product size: "); cgiMakeIntVar("wp_size", maxSize, 5); +printf("</label>"); printf("%s", "</CENTER></TD>\n"); printf("%s", "<TD><CENTER>\n"); -printf(" Min perfect match: "); +printf("<label> Min perfect match: "); cgiMakeIntVar("wp_perfect", minPerfect, 2); +printf("</label>"); printf("%s", "</CENTER></TD>\n"); jsOnEventById("click", "Submit", "if ($('#wp_r').val()==='' || $('#wp_f').val()==='') "\ "{ alert('Please specify at least a forward and reverse primer. Both input boxes need to be filled out.'); event.preventDefault(); }"); printf("%s", "<TD><CENTER>\n"); -printf(" Min good match: "); +printf("<label> Min good match: "); cgiMakeIntVar("wp_good", minGood, 2); +printf("</label>"); printf("%s", "</CENTER></TD>\n"); printf("%s", "<TD><CENTER>\n"); -printf(" Flip reverse primer: "); -cgiMakeCheckBox("wp_flipReverse", flipReverse); +printf("<label for='wp_flipReverse'> Flip reverse primer: </label>"); +cgiMakeCheckBoxWithId("wp_flipReverse", flipReverse, "wp_flipReverse"); printf("%s", "</CENTER></TD>\n"); printf("%s", "<TD><CENTER>\n"); -printf(" Append to existing PCR result: "); -cgiMakeCheckBox("wp_append", appendToResults); +printf("<label for='wp_append'> Append to existing PCR result: </label>"); +cgiMakeCheckBoxWithId("wp_append", appendToResults, "wp_append"); printf("%s", "</CENTER></TD>\n"); printf("</TR></TABLE><BR>"); printf("</FORM>\n"); /* Put up a second form who's sole purpose is to preserve state * when the user flips the genome button. */ printf("<FORM ACTION=\"../cgi-bin/hgPcr\" METHOD=\"GET\" NAME=\"orgForm\">" "<input type=\"hidden\" name=\"wp_target\" value=\"\">\n" "<input type=\"hidden\" name=\"db\" value=\"\">\n" "<input type=\"hidden\" name=\"org\" value=\"\">\n" "<input type=\"hidden\" name=\"wp_f\" value=\"\">\n" "<input type=\"hidden\" name=\"wp_r\" value=\"\">\n" "<input type=\"hidden\" name=\"wp_size\" value=\"\">\n"