src/hg/lib/hgFind.c 1.229

1.229 2010/05/18 20:06:39 kent
Further work adapting hgFind to separate track and table names.
Index: src/hg/lib/hgFind.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/hgFind.c,v
retrieving revision 1.228
retrieving revision 1.229
diff -b -B -U 4 -r1.228 -r1.229
--- src/hg/lib/hgFind.c	18 May 2010 18:58:20 -0000	1.228
+++ src/hg/lib/hgFind.c	18 May 2010 20:06:39 -0000	1.229
@@ -1238,8 +1238,9 @@
 {
 fprintf(f, "%s", pos->description);
 }
 
+#ifdef OLD
 static void makeGbTrackTableName(char *db, char *tableName, size_t tnSize, char *base)
 /* Now we have to watch out for scaffold-based browsers where 
  * the track is all_{mrna,est} not {mrna,est}. */
 {
@@ -1250,8 +1251,9 @@
     safef(tableName, tnSize, "%s", base);
 else
     safef(tableName, tnSize, "all_%s", base);
 }
+#endif /* OLD */
 
 char *hCarefulTrackOpenVis(char *db, char *trackName)
 /* If track is already in full mode, return full; otherwise, return
  * hTrackOpenVis. */
@@ -1310,8 +1312,9 @@
     if (hti && hti->isSplit)
 	tableName += 4;
     }
 table->name = cloneString(tableName);
+char *trackName = hGetTrackForTable(db, table->name);
 slSort(&pslList, pslCmpScore);
 for (psl = pslList; psl != NULL; psl = psl->next)
     {
     struct hgPos *pos;
@@ -1323,9 +1326,9 @@
     pos->name = cloneString(psl->qName);
     pos->browserName = cloneString(psl->qName);
     dyStringPrintf(dy, "<A HREF=\"%s%cposition=%s&%s=%s",
 		   hgAppName, hgAppCombiner, hgPosBrowserRange(pos, NULL),
-		   tableName, hCarefulTrackOpenVis(db, tableName));
+		   trackName, hCarefulTrackOpenVis(db, trackName));
     if (ui != NULL)
 	dyStringPrintf(dy, "&%s", ui);
     dyStringPrintf(dy, "%s\">", hgp->extraCgi);
     dyStringPrintf(dy, "%5d  %5.1f%%  %9s     %s %9d %9d  %8s %5d %5d %5d</A>",
@@ -1647,16 +1650,11 @@
 		       hgAppName, hgAppCombiner, acc);
         }
     else
         {
-	char tableName[64];
-	if (isXeno)
-	    safef(tableName, sizeof(tableName), "xenoMrna");
-	else
-	    makeGbTrackTableName(db, tableName, sizeof(tableName), "mrna");
         /* display mRNA details page -- need to add dummy CGI variables*/
         dyStringPrintf(dy, "<A HREF=\"%s%cg=%s&i=%s&c=0&o=0&l=0&r=0",
-		       hgcName(), hgAppCombiner, tableName, acc);
+		       hgcName(), hgAppCombiner, mrnaTable, acc);
         }
     if (ui != NULL)
         dyStringPrintf(dy, "&%s", ui);
     dyStringPrintf(dy, "%s\">", 
@@ -1713,15 +1711,9 @@
 			isXeno ? "Non-" : "", organism, 
 			aligns ?  "A" : "Una");
     freeMem(organism);
     table->description = cloneString(title);
-    if (isXeno)
-	table->name = cloneString("xenoMrna");
-    else
-	{
-	struct hTableInfo *hti = hFindTableInfo(db, NULL, "mrna");
-	table->name = cloneString((hti && hti->isSplit) ? "mrna" : "all_mrna");
-	}
+    table->name = cloneString(mrnaTable);
     table->htmlOnePos = mrnaKeysHtmlOnePos;
     slAddHead(&hgp->tableList, table);
     }
 freeDyString(&dy);
@@ -2411,12 +2403,13 @@
     webStart(cart, db, "Select Position");
 
 for (table = hgp->tableList; table != NULL; table = table->next)
     {
-    char *vis = hCarefulTrackOpenVis(db, table->name);
-    char *parent = hGetParent(db, table->name);
     if (table->posList != NULL)
 	{
+	char *parent = hGetParent(db, table->name);
+	char *trackName = hGetTrackForTable(db, table->name);
+	char *vis = hCarefulTrackOpenVis(db, trackName);
 	boolean excludeTable = FALSE;
 	if (table->htmlStart) 
 	    table->htmlStart(table, f);
 	else
@@ -2437,9 +2430,9 @@
 		fprintf(f, "%s&", extraCgi);
 		if (parent)
 		    fprintf(f, "%s=%s&", parent, vis);
 		else
-		    fprintf(f, "%s=%s&", table->name, vis);
+		    fprintf(f, "%s=%s&", trackName, vis);
 		fprintf(f, "hgFind.matches=%s,\">", encMatches);
 		htmTextOut(f, pos->name);
 		fprintf(f, " at %s</A>", range);
 		desc = pos->description;