3c59123bd4cf548ede9222155214a8bbe478fbbd kate Wed Jan 21 17:28:24 2015 -0800 Add link to table browser view of table in 'more info' section of clutser details (as we have no metadata link). refs #14353 diff --git src/hg/hgc/peakClusters.c src/hg/hgc/peakClusters.c index 316375b..ece91c9 100644 --- src/hg/hgc/peakClusters.c +++ src/hg/hgc/peakClusters.c @@ -103,32 +103,38 @@ link = metaVocabLink(fieldHash, fieldVal, fieldVal); } webPrintLinkCell(link != NULL ? link : fieldVal); } } static void printMetadataForTable(char *table) /* If table exists, _and_ tdb associated with it exists, print out * a metadata link that expands on click. Otherwise print "unavailable" */ { webPrintLinkCellStart(); struct trackDb *tdb = hashFindVal(trackHash, table); if (tdb == NULL) printf("%s info n/a", table); -else - compositeMetadataToggle(database, tdb, "metadata", TRUE, FALSE); +else if (!compositeMetadataToggle(database, tdb, "metadata", TRUE, FALSE)) + { + /* no metadata, but there is a track table to point TB at */ + struct trackDb *parent = trackDbTopLevelSelfOrParent(tdb); + printf("%s", + hgTablesName(), database, table, parent->grp, parent->track, table); + } webPrintLinkCellEnd(); } static void queryInputTrackTable(struct dyString *query, char *inputTrackTable, struct slName *fieldList) /* Construct query in dyString to return contents of inputTrackTable ordered appropriately */ { struct dyString *fields = dyStringNew(0); struct slName *field; sqlDyStringPrintf(query, "select tableName "); for (field = fieldList; field != NULL; field = field->next) sqlDyStringPrintfFrag(fields, ",%s", field->name); sqlDyStringPrintf(query, "%-s from %s", fields->string, inputTrackTable); if (fieldList != NULL) // skip leading comma @@ -162,31 +168,30 @@ { hash = metaHash; } if (vocabFile != NULL) *vocabFile = file; if (hash != NULL) *vocabHash = hash; } static void printPeakClusterInfo(struct trackDb *tdb, struct cart *cart, struct sqlConnection *conn, char *inputTrackTable, struct slName *fieldList, struct bed *cluster) /* Print an HTML table showing sources with hits in the cluster, along with signal. If cluster is NULL, show all sources assayed */ { - /* Make the SQL query to get the table and all other fields we want to show * from inputTrackTable. */ struct dyString *query = dyStringNew(0); queryInputTrackTable(query, inputTrackTable, fieldList); char *vocabFile = NULL; struct hash *vocabHash = NULL; getVocab(tdb, cart, &vocabFile, &vocabHash); int displayNo = 0; int fieldCount = slCount(fieldList); struct sqlResult *sr = sqlGetResult(conn, query->string); char **row; while ((row = sqlNextRow(sr)) != NULL) { @@ -294,31 +299,30 @@ void doPeakClusterListItemsAssayed() /* Put up a page that shows all experiments associated with a cluster track. */ { struct trackDb *clusterTdb = tdbForTableArg(); cartWebStart(cart, database, "List of items assayed in %s", clusterTdb->shortLabel); struct sqlConnection *conn = hAllocConn(database); char *inputTableFieldDisplay = trackDbSetting(clusterTdb, "inputTableFieldDisplay"); webPrintLinkTableStart(); if (inputTableFieldDisplay) { struct slName *fieldList = stringToSlNames(inputTableFieldDisplay); printClusterTableHeader(fieldList, FALSE, FALSE, FALSE); char *inputTrackTable = trackDbRequiredSetting(clusterTdb, "inputTrackTable"); printPeakClusterInfo(clusterTdb, cart, conn, inputTrackTable, fieldList, NULL); - //http://genome-test.cse.ucsc.edu/cgi-bin/hgTables?db=hg38&hgta_table=uwEnc2DnasePeaksWgEncodeEH000507 } else errAbort("Missing required trackDb setting %s for track %s", "inputTableFieldDisplay", clusterTdb->track); webPrintLinkTableEnd(); hFreeConn(&conn); } void doPeakClusters(struct trackDb *tdb, char *item) /* Display detailed info about a cluster of DNase peaks from other tracks. */ { int start = cartInt(cart, "o"); char *table = tdb->table; int rowOffset = hOffsetPastBin(database, seqName, table); char query[256];