8b044d5f4044e8450db06f21481249e95bec7f85 kate Wed Mar 3 17:07:11 2021 -0800 Multi-region link on hgTrackUi now turns track on in dense if it was hidden. Responding to QA note 22. refs #26385 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 99d609f..4f30426 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -337,31 +337,31 @@ } char id[256]; safef(id, sizeof id, "div_%s_link", tdb->track); printf("%s<A id='%s' HREF='#a_meta_%s' " "title='Show metadata details...'>%s<img src='../images/downBlue.png'/></A>", (embeddedInText?" ":"<P>"),id,tdb->track, (title?title:"")); jsOnEventByIdF("click", id, "return metadataShowHide(\"%s\",%s,true);", tdb->track, showLongLabel?"true":"false"); printf("<DIV id='div_%s_meta' style='display:none;'>%s</div>",tdb->track, metadataAsHtmlTable(db,tdb,showLongLabel,FALSE)); return TRUE; } /* Multi-region UI */ -boolean makeMultiRegionLink(char *db, struct trackDb *tdb) +boolean makeMultiRegionLink(char *db, struct trackDb *tdb, struct cart *cart) /* Make a link to launch browser in multi-region custom URL mode, based on * track setting. This includes creating a custom track displaying the regions. * The link switches to exit multi-region if browser is already in multi-region mode * based on regions defined for this track. */ { char *regionUrl = trackDbSetting(tdb, MULTI_REGION_BED_URL); if (isEmpty(regionUrl)) return FALSE; // make custom track for regions, alternating colors // TODO: truncate CT name and label at word boundary // TODO: fix bedPackDense to work with multi-region // TODO: limit number of regions ? struct dyString *dsCustomText = dyStringCreate( @@ -507,54 +507,60 @@ hexBinaryString(hash, SHA_DIGEST_LENGTH, newSha1, (SHA_DIGEST_LENGTH + 1) * 2); char sha1File[1024]; safef(sha1File, sizeof sha1File, "%s.sha1", mrTn.forCgi); f = mustOpen(sha1File, "w"); mustWrite(f, newSha1, strlen(newSha1)); carefulClose(&f); char customHtml[1000]; safef(customHtml, sizeof customHtml, "<h2>Description</h2>\n" "<p>This custom track displays regions of interest for the " "<a href='../cgi-bin/hgTrackUi?db=%s&g=%s'><em>%s</em> track</a>.</p>", db, tdb->track, tdb->shortLabel); // TODO: support #padding in custom regions file +enum trackVisibility vis = + hTvFromString(cartUsualString(cart, tdb->track, hStringFromTv(tdb->visibility))); +if (vis == tvHide) + vis = tvDense; + printf("<p>"); printf("<a href='../cgi-bin/hgTracks?" "virtMode=1&" "virtModeType=customUrl&" "virtWinFull=on&" "virtShortDesc=%s&" "multiRegionsBedUrl=%s&" "%s=%s&" + "%s=%s&" "%s=%s'>" "Display regions of interest (%d)</a>", - tdb->track, cgiEncode(regionFile), + tdb->track, cgiEncode(regionFile), tdb->track, hStringFromTv(vis), CT_CUSTOM_DOC_TEXT_VAR, cgiEncode(customHtml), CT_CUSTOM_TEXT_VAR, cgiEncode(dyStringCannibalize(&dsCustomText)), regionCount); printf(" in multi-region view (custom regions mode)"); printf(" "); printf("<a href=\"../goldenPath/help/multiRegionHelp.html\" target=_blank>(Help)</a>\n"); printf("</p>"); return TRUE; } -void extraUiLinks(char *db,struct trackDb *tdb) +void extraUiLinks(char *db, struct trackDb *tdb, struct cart *cart) // Show metadata, and downloads, schema links where appropriate { -makeMultiRegionLink(db, tdb); +makeMultiRegionLink(db, tdb, cart); struct slPair *pairs = trackDbMetaPairs(tdb); if (pairs != NULL) printf("<b>Metadata:</b><br>%s\n", pairsAsHtmlTable( pairs, tdb, FALSE, FALSE)); else if (!tdbIsComposite(tdb) && !trackHubDatabase(db) && (metadataForTable(db, tdb, NULL) != NULL)) printf("<b>Metadata:</b><br>%s\n", metadataAsHtmlTable(db, tdb, FALSE, FALSE)); boolean schemaLink = trackDataAccessible(db, tdb); boolean downloadLink = (trackDbSetting(tdb, "wgEncode") != NULL && !tdbIsSuperTrack(tdb)); int links = 0; if (schemaLink) links++; if (downloadLink) links++;