f1739937876c7272e5ceea0b6c8a421598e94e00 max Mon Mar 13 06:42:49 2023 -0700 bringing back the default tracks and default order buttons, refs #30809 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index 8c35fb7..c276684 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -8233,30 +8233,36 @@ char *cfgName = catTwoStrings(cfgPrefix,"_html"); char *html = cfgOption(cfgName); if (html) puts(html); } void printShortcutButtons(struct cart *cart, bool hasCustomTracks, bool revCmplDisp, bool multiRegionButtonTop) /* Display bottom control panel. */ { if (isSearchTracksSupported(database,cart)) { cgiMakeButtonWithMsg(TRACK_SEARCH, TRACK_SEARCH_BUTTON,TRACK_SEARCH_HINT); } hPrintf(" "); +hButtonWithMsg("hgt.reset", "default tracks","Display only default tracks"); +hPrintf(" "); +hButtonWithMsg("hgt.defaultImgOrder", "default order", + "Display current tracks in their default order"); + +hPrintf(" "); hButtonWithMsg("hgt.hideAll", "hide all","Hide all currently visible tracks"); hPrintf(" "); hPrintf("", hasCustomTracks ? CT_MANAGE_BUTTON_LABEL : CT_ADD_BUTTON_LABEL, hasCustomTracks ? "Manage your custom tracks" : "Add your own custom tracks"); jsOnEventById("click", "ct_add", "document.customTrackForm.submit(); return false;"); hPrintf(" "); hButtonWithMsg("hgTracksConfigPage", "configure","Configure image and track selection"); hPrintf(" "); if (!multiRegionButtonTop) { printMultiRegionButton(); @@ -9766,30 +9772,44 @@ { // save new highlight position to cart var char cartVar[1024]; safef(cartVar, sizeof cartVar, "%s.%s:%ld-%ld#%s", h->db, MULTI_REGION_VIRTUAL_CHROM_NAME, virtStart, virtEnd, h->hexColor); cartSetString(cart, "highlight", cartVar); } else { // erase the highlight cartvar if it has no overlap with the new virt chrom cartRemove(cart, "highlight"); } } } +static void setupTimeWarning() +/* add javascript that outputs a warning message if page takes too long to load */ +{ +char *maxTimeStr = cfgOption("warnSeconds"); +if (!maxTimeStr) + return; + +int maxTime = atoi(maxTimeStr); +struct dyString *dy = dyStringNew(150); +dyStringPrintf(dy, "$(document).ready( function() { hgtWarnTiming(%d)});\n", maxTime); +jsInline(dy->string); +dyStringFree(&dy); +} + void tracksDisplay() /* Put up main tracks display. This routine handles zooming and * scrolling. */ { char titleVar[256]; char *oldPosition = cartUsualString(cart, "oldPosition", ""); boolean findNearest = cartUsualBoolean(cart, "findNearest", FALSE); cartRemove(cart, "findNearest"); boolean positionIsVirt = FALSE; position = getPositionFromCustomTracks(); if (NULL == position) { position = cartGetPosition(cart, database, &lastDbPosCart); @@ -10261,30 +10281,31 @@ lastDbPosSaveCartSetting("lastVirtModeExtraState"); cartSetDbPosition(cart, database, lastDbPosCart); if (cartUsualBoolean(cart, "hgt.psOutput", FALSE)) handlePostscript(); else doTrackForm(NULL, NULL); boolean gotExtTools = extToolsEnabled(); setupHotkeys(gotExtTools); if (gotExtTools) printExtMenuData(chromName); if (recTrackSetsEnabled()) printRecTrackSets(); +setupTimeWarning(); } static void chromInfoTotalRow(int count, long long total, boolean hasAlias) /* Make table row with total number of sequences and size from chromInfo. */ { cgiSimpleTableRowStart(); cgiSimpleTableFieldStart(); printf("Total: %d", count); cgiTableFieldEnd(); cgiTableFieldStartAlignRight(); printLongWithCommas(stdout, total); puts("  "); cgiTableFieldEnd(); if (hasAlias) {