f225bd9ef750fb706f2f14bd87e3512b43e23dc1 max Wed May 13 13:50:34 2020 -0700 Revert "adding a protease track to uniprot, refs #25192". I have no idea what happened here, looks like I typed git commit -a instead of git commit -m This reverts commit db7c8abb6d7674bb26f579eabb58bc080ce76fdd. diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 86ee78b..c4482a2 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -4025,67 +4025,56 @@ { if (*styler == '#') // Legacy: just the color that follows printf(" style='color: %s;'",styler); else printf(" style='%s'",styler); } } printf(">%s</OPTION>\n",label); } static boolean filterByColumnIsList(struct cart *cart, struct trackDb *tdb, char *setting) /* Is this filter setting expecting a list of items (e.g. has checkboxes) */ { return (sameString(setting, FILTERBY_SINGLE_LIST) || sameString(setting, FILTERBY_MULTIPLE_LIST_OR) || - sameString(setting, FILTERBY_MULTIPLE_LIST_ONLY_OR) || - sameString(setting, FILTERBY_MULTIPLE_LIST_ONLY_AND) || sameString(setting, FILTERBY_MULTIPLE_LIST_AND)); } static boolean filterByColumnIsMultiple(struct cart *cart, struct trackDb *tdb, char *setting) /* Is this filter setting for a comma separated column. */ { return (sameString(setting, FILTERBY_MULTIPLE) || sameString(setting, FILTERBY_MULTIPLE_LIST_OR) || - sameString(setting, FILTERBY_MULTIPLE_LIST_ONLY_OR) || - sameString(setting, FILTERBY_MULTIPLE_LIST_ONLY_AND) || sameString(setting, FILTERBY_MULTIPLE_LIST_AND)); } -static boolean filterByColumnAllowsMatch(struct cart *cart, struct trackDb *tdb, char *setting) -/* Does this filter allow the "Only Match if ..." choice */ -{ -return !(sameString(setting, FILTERBY_MULTIPLE_LIST_ONLY_OR) || - sameString(setting, FILTERBY_MULTIPLE_LIST_ONLY_AND)); -} - void filterBySetCfgUiGuts(struct cart *cart, struct trackDb *tdb, filterBy_t *filterBySet, boolean onOneLine, char *filterTypeTitle, char *selectIdPrefix, char *allLabel, char *prefix) // Does the UI for a list of filterBy structure for either filterBy or highlightBy controls { if (filterBySet == NULL) return; #define FILTERBY_HELP_LINK "<A HREF=\"../goldenPath/help/multiView.html\" TARGET=ucscHelp>help</A>" int count = slCount(filterBySet); if (count == 1) - puts("<TABLE class='trackUiFilterTable'><TR valign='top'>"); + puts("<TABLE cellpadding=3><TR valign='top'>"); else - printf("<B>%s items by category:</B> " - "<TABLE class='trackUiFilterTable'><TR valign='bottom'>\n",filterTypeTitle); + printf("<B>%s items by:</B> (select multiple categories and items - %s)" + "<TABLE cellpadding=3><TR valign='bottom'>\n",filterTypeTitle,FILTERBY_HELP_LINK); #ifdef ADVANCED_BUTTON if (tdbIsBigBed(tdb)) { char varName[1024]; safef(varName, sizeof(varName), "%s.doAdvanced", tdb->track); puts(" "); printf("<a id='%s' style='text-decoration: underline; color: #121E9A' title='Show advanced options..'>%s<img src='../images/downBlue.png'/></a>" ,varName,"Advanced "); printf("<BR>"); jsInlineF("$(function () { advancedSearchOnChange('%s'); });\n", varName); } #endif // ADVANCED_BUTTON filterBy_t *filterBy = NULL; @@ -4095,52 +4084,42 @@ jsIncludeFile("ui.dropdownchecklist.js",NULL); jsIncludeFile("ddcl.js",NULL); } // TODO: columnCount (Number of filterBoxes per row) should be configurable through tdb setting for (filterBy = filterBySet; filterBy != NULL; filterBy = filterBy->next) { puts("<TD>"); char selectStatement[4096]; char *setting = getFilterType(cart, tdb, filterBy->column, FILTERBY_SINGLE_LIST); if (filterByColumnIsList(cart, tdb, setting)) safef(selectStatement, sizeof selectStatement, " (select multiple items - %s)", FILTERBY_HELP_LINK); else selectStatement[0] = 0; - - char *filterTitle = filterBy->title; - if (strchr(filterTitle, '|')!=NULL) { - // replace | character with the 0 byte - filterTitle = cloneString(filterTitle); - char *pipePt = strchr(filterTitle, '|'); - *pipePt = '\0'; - } - if(count == 1) - printf("<B>%s by %s</B>%s",filterTypeTitle,filterTitle,selectStatement); + printf("<B>%s by %s</B>%s",filterTypeTitle,filterBy->title,selectStatement); else - printf("<B>%s</B>",filterTitle); + printf("<B>%s</B>",filterBy->title); puts("</TD>"); } puts("</tr><tr>"); for (filterBy = filterBySet; filterBy != NULL; filterBy = filterBy->next) { puts("<td>"); char *setting = getFilterType(cart, tdb, filterBy->column, FILTERBY_SINGLE_LIST); - if (filterByColumnIsMultiple(cart, tdb, setting) && filterByColumnIsList(cart, tdb, setting) && tdbIsBigBed(tdb) && - filterByColumnAllowsMatch(cart, tdb, setting)) + if (filterByColumnIsMultiple(cart, tdb, setting) && filterByColumnIsList(cart, tdb, setting) && tdbIsBigBed(tdb)) { char cartSettingString[4096]; safef(cartSettingString, sizeof cartSettingString, "%s.%s.%s", prefix,FILTER_TYPE_NAME_LOW, filterBy->column); printf("<div ><b>Match if "); // ADVANCED BUTTON printf("<div class='advanced' style='display:none'><b>Match if "); cgiMakeRadioButton(cartSettingString, FILTERBY_MULTIPLE_LIST_AND, sameString(setting, FILTERBY_MULTIPLE_LIST_AND)); printf(" all "); cgiMakeRadioButton(cartSettingString, FILTERBY_MULTIPLE_LIST_OR, sameString(setting, FILTERBY_MULTIPLE_LIST_OR)); printf(" one or more match</b></div> "); } puts("</td>"); } puts("</tr><tr>"); int ix=0; for (filterBy = filterBySet; filterBy != NULL; filterBy = filterBy->next, ix++) @@ -4630,31 +4609,31 @@ #define LARGE_COMPOSITE_CUTOFF 30 static void printSubtrackListRadioButtons(char *parentTrack, int subCount, boolean displayAll) // Print radio buttons for all/select { printf("<B>List subtracks: "); char javascript[JBUFSIZE]; safef(javascript, sizeof(javascript), "showOrHideSelectedSubtracks(true);"); char buffer[SMALLBUF]; if (subCount > LARGE_COMPOSITE_CUTOFF) safef(buffer,SMALLBUF,"%s.displaySubtracks", parentTrack); else safecpy(buffer,SMALLBUF,"displaySubtracks"); cgiMakeOnEventRadioButtonWithClass(buffer, "selected", !displayAll, "allOrOnly", "click", javascript); -puts("only checked "); +puts("only selected/visible "); safef(javascript, sizeof(javascript), "showOrHideSelectedSubtracks(false);"); cgiMakeOnEventRadioButtonWithClass(buffer, "all", displayAll, "allOrOnly", "click", javascript); printf("all</B>"); if (subCount > 5) printf(" (<span class='subCBcount'></span>)"); } static void printSubtrackTableHeader(struct trackDb *parentTdb, struct slRef *subtrackRefList, struct subtrackConfigSettings *settings) /* Print header of subtrack table, including classes describing display appearance and behavior. Return number of columns */ { boolean useDragAndDrop = settings->useDragAndDrop; sortOrder_t *sortOrder = settings->sortOrder; @@ -5483,32 +5462,33 @@ boxed = trackDbSettingOn(tdb,"boxedCfg"); if (boxed) printf("<BR>"); } if (boxed) { printf("<TABLE class='blueBox"); char *view = tdbGetViewName(tdb); if (view != NULL) printf(" %s",view); printf("' style='background-color:%s;'><TR><TD>", COLOR_BG_ALTDEFAULT); if (title) printf("<CENTER><B>%s Configuration</B></CENTER>\n", title); } else if (title) - printf("<B>%s </b>", title ); -// a <p> is not necessary here / not clear why it was there. It lead to a huge space in the wrench box + printf("<p><B>%s </b>", title ); +else + printf("<p>"); return boxed; } void cfgEndBox(boolean boxed) // Handle end of box and title for individual track type settings { if (boxed) puts("</td></tr></table>"); } void wigOption(struct cart *cart, char *name, char *title, struct trackDb *tdb) /* let the user choose to see the track in wiggle mode */ { printf("<BR><BR><B>Display data as a density graph:</B> "); boolean option = cartOrTdbBoolean(cart, tdb, "doWiggle", FALSE); @@ -6100,34 +6080,34 @@ if (max && limitMin && (int)(*limitMin) != NO_VALUE && *max < *limitMin) *max = *limitMin; } static boolean showScoreFilter(struct cart *cart, struct trackDb *tdb, boolean *opened, boolean boxed, boolean parentLevel,char *name, char *title, char *label, char *scoreName) // Shows a score filter control with minimum value and optional range { char *setting = trackDbSetting(tdb, scoreName); if (setting) { if (*opened == FALSE) { boxed = cfgBeginBoxAndTitle(tdb, boxed, title); - puts("<TABLE class='hgTrackUiScoreFilterTable'>"); + puts("<TABLE>"); *opened = TRUE; } - printf("<TR><TD align='right'><B>Numeric Filter: %s </B><TD align='left'>",label); + printf("<TR><TD align='right'><B>%s:</B><TD align='left'>",label); char varName[256]; char altLabel[256]; char *filterName = getScoreNameAdd(tdb, scoreName, _BY_RANGE); boolean filterByRange = trackDbSettingClosestToHomeOn(tdb, filterName); double minLimit=NO_VALUE,maxLimit=NO_VALUE; double minVal=minLimit,maxVal=maxLimit; colonPairToDoubles(setting,&minVal,&maxVal); getScoreFloatRangeFromCart(cart,tdb,parentLevel,scoreName,&minLimit,&maxLimit, &minVal, &maxVal); filterName = getScoreNameAdd(tdb, scoreName, filterByRange ? _MIN:""); safef(varName, sizeof(varName), "%s.%s", name, filterName); safef(altLabel, sizeof(altLabel), "%s%s", (filterByRange ? "Minimum " : ""), htmlEncode(htmlTextStripTags(label))); cgiMakeDoubleVarWithLimits(varName,minVal, altLabel, 0,minLimit, maxLimit); if (filterByRange) @@ -6376,31 +6356,31 @@ safef(cgiVar,sizeof(cgiVar),"%s.%s.%s",tdb->track,FILTER_TYPE_NAME_LOW, filter->fieldName); printf(" using "); printf("<SELECT name='%s'> ", cgiVar); printf("<OPTION %s>%s</OPTION>", sameString(setting, FILTERTEXT_WILDCARD) ? "SELECTED" : "", FILTERTEXT_WILDCARD ); printf("<OPTION %s>%s</OPTION>", sameString(setting, FILTERTEXT_REGEXP) ? "SELECTED" : "", FILTERTEXT_REGEXP ); printf("</SELECT>"); printf("</P>"); } } return count; } void scoreCfgUi(char *db, struct cart *cart, struct trackDb *tdb, char *name, char *title, int maxScore, boolean boxed) -// Put up UI for filtering bed track based on a score or any other fields defined by the filter* trackDb statements +// Put up UI for filtering bed track based on a score { char option[256]; boolean parentLevel = isNameAtParentLevel(tdb,name); boolean skipScoreFilter = FALSE; // Numeric filters are first boolean isBoxOpened = FALSE; if (numericFiltersShowAll(db, cart, tdb, &isBoxOpened, boxed, parentLevel, name, title) > 0) skipScoreFilter = TRUE; if (textFiltersShowAll(db, cart, tdb)) skipScoreFilter = TRUE; if (cartOptionalString(cart, "ajax") == NULL) { @@ -8498,43 +8478,42 @@ compositeUiByFilter(db, cart, parentTdb, formName); return TRUE; } static boolean compositeUiAllButtons(char *db, struct cart *cart, struct trackDb *parentTdb, char *formName) // UI for composite tracks: all/none buttons only (as opposed to matrix or lots of buttons { if (trackDbCountDescendantLeaves(parentTdb) <= 1) return FALSE; if (dimensionsExist(parentTdb)) return FALSE; -puts("<div style='margin-bottom:3px'>Use checkboxes below to show or hide subtracks. Use drop-downs to change their visibilities.</div>"); -puts("<B>All subtracks:</B> "); -//#define PM_BUTTON_GLOBAL "<IMG height=18 width=18 id='%s' src='../images/%s'>" -//#define PM_BUTTON_GLOBAL_JS "matSubCBsCheck(%s);" -//char id[256]; -//safef(id, sizeof id, "btn_plus_all"); -//safef(id, sizeof id, "btn_plus_all"); -//printf(PM_BUTTON_GLOBAL, id, "add_sm.gif"); -//printf(PM_BUTTON_GLOBAL, id, "add_sm.gif"); -printf("<span style='margin-right:6px' class='link' id='btn_plus_all'>check</span>"); -printf("<span class='link' id='btn_minus_all'>uncheck</span>"); -jsOnEventByIdF("click", "btn_plus_all", "matSubCBsCheck(%s)", "true"); -jsOnEventByIdF("click", "btn_minus_all", "matSubCBsCheck(%s)", "false"); +#define PM_BUTTON_GLOBAL "<IMG height=18 width=18 id='%s' src='../images/%s'>" +#define PM_BUTTON_GLOBAL_JS "matSubCBsCheck(%s);" +char id[256]; +safef(id, sizeof id, "btn_plus_all"); +printf(PM_BUTTON_GLOBAL, id, "add_sm.gif"); +jsOnEventByIdF("click", id, PM_BUTTON_GLOBAL_JS, "true"); + +safef(id, sizeof id, "btn_minus_all"); +printf(PM_BUTTON_GLOBAL, id, "remove_sm.gif"); +jsOnEventByIdF("click", id, PM_BUTTON_GLOBAL_JS, "false"); + +puts(" <B>Select all subtracks</B><BR>"); return TRUE; } static boolean compositeUiNoMatrix(char *db, struct cart *cart, struct trackDb *parentTdb, char *formName) // UI for composite tracks: subtrack selection. This is the default UI // without matrix controls. { int i, j, k; char *words[SMALLBUF]; char option[SMALLBUF]; int wordCnt; char *name, *value; char buttonVar[1024]; char setting[] = "subGroupN";