fc724a23c9a0ad34a6ff6e530eb93945fd94a5c5 kate Sun Mar 11 18:24:53 2018 -0700 Add score filtering. refs #17512 diff --git src/hg/lib/interactUi.c src/hg/lib/interactUi.c index faf1217..b2f0dc3 100644 --- src/hg/lib/interactUi.c +++ src/hg/lib/interactUi.c @@ -1,78 +1,90 @@ /* interact track controls */ /* Copyright (C) 2018 The Regents of the University of California * See README in this or parent directory for licensing information. */ #include "cheapcgi.h" #include "cart.h" #include "hui.h" #include "trackDb.h" #include "interactUi.h" boolean isPopup = FALSE; -void interactUiDrawMode(struct cart *cart, char *track, struct trackDb *tdb) -/* Radio buttons to select drawing mode */ +boolean interactUiDirectional(struct trackDb *tdb) +/* Determine if interactions are directional */ +{ +// TODO: make this setting optional (default to false) +boolean isDirectional = FALSE; +char *setting = trackDbSettingClosestToHome(tdb, INTERACT_DIRECTIONAL); +if (setting == NULL) + errAbort("interact track %s missing required %s setting\n", tdb->track, INTERACT_DIRECTIONAL); +if (sameString(setting, "true")) + isDirectional = TRUE; +else if (differentString(setting, "false")) + errAbort("interact track %s setting %s must be set true or false\n", + tdb->track, INTERACT_DIRECTIONAL); +return isDirectional; +} +void interactUiMinScore(struct cart *cart, char *track, struct trackDb *tdb) +/* Minimum score */ { -char *drawMode = cartUsualStringClosestToHome(cart, tdb, isNameAtParentLevel(tdb, track), - INTERACT_DRAW, INTERACT_DRAW_DEFAULT); -char cartVar[1024]; -puts("<b>Draw mode:</b> "); -safef(cartVar, sizeof(cartVar), "%s.%s", track, INTERACT_DRAW); -cgiMakeRadioButton(cartVar, INTERACT_DRAW_CURVE , sameString(INTERACT_DRAW_CURVE, drawMode)); -printf(" %s ", "curve"); -cgiMakeRadioButton(cartVar, INTERACT_DRAW_ELLIPSE, sameString(INTERACT_DRAW_ELLIPSE, drawMode)); -printf(" %s ", "ellipse"); -cgiMakeRadioButton(cartVar, INTERACT_DRAW_LINE, sameString(INTERACT_DRAW_LINE, drawMode)); -printf(" %s ", "rectangle"); +char buffer[1024]; +safef(buffer, sizeof buffer, "%s.%s", tdb->track, INTERACT_MINSCORE); +int minScore = cartUsualInt(cart, buffer, INTERACT_DEFMINSCORE); +printf("<b>Minimum score: </b>"); +cgiMakeIntVar(buffer, minScore, 0); } void interactUiTrackHeight(struct cart *cart, char *track, struct trackDb *tdb) /* Input box to change track height */ { // track height control char buffer[1024]; int min, max, deflt, current; cartTdbFetchMinMaxPixels(cart, tdb, INTERACT_MINHEIGHT, INTERACT_MAXHEIGHT, atoi(INTERACT_DEFHEIGHT), &min, &max, &deflt, ¤t); safef(buffer, sizeof buffer, "%s.%s", track, INTERACT_HEIGHT); -printf("<br><b>Track height: </b>"); +printf("<br><br><b>Track height: </b>"); cgiMakeIntVar(buffer, current, 3); printf(" <span>pixels (range: %d to %d, default: %d)<span>", min, max, deflt); } -boolean interactUiDirectional(struct trackDb *tdb) -/* Determine if interactions are directional */ +void interactUiDrawMode(struct cart *cart, char *track, struct trackDb *tdb) +/* Radio buttons to select drawing mode */ + { -boolean isDirectional = FALSE; -char *setting = trackDbSettingClosestToHome(tdb, INTERACT_DIRECTIONAL); -if (setting == NULL) - errAbort("interact track %s missing required %s setting\n", tdb->track, INTERACT_DIRECTIONAL); -if (sameString(setting, "true")) - isDirectional = TRUE; -else if (differentString(setting, "false")) - errAbort("interact track %s setting %s must be set true or false\n", - tdb->track, INTERACT_DIRECTIONAL); -return isDirectional; +char *drawMode = cartUsualStringClosestToHome(cart, tdb, isNameAtParentLevel(tdb, track), + INTERACT_DRAW, INTERACT_DRAW_DEFAULT); +char cartVar[1024]; +puts("<b>Draw mode:</b> "); +safef(cartVar, sizeof(cartVar), "%s.%s", track, INTERACT_DRAW); +cgiMakeRadioButton(cartVar, INTERACT_DRAW_CURVE , sameString(INTERACT_DRAW_CURVE, drawMode)); +printf(" %s ", "curve"); +cgiMakeRadioButton(cartVar, INTERACT_DRAW_ELLIPSE, sameString(INTERACT_DRAW_ELLIPSE, drawMode)); +printf(" %s ", "ellipse"); +cgiMakeRadioButton(cartVar, INTERACT_DRAW_LINE, sameString(INTERACT_DRAW_LINE, drawMode)); +printf(" %s ", "rectangle"); } void interactCfgUi(char *database, struct cart *cart, struct trackDb *tdb, char *track, char *title, boolean boxed) /* Configure interact track type */ { if (cartVarExists(cart, "ajax")) isPopup = TRUE; boxed = cfgBeginBoxAndTitle(tdb, boxed, title); if (startsWith("big", tdb->type)) labelCfgUi(database, cart, tdb); //printf("\n<table id=interactControls style='font-size:%d%%' %s>\n<tr><td>", //isPopup ? 75 : 100, boxed ?" width='100%'":""); +interactUiMinScore(cart, track, tdb); interactUiTrackHeight(cart, track, tdb); puts("<div>"); interactUiDrawMode(cart, track, tdb); //puts("\n</table>\n"); cfgEndBox(boxed); }