72d76bf74a9926239a7638871766d219206c8453
larrym
  Thu Mar 15 20:24:48 2012 -0700
support year filter in t2gUi
diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index 3bc97c1..ce2efa6 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -1878,37 +1878,62 @@
 puts(" (Comma separated list, i.e.: GT,AG for splice sites)");
 puts("<P>");
 cgiMakeCheckBox(MOTIF_COMPLEMENT, complementsToo);
 puts("&nbsp;<B>Show reverse complements of motifs also</B>");
 puts("<P>Options for slides and presentations:");
 puts("<P><B>Title:&nbsp;</B>");
 cgiMakeTextVar(titleVar, title, 30);
 puts("<P><B>Display:&nbsp;</B>");
 cgiMakeCheckBox(BASE_SHOWASM, showAsm);
 puts("&nbsp;<B>assembly&nbsp;</B>");
 cgiMakeCheckBox(BASE_SHOWPOS, showPos);
 puts("&nbsp;<B>position</B>");
 
 }
 
+#define NUM_YEARS 30  // similar to google scholar, which goes back to 20 years
+
 void t2gUi(struct trackDb *tdb)
 /* UI for t2g match track */
 {
 char* keywordTag = "t2gKeywords";
+char* yearTag = "t2gYear";
 char *keywords = cartUsualString(cart, keywordTag, "");
+char *text[NUM_YEARS + 1];
+char *values[NUM_YEARS + 1];
+char *yearFilter = cartUsualString(cart, yearTag, "anytime");
+int i;
 puts("<P><B>Filter articles by keywords in abstract, title or authors:</B>");
 cgiMakeTextVar(keywordTag, keywords, 45);
+text[0] = "anytime";
+values[0] = "anytime";
+time_t nowTime = time(NULL);
+struct tm *tm = localtime(&nowTime);
+int nowYear = 1900 + tm->tm_year;
+
+for(i = 0; i < NUM_YEARS; i++)
+    {
+    char buf[20];
+    safef(buf, sizeof(buf), "since %d", nowYear - i);
+    text[i + 1] = cloneString(buf);
+    safef(buf, sizeof(buf), "%d", nowYear - i);
+    values[i + 1] = cloneString(buf);
+    }
+
+puts("</P><P>\n");
+cgiDropDownWithTextValsAndExtra(yearTag, text, values, NUM_YEARS + 1, yearFilter, NULL);
+puts("</P>\n");
 }
 
 
 void oligoMatchUi(struct trackDb *tdb)
 /* UI for oligo match track */
 {
 char *oligo = cartUsualString(cart, oligoMatchVar, oligoMatchDefault);
 puts("<P><B>Short (2-30 base) sequence:</B>");
 cgiMakeTextVar(oligoMatchVar, oligo, 45);
 }
 
 void cutterUi(struct trackDb *tdb)
 /* UI for restriction enzyme track */
 {
 char *enz = cartUsualString(cart, cutterVar, cutterDefault);