b56aaf37a70d531c514f7ba88f3c6a73888b527e
angie
  Mon Nov 20 11:59:22 2017 -0800
hgTracks/simpleTracks.c's lookupRefNames ignores subtrack-level label settings, so don't display the refGene label settings when it's a subtrack.  Also fixed up omim-detection logic for ncbiRefSeqLink.  refs #19318

diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index ad96d13..b5eff0a 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -1838,52 +1838,57 @@
 void rgdGene2UI(struct trackDb *tdb)
 /* Put up rgdGene2 gene ID track controls, with checkboxes */
 {
 /* Put up label line  - boxes for gene and accession. */
 printf("<B>Label:</B> ");
 labelMakeCheckBox(tdb, "gene", "gene", FALSE);
 labelMakeCheckBox(tdb, "acc", "accession", FALSE);
 printf("<BR>\n");
 
 baseColorDrawOptDropDown(cart, tdb);
 }
 
 void refGeneUI(struct trackDb *tdb)
 /* Put up refGene or xenoRefGene gene ID track controls, with checkboxes */
 {
+// Show label options only if top-level track; ncbiRefSeqUI (for refSeqComposite) shows
+// label options for all subtracks.
+if (tdb->parent == NULL)
+    {
     /* Figure out if OMIM database is available. */
     int omimAvail = 0;
     if (sameString(tdb->track, "refGene"))
         {
         struct sqlConnection *conn = hAllocConn(database);
         char query[128];
         sqlSafef(query, sizeof(query), "select r.omimId from %s r, refGene where r.mrnaAcc = refGene.name and r.omimId != 0 limit 1", refLinkTable);
         omimAvail = sqlQuickNum(conn, query);
         hFreeConn(&conn);
         }
 
     /* Put up label line  - boxes for gene, accession or maybe OMIM. */
     printf("<BR><B>Label:</B> ");
     labelMakeCheckBox(tdb, "gene", "gene", TRUE);
     labelMakeCheckBox(tdb, "acc", "accession", FALSE);
     if (omimAvail != 0)
         {
         char sym[32];
         safef(sym, sizeof(sym), "omim%s", cartString(cart, "db"));
         labelMakeCheckBox(tdb, sym, "OMIM ID", FALSE);
         }
     printf("<BR>\n");
+    }
 
 /* Put up noncoding option and codon coloring stuff. */
 hideNoncodingOpt(tdb);
 baseColorDrawOptDropDown(cart, tdb);
 printf("<BR>\n");
 
 // let the user choose to see the track in wiggle mode
 wigOption(cart, tdb->track, tdb->shortLabel, tdb);
 }
 
 void transMapUI(struct trackDb *tdb)
 /* Put up transMap-specific controls for table-based transMap */
 {
 // FIXME: this can be deleted once table-based transMap is no longer supported.
 printf("<B>Label:</B> ");
@@ -1898,53 +1903,45 @@
 }
 
 void retroGeneUI(struct trackDb *tdb)
 /* Put up retroGene-specific controls */
 {
 printf("<B>Label:</B> ");
 labelMakeCheckBox(tdb, "gene", "gene", FALSE);
 labelMakeCheckBox(tdb, "acc", "accession", FALSE);
 
 baseColorDrawOptDropDown(cart, tdb);
 }
 
 void ncbiRefSeqUI(struct trackDb *tdb)
 /* Put up gene ID track controls */
 {
-struct sqlConnection *conn = hAllocConn(database);
-char query[256];
-char *omimAvail = NULL;
-if (sqlTableExists(conn, "kgXref"))
-    {
-    sqlSafef(query, sizeof(query), "select kgXref.kgID from kgXref,%s r where kgXref.refseq = r.mrnaAcc and r.omimId != 0 limit 1", refLinkTable);
-    omimAvail = sqlQuickString(conn, query);
-    }
-else if (sqlTableExists(conn, "ncbiRefSeqLink"))
-    omimAvail = "yes";
-
-char varName[64];
+char varName[256];
 safef(varName, sizeof(varName), "%s.label", tdb->track);
 printf("<br><b>Label:</b> ");
 labelMakeCheckBox(tdb, "gene", "gene symbol", TRUE);
 labelMakeCheckBox(tdb, "acc", "accession", FALSE);
+struct sqlConnection *conn = hAllocConn(database);
+boolean omimAvail = sqlQuickNum(conn,
+                                NOSQLINJ"select 1 from ncbiRefSeqLink where omimId != 0 limit 1");
 if (omimAvail)
     {
     char sym[32];
     safef(sym, sizeof(sym), "omim%s", cartString(cart, "db"));
     labelMakeCheckBox(tdb, sym, "OMIM ID", FALSE);
     }
-printf("&nbsp;&nbsp;(select gene symbol(s) to display)<br>");
+hFreeConn(&conn);
 }
 
 void ensGeneUI(struct trackDb *tdb)
 /* Put up Ensembl Gene track-specific controls */
 {
 ensGeneIdConfig(tdb);
 printf("<BR>\n");
 
 /* Put up codon coloring stuff. */
 baseColorDrawOptDropDown(cart, tdb);
 }
 
 void vegaGeneUI(struct trackDb *tdb)
 /* Put up Vega Gene track-specific controls */
 {