3846f517009c43abc65d227a4695645c9b5f3e8a braney Fri Feb 15 18:31:21 2013 -0800 changes necessary to support assembly hubs (#8072) diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 29d22a4..e331d33 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -25,30 +25,31 @@ #include "mdb.h" #include "web.h" #include "hPrint.h" #include "fileUi.h" #include "bigBed.h" #include "bigWig.h" #include "regexHelper.h" #include "vcfUi.h" #include "vcf.h" #include "errCatch.h" #include "samAlignment.h" #include "makeItemsItem.h" #include "bedDetail.h" #include "pgSnp.h" #include "memgfx.h" +#include "trackHub.h" #define SMALLBUF 256 #define MAX_SUBGROUP 9 #define ADD_BUTTON_LABEL "add" #define CLEAR_BUTTON_LABEL "clear" #define JBUFSIZE 2048 #ifdef BUTTONS_BY_CSS #define BUTTON_PM "<span class='pmButton' " \ "onclick=\"setCheckBoxesThatContain('%s',%s,true,'%s','','%s')\">%c</span>" #define BUTTON_DEF "<span class='pmButton' " \ "onclick=\"setCheckBoxesThatContain('%s',true,false,'%s','','%s'); " \ "setCheckBoxesThatContain('%s',false,false,'%s','_defOff','%s');\" " \ "style='width:56px;font-weight:normal; font-family:default;'>default</span>" #define DEFAULT_BUTTON(nameOrId,anc,beg,contains) \ @@ -131,31 +132,31 @@ if (browser == btIE || browser == btFF) upArrow = "↑"; // Note: the nested spans are so that javascript can determine position // and selectively display the link when appropriate printf("<span class='navUp' style='float:right; display:none'> " "<A HREF='#' TITLE='Return to top of page'>Top%s</A></span>",upArrow); } } boolean makeSchemaLink(char *db,struct trackDb *tdb,char *label) // Make a table schema link (if appropriate and then returns TRUE) { #define SCHEMA_LINKED "<A HREF=\"../cgi-bin/hgTables?db=%s&hgta_group=%s&hgta_track=%s" \ "&hgta_table=%s&hgta_doSchema=describe+table+schema\" " \ "TARGET=ucscSchema%s>%s</A>" -if (hTableOrSplitExists(db, tdb->table)) +if (!trackHubDatabase(db) && hTableOrSplitExists(db, tdb->table)) { char *tbOff = trackDbSetting(tdb, "tableBrowser"); if (isNotEmpty(tbOff) && sameString(nextWord(&tbOff), "off")) return FALSE; char *hint = " title='Open table schema in new window'"; if (label == NULL) label = " View table schema"; struct trackDb *topLevel = trackDbTopLevelSelfOrParent(tdb); printf(SCHEMA_LINKED, db, topLevel->grp, topLevel->track, tdb->table, hint, label); return TRUE; } return FALSE; } char *controlledVocabLink(char *file,char *term,char *value,char *title, char *label,char *suffix) @@ -275,34 +276,34 @@ const struct mdbObj *safeObj = metadataForTable(db,tdb,NULL); if (safeObj == NULL || safeObj->vars == NULL) return FALSE; printf("%s<A HREF='#a_meta_%s' onclick='return metadataShowHide(\"%s\",%s,true);' " "title='Show metadata details...'>%s<img src='../images/downBlue.png'/></A>", (embeddedInText?" ":"<P>"),tdb->track,tdb->track, showLongLabel?"true":"false", (title?title:"")); printf("<DIV id='div_%s_meta' style='display:none;'></div>",tdb->track); return TRUE; } void extraUiLinks(char *db,struct trackDb *tdb) // Show downlaods, schema and metadata links where appropriate { -boolean schemaLink = (!tdbIsDownloadsOnly(tdb) +boolean schemaLink = (!tdbIsDownloadsOnly(tdb) && !trackHubDatabase(db) && isCustomTrack(tdb->table) == FALSE) && (hTableOrSplitExists(db, tdb->table)); -boolean metadataLink = (!tdbIsComposite(tdb) +boolean metadataLink = (!tdbIsComposite(tdb) && !trackHubDatabase(db) && metadataForTable(db, tdb, NULL) != NULL); boolean downloadLink = (trackDbSetting(tdb, "wgEncode") != NULL && !tdbIsSuperTrack(tdb)); int links = 0; if (schemaLink) links++; if (metadataLink) links++; if (downloadLink) links++; if (links > 0) cgiDown(0.7); if (links > 1) printf("<table><tr><td nowrap>View table: "); @@ -7728,30 +7729,32 @@ return TRUE; } else if (trackDbSetting(tdb, "wgEncode") != NULL) { hPrintf("<a title='encode project' href='../ENCODE'><img height='16' width='16' " "src='../images/encodeThumbnail.jpg'></a>\n"); return TRUE; } return FALSE; } void printUpdateTime(char *database, struct trackDb *tdb, struct customTrack *ct) /* display table update time */ { +if (trackHubDatabase(database)) + return; /* have not decided what to do for a composite container */ if (tdbIsComposite(tdb)) return; struct sqlConnection *conn = NULL; char *tableName = NULL; if (isCustomTrack(tdb->track)) { if (ct) { conn = hAllocConn(CUSTOM_TRASH); tableName = ct->dbTableName; } } else if (startsWith("big", tdb->type)) { @@ -7905,31 +7908,31 @@ { struct asObject *asObj = NULL; if (tdbIsBigBed(tdb)) { char *fileName = tdbBigFileName(conn, tdb); asObj = bigBedFileAsObjOrDefault(fileName); freeMem(fileName); } // TODO: standardize to a wig as //else if (tdbIsBigWig(tdb)) // asObj = asObjFrombigBed(conn,tdb); else if (tdbIsBam(tdb)) asObj = bamAsObj(); else if (tdbIsVcf(tdb)) asObj = vcfAsObj(); -if (startsWithWord("makeItems", tdb->type)) +else if (startsWithWord("makeItems", tdb->type)) asObj = makeItemsItemAsObj(); else if (sameWord("bedDetail", tdb->type)) asObj = bedDetailAsObj(); else if (sameWord("pgSnp", tdb->type)) asObj = pgSnpAsObj(); else { if (sqlTableExists(conn, "tableDescriptions")) { char query[256]; char *asText = NULL; // Try unsplit table first. safef(query, sizeof(query), "select autoSqlDef from tableDescriptions where tableName='%s'",tdb->table);