90aa101ee4f9e47a77b2eac496eca213a787d513
jcasper
  Mon Jul 22 01:53:32 2019 -0700
Adding table browser support for hic tracks, refs #22316

diff --git src/hg/lib/hicUi.c src/hg/lib/hicUi.c
index a615188..69c67e1 100644
--- src/hg/lib/hicUi.c
+++ src/hg/lib/hicUi.c
@@ -54,30 +54,57 @@
 char cartVar[1024];
 safef(cartVar, sizeof(cartVar), "%s.%s", track, HIC_RESOLUTION);
 char *selected = cartNonemptyString(cart, cartVar);
 int sanityCheck = sameOk(selected, "Auto");
 int i;
 for (i=0; i<meta->nRes; i++)
     {
     if (sameOk(selected, meta->resolutions[i]))
         sanityCheck = 1;
     }
 if (!sanityCheck)
     selected = "Auto";
 return selected;
 }
 
+int hicUiFetchResolutionAsInt(struct cart *cart, char *track, struct hicMeta *meta, int windowSize)
+/* Return the current resolution selection as an integer.  If there is no selection, or if "Auto"
+ * has been selected, return the largest available value that still partitions the window into at
+ * least 5000 bins. */
+{
+char *resolutionString = hicUiFetchResolution(cart, track, meta);
+int result;
+if (sameString(resolutionString, "Auto"))
+    {
+    int idealRes = windowSize/5000;
+    char *autoRes = meta->resolutions[meta->nRes-1];
+    int i;
+    for (i=meta->nRes-1; i>= 0; i--)
+        {
+        if (atoi(meta->resolutions[i]) < idealRes)
+            {
+            autoRes = meta->resolutions[i];
+            break;
+            }
+        }
+    result = atoi(autoRes);
+    }
+else
+    result = atoi(resolutionString);
+return result;
+}
+
 void hicUiResolutionMenu(struct cart *cart, char *track, struct hicMeta *meta)
 /* Draw a menu to select which binSize to use for fetching data */
 {
 char cartVar[1024];
 char autoscale[10] = "Auto";
 printf("<b>Resolution:</b> ");
 safef(cartVar, sizeof(cartVar), "%s.%s", track, HIC_RESOLUTION);
 char **menu = NULL;
 AllocArray(menu, meta->nRes+1);
 char **values = NULL;
 AllocArray(values, meta->nRes+1);
 menu[0] = autoscale;
 values[0] = autoscale;
 int i;
 for (i=1; i<meta->nRes+1; i++)