e6ffe8090a8306c0d0289508bac3411fd9663d93
max
  Tue Jan 24 15:53:23 2012 -0800
first working version  of t2gMarkerSnippets
diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index 7d50e30..df60a6f 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -12237,62 +12237,62 @@
     char *label = NULL;
     char *articleTable = t2gArticleTable(tg);
     if(!isEmpty(articleTable))
         {
         struct sqlConnection *conn = hAllocConn(database);
         safef(query, sizeof(query), "select title from %s where displayId = '%s'", articleTable, mapItemName);
         label = sqlQuickQuery(conn, query, title, sizeof(title));
         hFreeConn(&conn);
         }
     if(isEmpty(label))
         label = mapItemName;
     mapBoxHc(hvg, start, end, x, y, width, height, tg->track, mapItemName, label);
     }
 }
 
-char *splitPart(char* string, int index)
-/* splits string with | and returns part index (is there no easier way to do this?)*/
+char* t2gLastMarkerName;
+
+char *t2gMarkerItemName(struct track *tg, void *item)
+/* retrieve article count from extra field, and return
+ * side effect: save original name in global var for mapItem 
+ * Is this too hacky? No idea where I could save the original name otherwise... */
 {
-    char* name2;
-    name2 = cloneString(string);
-    char **parts = NULL;
-	AllocArray(parts, 2);
-    chopString(name2, "|", parts, 2);
-    return (char *)parts[index];
+struct bed *bed = item;
+char query[256];
+char *escName = sqlEscapeString(bed->name);
+safef(query, sizeof(query), "select matchCount from %s where name = '%s'", tg->table, escName);
+
+char *articleCount = NULL;
+struct sqlConnection *conn = hAllocConn(database);
+articleCount = sqlQuickString(conn, query);
+char* newName = catTwoStrings(articleCount, " articles");
+freeMem(articleCount);
+hFreeConn(&conn);
+t2gLastMarkerName = bed->name;
+return newName;
 }
 
 static void t2gMarkerMapItem(struct track *tg, struct hvGfx *hvg, void *item,
 				char *itemName, char *mapItemName, int start, int end,
 				int x, int y, int width, int height) 
-/* split item name on | and show second part as mouse over*/
+/* use previously saved itemName for the mouseOver */
 {
-char* itemNamePart2 = splitPart(itemName, 1);
-
 genericMapItem(tg, hvg, item,
-		    itemNamePart2, mapItemName, start, end,
+		    t2gLastMarkerName, mapItemName, start, end,
 		    x, y, width, height);
 }
 
-char *t2gMarkerItemName(struct track *tg, void *item)
-/* split item name on | and shows first part as name */
-{
-    struct bed *bed = item;
-
-    return splitPart(bed->name, 0);
-
-}
-
 static void t2gMethods(struct track *tg)
 {
 if (startsWith("t2gMarker", tg->table))
 {
     tg->mapItem = t2gMarkerMapItem;
     tg->itemName = t2gMarkerItemName;
 }
 else
 {
     tg->loadItems = t2gLoadItems;
     tg->mapItem = t2gMapItem;
 }
 }