c777a406269f3c9a4a6144c53213e25402f10b89
chmalee
  Fri Jan 27 10:29:01 2023 -0800
faceted bar chart hgTrackUi pages are broken in the hgTracks hgTrackUi pop up. don't do the faceted selection part when we are in a pop up, refs #30102

diff --git src/hg/lib/barChartUi.c src/hg/lib/barChartUi.c
index 21d8472..82df621 100644
--- src/hg/lib/barChartUi.c
+++ src/hg/lib/barChartUi.c
@@ -440,30 +440,40 @@
 /* Write out wrapper draws a SVG bar*/
 {
 printf("<div style=\"background-color:%s\">&nbsp;&nbsp;&nbsp;</span>", val);
 // printf("<TD><TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0><TR>");
 }
 
 void barChartFacetedUi(char *database, struct cart *cart, struct trackDb *tdb, char *track, 
                         char *title, boolean boxed)
 /* Bar chart track type that has an associated facets tables */
 {
 puts("<br>");
 barChartUiLogTransform(cart, track, tdb);
 puts("&nbsp;&nbsp;");
 barChartUiViewLimits(cart, track, tdb);
 
+if (isPopup)
+    {
+    char *categoryLabel =  trackDbSettingClosestToHomeOrDefault(tdb,
+                    BAR_CHART_CATEGORY_LABEL, BAR_CHART_CATEGORY_LABEL_DEFAULT);
+    printf("<div><b>%s:</b>\n", categoryLabel);
+    printf("<a href='%s?g=%s'><button type='button'>Change</button><a>",
+                hTrackUiForTrack(track), track);
+    }
+else
+    {
     char *facets = trackDbSetting(tdb, "barChartFacets");
     char *statsFile = hReplaceGbdb(trackDbRequiredSetting(tdb, "barChartStatsUrl"));
 
     /* Write html to make white background */
     hInsideStyleToWhite();
 
     /* Set up url that has enough context to get back to us.  */
     struct dyString *returnUrl = dyStringNew(0);
     dyStringPrintf(returnUrl, "../cgi-bin/hgTrackUi?g=%s", track);
     dyStringPrintf(returnUrl, "&%s", cartSidUrlString(cart));
 
     /* Load up table from tsv file */
     char *requiredStatsFields[] = {"count",};
     struct fieldedTable *table = fieldedTableFromTabFile(statsFile, statsFile, 
         requiredStatsFields, ArraySize(requiredStatsFields));
@@ -490,30 +500,31 @@
     struct slName *facetNameList = slNameListFromComma(facets);
     struct slName *facetName;
     for (facetName = facetNameList; facetName != NULL; facetName = facetName->next)
         {
         if (fieldedTableFindFieldIx(selected, facetName->name))
            dyStringPrintf(displayList, ",%s", facetName->name);
         }
 
     /* Put up facets and table */
     facetedTableWriteHtml(facTab, cart, selected, selectedFf, displayList->string,
         returnUrl->string, 40, wrapperHash, NULL, 7);
 
     /* Clean up and go home. */
     facetedTableFree(&facTab);
     }
+}
 
 void barChartCfgUi(char *database, struct cart *cart, struct trackDb *tdb, char *track, 
                         char *title, boolean boxed)
 /* Put up facets in certain situations. */
 {
 if (cartVarExists(cart, "ajax"))
     isPopup = TRUE;
 boxed = cfgBeginBoxAndTitle(tdb, boxed, title);
 if (startsWith("big", tdb->type))
     labelCfgUi(database, cart, tdb, track);
 char *facets = trackDbSetting(tdb, "barChartFacets");
 if (facets != NULL)
     barChartFacetedUi(database, cart, tdb, track, title, boxed);
 else
     barChartCfgUiSelectEachBar(database, cart, tdb, track, title, boxed);