d1bc57639309864bb2665bd46eddfe75863f76e4
braney
Tue Apr 23 16:42:54 2024 -0700
rearrange how we're doing hub groups.
diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 007e0df..8dc15a0 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -6897,37 +6897,34 @@
rPropagateGroup(subtrack, group);
}
}
static void groupTracks(struct track **pTrackList,
struct group **pGroupList, struct grp *grpList, int vis)
/* Make up groups and assign tracks to groups.
* If vis is -1, restore default groups to tracks. */
{
struct group *unknown = NULL;
struct group *group, *list = NULL;
struct hash *hash = newHash(8);
struct track *track;
struct trackRef *tr;
struct grp* grps = hLoadGrps(database);
-struct grp* hubGrps = trackHubGetGrps();
struct grp *grp;
float minPriority = 100000; // something really large
boolean foundMap = FALSE;
-grps = slCat(grps, hubGrps);
-
/* build group objects from database. */
for (grp = grps; grp != NULL; grp = grp->next)
{
if (sameString(grp->name, "map"))
foundMap = TRUE;
/* deal with group reordering */
float priority = grp->priority;
// we want to get the minimum priority over 1 (which is custom tracks)
if ((priority > 1.0) && (priority < minPriority)) minPriority = priority;
if (withPriorityOverride)
{
char cartVar[512];
safef(cartVar, sizeof(cartVar), "%s.priority",grp->name);
if (vis != -1)
priority = (float)cartUsualDouble(cart, cartVar, grp->priority);
@@ -8028,31 +8025,30 @@
if (avgWigMafLoad > 0)
{
hPrintf("
\n",
track->shortLabel, avgWigMafLoad);
}
}
}
hPrintf("\n");
}
void initTrackList()
/* need to init tracklist, sometimes early */
{
if (!trackList)
{
- trackHubResetGrps();
if (measureTiming)
measureTime("Time before getTrackList");
boolean defaultTracks = cgiVarExists("hgt.reset");
trackList = getTrackList(&groupList, defaultTracks ? -1 : -2);
if (measureTiming)
measureTime("Time after visibilities");
makeGlobalTrackHash(trackList);
}
}
struct track *getTrackListForOneTrack(char *trackName)
/* Fetch trackList for a single trackName using hgt.trackNameFilter. */
{
struct track *saveTrackList = trackList;
struct group *saveGroupList = groupList;
@@ -8515,30 +8511,31 @@
hPrintf(" ");
hButtonWithOnClick("hgt.setWidth", "resize", "Resize image width to browser window size - keyboard shortcut: r, then s", "hgTracksSetWidth()");
// put the track download interface behind hg.conf control
if (cfgOptionBooleanDefault("showDownloadUi", FALSE))
jsInline("var showDownloadButton = true;\n");
}
void doTrackForm(char *psOutput, struct tempName *ideoTn)
/* Make the tracks display form with the zoom/scroll buttons and the active
* image. If the ideoTn parameter is not NULL, it is filled in if the
* ideogram is created. */
{
+int disconCount = 0;
struct group *group;
struct track *track;
char *freezeName = NULL;
boolean hideAll = cgiVarExists("hgt.hideAll");
boolean hideTracks = cgiOptionalString( "hideTracks") != NULL;
boolean defaultTracks = cgiVarExists("hgt.reset");
boolean showedRuler = FALSE;
boolean showTrackControls = cartUsualBoolean(cart, "trackControlsOnMain", TRUE);
boolean multiRegionButtonTop = cfgOptionBooleanDefault(MULTI_REGION_CFG_BUTTON_TOP, TRUE);
long thisTime = 0, lastTime = 0;
basesPerPixel = ((float)virtWinBaseCount) / ((float)fullInsideWidth);
zoomedToBaseLevel = (virtWinBaseCount <= fullInsideWidth / tl.mWidth);
zoomedToCodonLevel = (ceil(virtWinBaseCount/3) * tl.mWidth) <= fullInsideWidth;
zoomedToCodonNumberLevel = (ceil(virtWinBaseCount/3) * tl.mWidth * 5) <= fullInsideWidth;
@@ -9467,84 +9464,86 @@
if ((group->trackList == NULL) && (group->errMessage == NULL))
continue;
struct trackRef *tr;
/* check if group section should be displayed */
char *otherState;
char *indicator;
char *indicatorImg;
boolean isOpen = !isCollapsedGroup(group);
collapseGroupGoodies(isOpen, TRUE, &indicatorImg,
&indicator, &otherState);
hPrintf("
"); hPrintf("\n",group->name); char idText[256]; safef(idText, sizeof idText, "%s_button", group->name); hPrintf(" ", idText, indicatorImg, indicator,isOpen?"Collapse":"Expand"); jsOnEventByIdF("click", idText, "return vis.toggleForGroup(this, '%s');", group->name); if (isHubTrack(group->name)) { if (strstr(group->label, "Collections")) { safef(idText, sizeof idText, "%s_edit", group->name); hPrintf("\n", idText); jsOnEventByIdF("click", idText, "document.editHubForm.submit();return true;"); } } hPrintf(" | \n%s", group->label); hPrintf(" | \n"); if (isHubTrack(group->name)) { - struct trackHub *hub = grabHashedHub(group->name); + char *hubName = hubNameFromGroupName(group->name); + struct trackHub *hub = grabHashedHub(hubName); // visibility: hidden means that the element takes up space so the center alignment is not disturbed. if (hub != NULL) { if (hub->descriptionUrl == NULL) hPrintf("No Info "); else hPrintf("Info ", hub->descriptionUrl); } - safef(idText, sizeof idText, "%s_disconn", group->name); + safef(idText, sizeof idText, "%s_%d_disconn", hubName, disconCount); + disconCount++; hPrintf("\n", idText); jsOnEventByIdF("click", idText, "document.disconnectHubForm.elements['hubId'].value='%s';" "document.disconnectHubForm.submit();return true;", - group->name + strlen(hubTrackPrefix)); + hubName + strlen(hubTrackPrefix)); } hPrintf("\n"); hPrintf(" |