2ab3a960e1a685f693b6e26d95dae89059784380
chinhli
  Thu Jan 3 21:43:18 2013 -0800
Finished redmine track #9629 ExonJunction Primers (qPCR Primers) track.
diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index aca2391..7cab8d5 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -23873,40 +23873,55 @@
 else
     {
     table = ct->dbTableName;
     conn = hAllocConn(CUSTOM_TRASH);
     bedPart = ct->fieldCount - 2;
     /* header handled by custom track handler */
     }
 
 /* postion, band, genomic size */
 escName = sqlEscapeString(itemName);
 safef(query, sizeof(query),
       "select * from %s where chrom = '%s' and chromStart = %d and chromEnd = %d and name = '%s'", table, chrom, start, end, escName);
 sr = sqlGetResult(conn, query);
 if ((row = sqlNextRow(sr)) != NULL)
     {
+    if (sameString("exonJunctionPrimers", table))
+        {
+        char *url;
+        url = tdb->url;
+        r = bedDetailLoadWithGaps(row, bedPart+4);
+        bedPrintPos((struct bed*)r, bedPart, tdb);
+        if ((r->id != NULL) && (r->description != NULL) && (url != NULL))
+            {
+            printf("<B>%s: </B>", r->description);
+            printf("<A HREF=\"%s%s\" target=_blank>%s</A><BR>",url, r->id, r->id);
+            }
+        } 
+    else 
+        {
     r = bedDetailLoadWithGaps(row, bedPart+2);
     bedPrintPos((struct bed*)r, bedPart, tdb);
     if (r->id != NULL)
         {
         printf("<B>ID:</B> %s <BR>\n", r->id);
         printCustomUrl(tdb, r->id, TRUE);
         }
     if (r->description != NULL)
         printf("%s <BR>\n", r->description);
     }
+    }
 sqlFreeResult(&sr);
 /* do not print this for custom tracks, they do this later */
 if (ct == NULL)
     printTrackHtml(tdb);
 
 bedDetailFree(&r);
 freeMem(escName);
 hFreeConn(&conn);
 }
 
 struct trackDb *tdbForTableArg()
 /* get trackDb for track passed in table arg */
 {
 char *table = cartString(cart, "table");
 struct trackDb *tdb = hashFindVal(trackHash, table);
@@ -24005,30 +24020,37 @@
         printf(" (");
        printf("<A HREF=\"http://www.ncbi.nlm.nih.gov/sites/GeneTests/review/disease/%s?db=genetests&search_param=contains\" TARGET=_blank>%s</A>", diseaseName, diseaseName);
        printf(")");
         } else {
           printf(", ");
        printf("<A HREF=\"http://www.ncbi.nlm.nih.gov/books/n/gene/%s\" TARGET=_blank><B>%s</B></A>", grShort, grShort);
        printf(" (");
        printf("<A HREF=\"http://www.ncbi.nlm.nih.gov/sites/GeneTests/review/disease/%s?db=genetests&search_param=contains\" TARGET=_blank>%s</A>", diseaseName, diseaseName);
        printf(")");
         }
      }
      printf("<BR>");
      sqlFreeResult(&sr);
 } /* end of prGRShortRefGene */
 
+void doQPCRPrimers(struct trackDb *tdb, char *itemName)
+/* Put up page for QPCRPrimers. */
+{
+genericHeader(tdb, itemName);
+doBedDetail(tdb, NULL, itemName);
+} /* end of doQPCRPrimers */
+
 void doMiddle()
 /* Generate body of HTML. */
 {
 char *track = cartString(cart, "g");
 char *item = cartOptionalString(cart, "i");
 char *parentWigMaf = cartOptionalString(cart, "parentWigMaf");
 struct trackDb *tdb = NULL;
 
 
 if (hIsGisaidServer())
     {
     validateGisaidUser(cart);
     }
 
 /*	database and organism are global variables used in many places	*/
@@ -25221,30 +25243,35 @@
     {
     doBedDetail(tdb, NULL, item);
     }
 else if (startsWith("numtS", table))
     {
     doNumtS(tdb, item);
     }
 else if (startsWith("cosmic", table))
     {
     doCosmic(tdb, item);
     }
 else if (sameString("geneReviews", table))
     {
     doGeneReviews(tdb, item);
     }
+else if (startsWith("exonJunctionPrimers", table))
+    {
+    doQPCRPrimers(tdb, item);
+    }
+
 else if (tdb != NULL)
     {
     genericClickHandler(tdb, item, NULL);
     }
 else
     {
     cartWebStart(cart, database, "%s", track);
     printf("Sorry, clicking there doesn't do anything yet (%s).", track);
     }
 /* End of 1000+ line dispatch on table involving 100+ if/elses. */
 
 cartHtmlEnd();
 }
 
 struct hash *orgDbHash = NULL;