70e9200a58ef4db6378dae703296d29188ae26b1 tdreszer Fri Dec 17 14:58:43 2010 -0800 Make use of fileUi.h macros and support hgFileUi CGI diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c index 861a77c..7a6d23e 100644 --- src/hg/hgTrackUi/hgTrackUi.c +++ src/hg/hgTrackUi/hgTrackUi.c @@ -2150,39 +2150,39 @@ jsMakeCheckboxGroupSetClearButton(cartVarName, FALSE); cgiMakeCheckboxGroupWithVals(cartVarName, labelArr, valueArr, refCount, checked, 4); hFreeConn(&conn); } void superTrackUi(struct trackDb *superTdb) /* List tracks in this collection, with visibility controls and UI links */ { struct trackDb *tdb; printf("<P><TABLE CELLPADDING=2>"); tdbSortPrioritiesFromCart(cart, &superTdb->subtracks); for (tdb = superTdb->subtracks; tdb != NULL; tdb = tdb->next) { if (!hTableOrSplitExists(database, tdb->table) && tdb->subtracks != NULL && trackDbLocalSetting(tdb, "compositeTrack") == NULL - && !sameWord(tdb->type,"downloadsOnly")) + && !tdbIsDownloadsOnly(tdb)) // NOTE: tdb if composite, is not yet populated with it's own subtracks! continue; printf("<TR>"); printf("<TD NOWRAP><A HREF=\"%s?%s=%u&c=%s&g=%s\">%s</A> </TD>", hgTrackUiName(), cartSessionVarName(), cartSessionId(cart), chromosome, cgiEncode(tdb->track), tdb->shortLabel); printf("<TD>"); - if (sameWord(tdb->type,"downloadsOnly")) + if (tdbIsDownloadsOnly(tdb)) printf(" "); else { enum trackVisibility tv = hTvFromString(cartUsualString(cart, tdb->track, hStringFromTv(tdb->visibility))); hTvDropDownClassVisOnly(tdb->track, tv, tdb->canPack, tv == tvHide ? "hiddenText" : "normalText", trackDbSetting(tdb, "onlyVisibility")); } printf("<TD>%s", tdb->longLabel); char *dataVersion = trackDbSetting(tdb, "dataVersion"); if (dataVersion) printf("  <EM><FONT COLOR=#666666 SIZE=-1>%s</FONT></EM>", dataVersion); printf("</TD></TR>"); @@ -2501,31 +2501,31 @@ struct trackDb *parentTdb = tdb->parent; if (parentTdb && !ajax) { char *encodedMapName = cgiEncode(parentTdb->track); printf(" <B style='font-family:serif; font-size:100%%;'>(<A HREF=\"%s?%s=%u&c=%s&g=%s\" title='Link to parent track'><IMG height=12 src='../images/ab_up.gif'>%s</A>)</B>", hgTrackUiName(), cartSessionVarName(), cartSessionId(cart), chromosome, encodedMapName, parentTdb->shortLabel); freeMem(encodedMapName); } puts("<BR><BR>"); if (ct && sameString(tdb->type, "maf")) tdb->canPack = TRUE; // Don't bother with vis controls for downloadsOnly -if (!sameWord(tdb->type,"downloadsOnly")) +if (!tdbIsDownloadsOnly(tdb)) { /* Display visibility menu */ if (tdbIsComposite(tdb) && multViewCount(tdb) > 0) printf("<B>Maximum display mode: </B>"); else printf("<B>Display mode: </B>"); if (tdbIsSuper(tdb)) { /* This is a supertrack -- load its members and show hide/show dropdown */ hTrackDbLoadSuper(database, tdb); superTrackDropDown(cart, tdb, 1); } else { /* normal visibility control dropdown */ @@ -2559,81 +2559,54 @@ cgiMakeHiddenVar(CT_SELECTED_TABLE_VAR, tdb->track); puts(" "); if (differentString(tdb->type, "chromGraph")) { char buf[256]; if(ajax) // reference to a separate form doesn't work in modal dialog, so change window.location directly. safef(buf, sizeof(buf), "window.location='%s?hgsid=%d&%s=%s';return false;", hgCustomName(), cartSessionId(cart), CT_SELECTED_TABLE_VAR, tdb->track); else safef(buf, sizeof(buf), "document.customTrackForm.submit();return false;"); cgiMakeOnClickButton(buf, "Update custom track"); } } } -if (!tdbIsSuper(tdb)) +if (!tdbIsSuper(tdb) && !tdbIsDownloadsOnly(tdb)) { // NAVLINKS - For pages w/ matrix, add Description, Subtracks and Downloads links if (trackDbSetting(tdb, "dimensions")) { printf("\n <span id='navDown' style='float:right; display:none;'>"); if (trackDbSetting(tdb, "wgEncode")) { printf(" "); makeDownloadsLink(database, tdb, trackHash); } char *downArrow = "⇓"; enum browserType browser = cgiBrowser(); if (browser == btIE || browser == btFF) downArrow = "↓"; printf(" <A HREF='#DISPLAY_SUBTRACKS' TITLE='Jump to subtracks section of page'>Subtracks%s</A>",downArrow); printf(" <A HREF='#TRACK_HTML' TITLE='Jump to description section of page'>Description%s</A>",downArrow); printf(" </span>"); } } printf("<BR>\n"); -// FIXME: Do something here for downloadOnly tracks. -if (sameWord(tdb->type,"downloadsOnly")) - { - filesDownloadUi(database,cart,tdb); - // FIXME: To be written: hgTracUi cgi which is downloads page. - // Should be lib code and 2 cgis: - // hgTrackUi when we have downloads ONLY, except for this on trackDb entry to point us there - // hgFilesUi when we have composite tracks AND download filess, so that hgTrackUi handles composite and offers link to hgFilesUi for downloads - /* - struct fileDb, contains mdbObj struct - get composite name (in trackDb) from cart: g=wgEncodeBroadHistone - // Use composite name to aquire list of mdbObjs where composite= and fileName exists - // Use trackDb settings to get at html description, long and short labels - // Acquire composite level setting for: - // experiment defining variables? - // major sort order? - // filterComposite stuff? Or is this defined in trackDb for pseudo-composite? - // Sort list of mdbObjs? - // Weed list of mdbObjects via fileExists. - // Get preamble from dir - // Make any selection controls (filterBoxes) Do we want a matrix? - // Make table class=sortable - // Get html from trackDb - // Recommend different color background to get the point across that these are files, not tracks - - */ - //makeDownloadsLink(database, tdb, trackHash); - //extraUiLinks(database,tdb, trackHash); - } +if (tdbIsDownloadsOnly(tdb)) + filesDownloadUi(database,cart,tdb); // Composites without tracks but with files to download are tdb->type: downloadsOnly else specificUi(tdb, ct, ajax); puts("</FORM>"); if (ct && !ajax) { /* hidden form for custom tracks CGI */ printf("<FORM ACTION='%s' NAME='customTrackForm'>", hgCustomName()); cartSaveSession(cart); cgiMakeHiddenVar(CT_SELECTED_TABLE_VAR, tdb->track); puts("</FORM>\n"); } if (ajax) return; @@ -2767,31 +2740,32 @@ track, database, chromosome, trackHash->elCount); errAbort("Can't find %s in track database %s chromosome %s", track, database, chromosome); } char *super = trackDbGetSupertrackName(tdb); if (super) { /* configured as a supertrack member in trackDb */ if (tdb->parent) { /* the supertrack is also configured, so use supertrack defaults */ tdbMarkAsSuperTrack(tdb->parent); trackDbSuperMemberSettings(tdb); } } -char *title = (tdbIsSuper(tdb) ? "Super-track Settings" : "Track Settings"); +char *title = (tdbIsSuper(tdb) ? "Super-track Settings" : + tdbIsDownloadsOnly(tdb) ? DOWNLOADS_ONLY_TITLE : "Track Settings"); if(cartOptionalString(cart, "ajax")) { // html is going to be used w/n a dialog in hgTracks.js so serve up stripped down html trackUi(tdb, ct, TRUE); cartRemove(cart,"ajax"); } else { cartWebStart(cart, database, "%s %s", tdb->shortLabel, title); trackUi(tdb, ct, FALSE); printf("<BR>\n"); webEnd(); } }