ee8b9b26531c6606398b89ef86aa72469ab92bd5 max Tue Oct 28 09:29:27 2025 -0700 adding new info icon to group and making the hide group button do a refresh, refs #36610 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index e0be4437f9d..2b4336e35da 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -9664,96 +9664,108 @@ hPrintf("",MAX_CONTROL_COLUMNS); else hPrintf("",MAX_CONTROL_COLUMNS); hPrintf("
"); hPrintf("\n",group->name); char idText[256]; safef(idText, sizeof idText, "%s_button", group->name); hPrintf("\"%s\"  ", 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)) - { + char *hubName = hubNameFromGroupName(group->name); struct trackHub *hub = grabHashedHub(hubName); + if (hubName) + { + puts(" "); + char infoText[10000]; + safef(infoText, sizeof infoText, "A track hub is a list of tracks produced and hosted by external data providers. The UCSC browser group is not responsible for them. This hub is loaded from %s", hub->url); + printInfoIconColor(infoText, "white"); + } + hPrintf("\n"); + + if (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); } hPrintf("  "); } + } hPrintf(" ", group->name); + if (hubName) + { 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;", hubName + strlen(hubTrackPrefix)); #ifdef GRAPH_BUTTON_ON_QUICKLIFT safef(idText, sizeof idText, "%s_%d_graph", hubName, graphCount); graphCount++; hPrintf("\n", idText); #endif } - - hPrintf("\n"); + "title='Update image with your changes. Any of the refresh buttons on this page may be used.'>\n"); hPrintf("
\n"); controlGridEndRow(cg); /* Base Position track goes into map group, which will always exist. */ if (!showedRuler && sameString(group->name, "map") ) { char *url = trackUrl(RULER_TRACK_NAME, chromName); showedRuler = TRUE; myControlGridStartCell(cg, isOpen, group->name, FALSE); hPrintf("", url); hPrintf(" %s
", RULER_TRACK_LABEL); hPrintf("
"); hDropListClassWithStyle("ruler", rulerMenu, sizeof(rulerMenu)/sizeof(char *), rulerMenu[rulerMode], rulerMode == tvHide ? "hiddenText" : "normalText",