b7580ea8067d0dbd917f7024015f9f5a4e958838 max Tue Apr 23 17:38:49 2013 -0700 adding publisher filter to pubs trackui diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c index 1508575..cb41e4c 100644 --- src/hg/hgTrackUi/hgTrackUi.c +++ src/hg/hgTrackUi/hgTrackUi.c @@ -1990,77 +1990,88 @@ cgiMakeCheckBox(BASE_SHOWASM, showAsm); puts(" <B>assembly </B>"); cgiMakeCheckBox(BASE_SHOWPOS, showPos); puts(" <B>position</B>"); } void pubsUi(struct trackDb *tdb) /* UI for pubs match track */ { #define NUM_YEARS 15 // similar to google scholar, which goes back to 20 years #define PUBS_KEYWORDS_TAG "pubsKeywords" #define PUBS_YEAR_TAG "pubsYear" #define PUBS_COLORBY_TAG "pubsColorBy" +#define PUBS_PUBFILT_TAG "pubsPublisher" // get current set filters from cart char *keywords = cartUsualStringClosestToHome(cart, tdb, FALSE, PUBS_KEYWORDS_TAG, ""); char *yearFilter = cartUsualStringClosestToHome(cart, tdb, FALSE, PUBS_YEAR_TAG, "anytime"); char *colorBy = cartUsualStringClosestToHome(cart, tdb, FALSE, PUBS_COLORBY_TAG, "topic"); +char *pubFilter = cartUsualStringClosestToHome(cart, tdb, FALSE, PUBS_PUBFILT_TAG, "all"); // print keyword input box puts("<P><B>Filter articles by keywords in abstract, title or authors:</B>"); char cgiVar[128]; safef(cgiVar,sizeof(cgiVar),"%s.%s",tdb->track,PUBS_KEYWORDS_TAG); cgiMakeTextVar(cgiVar, keywords, 45); -// generate strings like "since <year>" for last 30 years +// generate strings like "since <year>" for last 15 years char *text[NUM_YEARS + 1]; char *values[NUM_YEARS + 1]; text[0] = "anytime"; values[0] = "anytime"; time_t nowTime = time(NULL); struct tm *tm = localtime(&nowTime); int nowYear = 1900 + tm->tm_year; int i; 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); } // print dropdown box with "since <year>" lines puts("</P><P>\n"); printf("<B>Show articles published </B>"); safef(cgiVar,sizeof(cgiVar),"%s.%s",tdb->track,PUBS_YEAR_TAG); cgiDropDownWithTextValsAndExtra(cgiVar, text, values, NUM_YEARS + 1, yearFilter, NULL); -// print dropdown box with "since <year>" lines +// print dropdown box with "filter by publisher" lines +puts("</P><P>\n"); +printf("<B>Only articles published by </B>"); +char *publText[5] = {"all publishers", "Elsevier", "PubmedCentral", "Nature Publ. Group", "FASEB"}; +char *publVals[5] = {"all", "elsevier", "pmc", "npg", "faseb"}; +safef(cgiVar,sizeof(cgiVar),"%s.%s",tdb->track,PUBS_PUBFILT_TAG); +cgiDropDownWithTextValsAndExtra(cgiVar, publText, publVals, 5, pubFilter, NULL); +puts("</P>\n"); + +// print dropdown box with "color matches" lines puts("</P><P>\n"); printf("<B>Color sequence matches by </B>"); char *colorText[3] = {"topic", "impact of journal", "year"}; char *colorVals[3] = {"topic", "impact", "year"}; safef(cgiVar,sizeof(cgiVar),"%s.%s",tdb->track,PUBS_COLORBY_TAG); cgiDropDownWithTextValsAndExtra(cgiVar, colorText, colorVals, 3, colorBy, 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); puts("<P><B>Filter display by enzymes (separate with commas):</B><BR>"); cgiMakeTextVar(cutterVar, enz, 100);