229b9f6993152bab7202c2a32f461ecaa478e140 kate Mon Oct 1 16:28:22 2018 -0700 Rename merge mode to cluster mode. refs #21917 diff --git src/hg/lib/interactUi.c src/hg/lib/interactUi.c index 008fe80..86d8a4a 100644 --- src/hg/lib/interactUi.c +++ src/hg/lib/interactUi.c @@ -1,188 +1,188 @@ /* 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; boolean interactUiDirectional(struct trackDb *tdb) /* Determine if interactions are directional */ { return isNotEmpty(trackDbSetting(tdb, INTERACT_DIRECTIONAL)); } char *interactUiOffset(struct trackDb *tdb) /* Determine whether to offset source or target (or neither if NULL) */ { char *setting = trackDbSetting(tdb, INTERACT_DIRECTIONAL); if (setting) { char *words[8]; int count = chopByWhite(cloneString(setting), words, ArraySize(words)); if (count >= 1) { char *offset = words[0]; if (sameString(offset, INTERACT_OFFSET_TARGET) || sameString(offset, INTERACT_OFFSET_SOURCE)) return offset; } } return NULL; } void interactUiMinScore(struct cart *cart, char *track, struct trackDb *tdb) /* Minimum score */ { char buffer[1024]; safef(buffer, sizeof buffer, "%s.%s", tdb->track, INTERACT_MINSCORE); int minScore = cartUsualInt(cart, buffer, 0); printf("Minimum score: "); 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("Track height: "); cgiMakeIntVar(buffer, current, 3); printf(" pixels (range: %d to %d, default: %d)", min, max, deflt); } void interactUiDrawMode(struct cart *cart, char *track, struct trackDb *tdb) /* Radio buttons to select drawing mode */ { char *drawMode = cartUsualStringClosestToHome(cart, tdb, isNameAtParentLevel(tdb, track), INTERACT_DRAW, INTERACT_DRAW_DEFAULT); char cartVar[1024]; puts("Draw mode: "); 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 interactUiEndpointFilter(struct cart *cart, char *track, struct trackDb *tdb) /* Radio buttons to allow excluding items lacking endpoints in window */ { char *endsVisible = cartUsualStringClosestToHome(cart, tdb, isNameAtParentLevel(tdb, track), INTERACT_ENDS_VISIBLE, INTERACT_ENDS_VISIBLE_DEFAULT); char cartVar[1024]; puts("Show interactions: "); safef(cartVar, sizeof(cartVar), "%s.%s", track, INTERACT_ENDS_VISIBLE); cgiMakeRadioButton(cartVar, INTERACT_ENDS_VISIBLE_ANY, sameString(INTERACT_ENDS_VISIBLE_ANY, endsVisible)); printf(" %s ", "all"); //printf(" %s ", "none"); cgiMakeRadioButton(cartVar, INTERACT_ENDS_VISIBLE_ONE, sameString(INTERACT_ENDS_VISIBLE_ONE, endsVisible)); printf(" %s ", "at least one end"); //printf(" %s ", "only one end"); cgiMakeRadioButton(cartVar, INTERACT_ENDS_VISIBLE_TWO , sameString(INTERACT_ENDS_VISIBLE_TWO, endsVisible)); printf(" %s ", "both ends in window"); //printf(" %s ", "no ends in window"); } void interactUiDashedLines(struct cart *cart, char *track, struct trackDb *tdb) /* Checkbox for dashed lines on interactions in reverse direction */ { if (!interactUiDirectional(tdb)) return; char cartVar[1024]; safef(cartVar, sizeof cartVar, "%s.%s", tdb->track, INTERACT_DIRECTION_DASHES); boolean doDashes = cartCgiUsualBoolean(cart, cartVar, INTERACT_DIRECTION_DASHES_DEFAULT); cgiMakeCheckBox(cartVar, doDashes); printf("Draw reverse direction interactions with dashed lines"); } -static char *interactMergeDefault(struct trackDb *tdb) -/* Determine whether to merge by source or target (or neither if NULL) */ +static char *interactClusterDefault(struct trackDb *tdb) +/* Determine whether to cluster by source or target (or neither if NULL) */ { char *setting = trackDbSetting(tdb, INTERACT_DIRECTIONAL); if (setting) { char *words[8]; int count = chopByWhite(cloneString(setting), words, ArraySize(words)); - if (count >= 2) + if (count >= 1) { - char *merge = words[1]; - if (sameString(merge, INTERACT_TDB_MERGE_TARGET)) - return INTERACT_MERGE_TARGET; - if (sameString(merge, INTERACT_TDB_MERGE_SOURCE)) - return INTERACT_MERGE_SOURCE; + char *cluster = words[0]; + if (sameString(cluster, INTERACT_TDB_CLUSTER_TARGET)) + return INTERACT_CLUSTER_TARGET; + if (sameString(cluster, INTERACT_TDB_CLUSTER_SOURCE)) + return INTERACT_CLUSTER_SOURCE; } } return NULL; } -char *interactUiMergeMode(struct cart *cart, char *track, struct trackDb *tdb) -/* Get merge mode from trackDb and cart */ +char *interactUiClusterMode(struct cart *cart, char *track, struct trackDb *tdb) +/* Get cluster mode from trackDb and cart */ { -char *mergeDefault = interactMergeDefault(tdb); -if (!mergeDefault) +char *clusterDefault = interactClusterDefault(tdb); +if (!clusterDefault) return NULL; -char *mergeMode = cartUsualStringClosestToHome(cart, tdb, isNameAtParentLevel(tdb, track), - INTERACT_MERGE, mergeDefault); -if (sameString(INTERACT_MERGE_SOURCE, mergeMode) || - sameString(INTERACT_MERGE_TARGET, mergeMode)) - return mergeMode; +char *clusterMode = cartUsualStringClosestToHome(cart, tdb, isNameAtParentLevel(tdb, track), + INTERACT_CLUSTER, clusterDefault); +if (sameString(INTERACT_CLUSTER_SOURCE, clusterMode) || + sameString(INTERACT_CLUSTER_TARGET, clusterMode)) + return clusterMode; return NULL; } -static void interactUiSelectMergeMode(struct cart *cart, char *track, struct trackDb *tdb) -/* Radio buttons to specify merge by source or target */ +static void interactUiSelectClusterMode(struct cart *cart, char *track, struct trackDb *tdb) +/* Radio buttons to specify cluster by source or target */ { -char *mergeMode = interactUiMergeMode(cart, track, tdb); +char *clusterMode = interactUiClusterMode(cart, track, tdb); char cartVar[1024]; -puts("Merge by: "); -safef(cartVar, sizeof(cartVar), "%s.%s", track, INTERACT_MERGE); -cgiMakeRadioButton(cartVar, INTERACT_MERGE_SOURCE, sameString(INTERACT_MERGE_SOURCE, mergeMode)); +puts("Cluster by: "); +safef(cartVar, sizeof(cartVar), "%s.%s", track, INTERACT_CLUSTER); +cgiMakeRadioButton(cartVar, INTERACT_CLUSTER_SOURCE, sameString(INTERACT_CLUSTER_SOURCE, clusterMode)); printf(" %s ", "source"); -cgiMakeRadioButton(cartVar, INTERACT_MERGE_TARGET, sameString(INTERACT_MERGE_TARGET, mergeMode)); +cgiMakeRadioButton(cartVar, INTERACT_CLUSTER_TARGET, sameString(INTERACT_CLUSTER_TARGET, clusterMode)); printf(" %s ", "target"); } 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\n
", //isPopup ? 75 : 100, boxed ?" width='100%'":""); puts("

"); interactUiEndpointFilter(cart, track, tdb); puts("

"); -if (interactUiMergeMode(cart, track, tdb)) +if (interactUiClusterMode(cart, track, tdb)) { - interactUiSelectMergeMode(cart, track, tdb); + interactUiSelectClusterMode(cart, track, tdb); } else { interactUiTrackHeight(cart, track, tdb); puts("

"); interactUiDrawMode(cart, track, tdb); puts("

"); interactUiDashedLines(cart, track, tdb); puts("

"); } scoreCfgUi(database, cart,tdb,tdb->track,"",1000,FALSE); cfgEndBox(boxed); }