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("<th align=\"left\" colspan=%d class='quickToggleBar'>",MAX_CONTROL_COLUMNS); else hPrintf("<th align=\"left\" colspan=%d class='nativeToggleBar'>",MAX_CONTROL_COLUMNS); hPrintf("<table style='width:100%%;'><tr><td style='text-align:left;'>"); hPrintf("\n<A NAME=\"%sGroup\"></A>",group->name); char idText[256]; safef(idText, sizeof idText, "%s_button", group->name); hPrintf("<IMG class='toggleButton'" " id='%s' src=\"%s\" alt=\"%s\" title='%s this group'> ", 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("<input name=\"hubEditButton\" id='%s'" " type=\"button\" value=\"edit\">\n", idText); jsOnEventByIdF("click", idText, "document.editHubForm.submit();return true;"); } } hPrintf("</td><td style='text-align:center; width:90%%;'>\n<B>%s</B>", group->label); - hPrintf("</td><td style='text-align:right;'>\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("</td><td style='text-align:right;'>\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("<a title='The track hub authors have not provided a descriptionUrl with background " "information about this track hub. "); if (hub->email) hPrintf("The authors can be reached at %s. ", hub->email); hPrintf("This link leads to our documentation page about the descriptionUrl statement in hub.txt. "); hPrintf("' href='../goldenPath/help/hgTrackHubHelp.html#hub.txt' " "style='color:#FFF; font-size: 13px;' target=_blank>No Info</a>"); } else { hPrintf("<a title='Link to documentation about this track hub, provided by the track hub authors (not UCSC). "); if (hub->email) hPrintf("The authors can be reached at %s", hub->email); hPrintf("' href='%s' " "style='color:#FFF; font-size: 13px;' target=_blank>Info</a>", hub->descriptionUrl); } hPrintf(" "); } + } hPrintf("<button type='button' class=\"hgtButtonHideGroup\" data-group-name=\"%s\" " "title='Hide all tracks in this group'>Hide group</button> ", group->name); + if (hubName) + { safef(idText, sizeof idText, "%s_%d_disconn", hubName, disconCount); disconCount++; - hPrintf("<input name=\"hubDisconnectButton\" id='%s'" + hPrintf("<input name=\"hubDisconnectButton\" title='Disconnect third-party track hub and remove all tracks' " + "id='%s'" " type=\"button\" value=\"Disconnect\">\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("<input name=\"graphButton\" id='%s'" " type=\"button\" value=\"Graph\">\n", idText); #endif } - - hPrintf("<input type='submit' name='hgt.refresh' value='Refresh' " - "title='Update image with your changes'>\n"); + "title='Update image with your changes. Any of the refresh buttons on this page may be used.'>\n"); hPrintf("</td></tr></table></th>\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("<A HREF=\"%s\">", url); hPrintf(" %s<BR> ", RULER_TRACK_LABEL); hPrintf("</A>"); hDropListClassWithStyle("ruler", rulerMenu, sizeof(rulerMenu)/sizeof(char *), rulerMenu[rulerMode], rulerMode == tvHide ? "hiddenText" : "normalText",