0dc3dba8c97201b69523bbcf01b4c19b17fce05a braney Fri Oct 10 13:09:38 2025 -0700 ongoing work on quickLift diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index e6ee78769c1..0c0b5730e2d 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -8692,30 +8692,33 @@ { char *paraLoadTimeoutStr = cartOptionalString(cart, "parallelFetch.timeout"); if (paraLoadTimeoutStr == NULL) paraLoadTimeoutStr = cfgOptionDefault("parallelFetch.timeout", "90"); // wait up to default 90 seconds. unsigned paraLoadTimeout = sqlUnsigned(paraLoadTimeoutStr); return paraLoadTimeout; } void doTrackForm(char *psOutput, struct tempName *ideoTn) /* Make the tracks display form with the zoom/scroll buttons and the active * image. If the ideoTn parameter is not NULL, it is filled in if the * ideogram is created. */ { +#ifdef GRAPH_BUTTON_ON_QUICKLIFT +int graphCount = 0; +#endif int disconCount = 0; struct group *group; struct track *track; char *freezeName = NULL; boolean hideAll = cgiVarExists("hgt.hideAll"); boolean hideTracks = cgiOptionalString( "hideTracks") != NULL; boolean defaultTracks = cgiVarExists("hgt.reset"); boolean showedRuler = FALSE; boolean showTrackControls = cartUsualBoolean(cart, "trackControlsOnMain", TRUE); boolean multiRegionButtonTop = cfgOptionBooleanDefault(MULTI_REGION_CFG_BUTTON_TOP, TRUE); long thisTime = 0, lastTime = 0; basesPerPixel = ((float)virtWinBaseCount) / ((float)fullInsideWidth); zoomedToBaseLevel = (virtWinBaseCount <= fullInsideWidth / tl.mWidth); zoomedToCodonLevel = (ceil(virtWinBaseCount/3) * tl.mWidth) <= fullInsideWidth; @@ -9647,31 +9650,31 @@ struct trackRef *tr; /* check if group section should be displayed */ char *otherState; char *indicator; char *indicatorImg; boolean isOpen = !isCollapsedGroup(group); collapseGroupGoodies(isOpen, TRUE, &indicatorImg, &indicator, &otherState); hPrintf(""); cg->rowOpen = TRUE; if (group->errMessage) hPrintf("",MAX_CONTROL_COLUMNS); else if (startsWith("Hub", group->label)) hPrintf("",MAX_CONTROL_COLUMNS); - else if (startsWith("Quicklift", group->label)) + else if (startsWith("QuickLift", group->label)) hPrintf("",MAX_CONTROL_COLUMNS); else hPrintf("",MAX_CONTROL_COLUMNS); hPrintf("
"); hPrintf("\n",group->name); char idText[256]; safef(idText, sizeof idText, "%s_button", group->name); hPrintf("\"%s\"  ", idText, indicatorImg, indicator,isOpen?"Collapse":"Expand"); jsOnEventByIdF("click", idText, "return vis.toggleForGroup(this, '%s');", group->name); if (isHubTrack(group->name)) { @@ -9717,30 +9720,36 @@ } hPrintf(" ", group->name); safef(idText, sizeof idText, "%s_%d_disconn", hubName, disconCount); disconCount++; hPrintf("\n", idText); jsOnEventByIdF("click", idText, "document.disconnectHubForm.elements['hubId'].value='%s';" "document.disconnectHubForm.submit();return true;", hubName + strlen(hubTrackPrefix)); +#ifdef GRAPH_BUTTON_ON_QUICKLIFT + safef(idText, sizeof idText, "%s_%d_graph", hubName, graphCount); + graphCount++; + hPrintf("\n", idText); +#endif } hPrintf("\n"); hPrintf("
\n"); controlGridEndRow(cg); /* Base Position track goes into map group, which will always exist. */ if (!showedRuler && sameString(group->name, "map") ) { char *url = trackUrl(RULER_TRACK_NAME, chromName); showedRuler = TRUE; myControlGridStartCell(cg, isOpen, group->name, FALSE);