478610d3be4abc22e330f4fbb154a2ac8ac4abfa max Tue Jan 20 15:24:18 2026 -0800 add strand filter option to oligoMatch track refs #36984 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c index cacbbcb946b..c1c21d0ac0e 100644 --- src/hg/hgTrackUi/hgTrackUi.c +++ src/hg/hgTrackUi/hgTrackUi.c @@ -2242,42 +2242,51 @@ puts("</P><P>\n"); printf("<B>Color sequence matches by </B>"); char *colorText[3] = {"topic", "impact of journal", "year"}; char *colorVals[3] = {"topic", "impact", "year"}; safef(cgiVar,sizeof(cgiVar),"%s.%s",tdb->track,PUBS_COLORBY_TAG); cgiDropDownWithTextValsAndExtra(cgiVar, colorText, colorVals, 3, colorBy, NULL); puts("</P>\n"); wigOption(cart, tdb->track, tdb->shortLabel, tdb); } void oligoMatchUi(struct trackDb *tdb) /* UI for oligo match track */ { char *oligo = cartUsualString(cart, oligoMatchVar, oligoMatchDefault); +char *strand = cartUsualString(cart, oligoMatchStrandVar, oligoMatchStrandDefault); puts("<P><B>Short (2-30 base) sequence:</B>"); jsInline( "function packTrack()\n" "{\n" "var box = jQuery('select[name$=oligoMatch]');\n" "if (box.val()=='hide')\n" " box.val('pack');\n" "}\n"); printf("<input name='%s' id='%s' size=\"%d\" value=\"%s\" type=\"TEXT\">", oligoMatchVar, oligoMatchVar, 45, oligo); puts("<br>Examples: TATAWAAR, AAAAA"); jsOnEventById("input", oligoMatchVar, "packTrack();"); + +puts("<P><B>Search strand:</B> "); +cgiMakeRadioButton(oligoMatchStrandVar, "both", sameString(strand, "both")); +puts(" Both "); +cgiMakeRadioButton(oligoMatchStrandVar, "forward", sameString(strand, "forward")); +puts(" Forward (+) "); +cgiMakeRadioButton(oligoMatchStrandVar, "reverse", sameString(strand, "reverse")); +puts(" Reverse (-) "); } void cutterUi(struct trackDb *tdb) /* UI for restriction enzyme track */ { char *enz = cartUsualString(cart, cutterVar, cutterDefault); puts("<P><B>Filter display by enzymes (separate with commas):</B><BR>"); cgiMakeTextVar(cutterVar, enz, 100); } void genericWiggleUi(struct trackDb *tdb, int optionNum ) /* put up UI for any standard wiggle track (a.k.a. sample track)*/ { char options[7][256];