4a6269f418d09ffca133c40f0a138e115d0f895a
tdreszer
Mon Jul 23 11:55:38 2012 -0700
Make subtracks in dense use composite, not view label as noticed by gencode hub user Andrea. Also add a space between 'for' and '('. Can this really be justified?
diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 8f87ba6..5151590 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -374,32 +374,32 @@
/*print out a box along the DNA bases that toggles a cart variable
* "complement" to complement the DNA bases at the top by the ruler*/
{
struct dyString *ui = uiStateUrlPart(toggleGroup);
x = hvGfxAdjXW(hvg, x, width);
if (theImgBox && curImgTrack)
{
char link[512];
safef(link,sizeof(link),"%s?complement_%s=%d&%s", hgTracksName(), database,
!cartUsualBooleanDb(cart, database, COMPLEMENT_BASES_VAR, FALSE),ui->string);
imgTrackAddMapItem(curImgTrack,link,(char *)(message != NULL?message:NULL),x, y, x+width, y+height, NULL);
}
else
{
hPrintf("<AREA SHAPE=RECT COORDS=\"%d,%d,%d,%d\" ", x, y, x+width, y+height);
- hPrintf("HREF=\"%s?complement_%s=%d",
- hgTracksName(), database, !cartUsualBooleanDb(cart, database, COMPLEMENT_BASES_VAR, FALSE));
+ hPrintf("HREF=\"%s?complement_%s=%d", hgTracksName(), database,
+ !cartUsualBooleanDb(cart, database, COMPLEMENT_BASES_VAR, FALSE));
hPrintf("&%s\"", ui->string);
freeDyString(&ui);
if (message != NULL)
mapStatusMessage("%s", message);
hPrintf(">\n");
}
}
char *trackUrl(char *mapName, char *chromName)
/* Return hgTrackUi url; chromName is optional. */
{
char *encodedMapName = cgiEncode(mapName);
char buf[2048];
if(chromName == NULL)
safef(buf, sizeof(buf), "%s?%s=%u&g=%s", hgTrackUiName(), cartSessionVarName(), cartSessionId(cart), encodedMapName);
@@ -574,40 +574,40 @@
break;
}
}
}
void fillInStartEndBands(struct track *ideoTrack, char *startBand, char *endBand, int buffSize)
/* Loop through the bands and fill in the one that the current window starts
on and ends on. */
{
struct cytoBand *cb = NULL, *cbList = ideoTrack->items;
for(cb = cbList; cb != NULL; cb = cb->next)
{
/* If the start or end is encompassed by this band fill
it in. */
- if(winStart >= cb->chromStart &&
- winStart <= cb->chromEnd)
+ if (winStart >= cb->chromStart
+ && winStart <= cb->chromEnd)
{
safef(startBand, buffSize, "%s", cb->name);
}
/* End is > rather than >= due to odditiy in the
cytoband track where the starts and ends of two
bands overlaps by one. */
- if(winEnd > cb->chromStart &&
- winEnd <= cb->chromEnd)
+ if (winEnd > cb->chromStart
+ && winEnd <= cb->chromEnd)
{
safef(endBand, buffSize, "%s", cb->name);
}
}
}
void makeChromIdeoImage(struct track **pTrackList, char *psOutput,
struct tempName *ideoTn)
/* Make an ideogram image of the chromsome and our position in it. If the
* ideoTn parameter is not NULL, it is filled in if the ideogram is created. */
{
struct track *ideoTrack = NULL;
MgFont *font = tl.font;
char *mapName = "ideoMap";
struct hvGfx *hvg;
@@ -669,32 +669,32 @@
{
trashDirFile(ideoTn, "hgtIdeo", "hgtIdeo", ".png");
hvg = hvGfxOpenPng(ideoWidth, ideoHeight, ideoTn->forCgi, FALSE);
}
hvg->rc = revCmplDisp;
initColors(hvg);
ideoTrack->ixColor = hvGfxFindRgb(hvg, &ideoTrack->color);
ideoTrack->ixAltColor = hvGfxFindRgb(hvg, &ideoTrack->altColor);
hvGfxSetClip(hvg, 0, gfxBorder, ideoWidth, ideoTrack->height);
if (sameString(startBand, endBand))
safef(title, sizeof(title), "%s (%s)", chromName, startBand);
else
safef(title, sizeof(title), "%s (%s-%s)", chromName, startBand, endBand);
textWidth = mgFontStringWidth(font, title);
hvGfxTextCentered(hvg, 2, gfxBorder, textWidth, ideoTrack->height, MG_BLACK, font, title);
- ideoTrack->drawItems(ideoTrack, winStart, winEnd, hvg, textWidth+4, gfxBorder, ideoWidth-textWidth-4,
- font, ideoTrack->ixColor, ideoTrack->limitedVis);
+ ideoTrack->drawItems(ideoTrack, winStart, winEnd, hvg, textWidth+4, gfxBorder,
+ ideoWidth-textWidth-4, font, ideoTrack->ixColor, ideoTrack->limitedVis);
hvGfxUnclip(hvg);
/* Save out picture and tell html file about it. */
hvGfxClose(&hvg);
/* Finish map. */
if (!psOutput)
hPrintf("</MAP>\n");
}
hPrintf("<TABLE BORDER=0 CELLPADDING=0>");
if (doIdeo && !psOutput)
{
hPrintf("<TR><TD HEIGHT=5></TD></TR>");
hPrintf("<TR><TD><IMG SRC = \"%s\" BORDER=1 WIDTH=%d HEIGHT=%d USEMAP=#%s id='chrom'>",
ideoTn->forHtml, ideoWidth, ideoHeight, mapName);
hPrintf("</TD></TR>");
hPrintf("<TR><TD HEIGHT=5></TD></TR></TABLE>\n");
@@ -1298,32 +1298,31 @@
}
else
hvGfxTextRight(hvg, leftLabelX, y, leftLabelWidth - 1,
itemHeight, labelColor, font, name);
y += itemHeight;
}
}
break;
case tvDense:
if (isCenterLabelIncluded(track))
y += fontHeight;
/*draw y-value limits for 'sample' tracks.
* (always puts 0-100% range)*/
- if( track->subType == lfSubSample &&
- track->heightPer > (3 * fontHeight ) )
+ if (track->subType == lfSubSample && track->heightPer > (3 * fontHeight))
{
ymax = y - (track->heightPer / 2) + (fontHeight / 2);
ymin = y + (track->heightPer / 2) - (fontHeight / 2);
hvGfxTextRight(hvg, leftLabelX, ymin,
leftLabelWidth-1, track->lineHeight,
track->ixAltColor, font, minRangeStr );
hvGfxTextRight(hvg, leftLabelX, ymax,
leftLabelWidth-1, track->lineHeight,
track->ixAltColor, font, maxRangeStr );
}
hvGfxTextRight(hvg, leftLabelX, y, leftLabelWidth-1,
track->lineHeight, labelColor, font,
track->shortLabel);
y += track->height;
break;
@@ -1397,31 +1396,35 @@
static int doCenterLabels(struct track *track, struct track *parentTrack,
struct hvGfx *hvg, MgFont *font, int y)
/* Draw center labels. Return y coord */
{
if (track->limitedVis != tvHide)
{
if (isCenterLabelIncluded(track))
{
int trackPastTabX = (withLeftLabels ? trackTabWidth : 0);
int trackPastTabWidth = tl.picWidth - trackPastTabX;
int fontHeight = mgFontLineHeight(font);
int insideHeight = fontHeight-1;
boolean toggleDone = FALSE;
char *label = track->longLabel;
if (isCenterLabelConditional(track))
- label = track->tdb->parent->longLabel;
+ {
+ struct trackDb* tdbComposite = tdbGetComposite(track->tdb);
+ if (tdbComposite != NULL)
+ label = tdbComposite->longLabel;
+ }
Color labelColor = (track->labelColor ?
track->labelColor : track->ixColor);
hvGfxTextCentered(hvg, insideX, y+1, insideWidth, insideHeight,
labelColor, font, label);
if (track->nextItemButtonable && track->nextPrevItem && !tdbIsComposite(track->tdb))
{
if (withNextItemArrows || trackDbSettingOn(track->tdb, "nextItemButton"))
{
doLabelNextItemButtons(track, parentTrack, hvg, font, y, trackPastTabX,
trackPastTabWidth, fontHeight, insideHeight, labelColor);
toggleDone = TRUE;
}
}
if (!toggleDone)
{
@@ -2055,32 +2058,31 @@
if (tdbIsCompositeChild(track->tdb)) // When single track is requested via AJAX,
limitedVisFromComposite(track); // it could be a subtrack
else
limitVisibility(track);
if (!safeHeight)
{
track->limitedVis = tvHide;
track->limitedVisSet = TRUE;
continue;
}
if (tdbIsComposite(track->tdb))
{
struct track *subtrack;
- for (subtrack = track->subtracks; subtrack != NULL;
- subtrack = subtrack->next)
+ for (subtrack = track->subtracks; subtrack != NULL; subtrack = subtrack->next)
{
if (!isSubtrackVisible(subtrack))
continue;
// subtrack vis can be explicit or inherited from composite/view.
// Then it could be limited because of pixel height
limitedVisFromComposite(subtrack);
if (subtrack->limitedVis != tvHide)
{
subtrack->hasUi = track->hasUi;
flatTracksAdd(&flatTracks,subtrack,cart);
}
}
}
@@ -2247,31 +2249,32 @@
if (grayButtonGroup)
drawGrayButtonBox(hvgSide, trackTabX, yStart, trackTabWidth, h, track->hasUi);
else
drawBlueButtonBox(hvgSide, trackTabX, yStart, trackTabWidth, h, track->hasUi);
}
if (track->hasUi)
{
if (tdbIsCompositeChild(track->tdb))
{
struct trackDb *parent = tdbGetComposite(track->tdb);
mapBoxTrackUi(hvgSide, trackTabX, yStart, trackTabWidth, (yEnd - yStart - 1),
parent->track, parent->shortLabel, track->track);
}
else
- mapBoxTrackUi(hvgSide, trackTabX, yStart, trackTabWidth, h, track->track, track->shortLabel, track->track);
+ mapBoxTrackUi(hvgSide, trackTabX, yStart, trackTabWidth, h, track->track,
+ track->shortLabel, track->track);
}
}
}
butOff = trackTabX + trackTabWidth;
leftLabelX += butOff;
leftLabelWidth -= butOff;
}
if (withLeftLabels)
{
if (theImgBox == NULL)
{
Color lightRed = hvGfxFindColorIx(hvgSide, 255, 180, 180);
hvGfxBox(hvgSide, leftLabelX + leftLabelWidth, 0,
@@ -4603,33 +4606,35 @@
{
hPuts("Organism ");
printAssemblyListHtmlExtra(database, javascript);
}
sprintf(buf, "%s:%d-%d", chromName, winStart+1, winEnd);
position = cloneString(buf);
#ifdef MERGE_GENE_SUGGEST
hPrintf("<span class='positionDisplay' id='positionDisplay' title='click to copy position to input box'>%s</span>", addCommasToPos(database, position));
hPrintf("<input type='hidden' name='position' id='position' value='%s'>\n", buf);
sprintLongWithCommas(buf, winEnd - winStart);
hPrintf(" <span id='size'>%s</span> bp. ", buf);
hPrintf("<input class='positionInput' type='text' name='hgt.positionInput' id='positionInput' size='60'>\n");
hWrites(" ");
hButtonWithOnClick("hgt.jump", "go", NULL, "imageV2.jumpButtonOnClick()");
- jsonObjectAdd(jsonForClient, "assemblySupportsGeneSuggest", newJsonBoolean(assemblySupportsGeneSuggest(database)));
+ jsonObjectAdd(jsonForClient, "assemblySupportsGeneSuggest",
+ newJsonBoolean(assemblySupportsGeneSuggest(database)));
if(assemblySupportsGeneSuggest(database))
- hPrintf("<input type='hidden' name='hgt.suggestTrack' id='suggestTrack' value='%s'>\n", assemblyGeneSuggestTrack(database));
+ hPrintf("<input type='hidden' name='hgt.suggestTrack' id='suggestTrack' value='%s'>\n",
+ assemblyGeneSuggestTrack(database));
#else///ifndef MERGE_GENE_SUGGEST
hWrites("position/search ");
hTextVar("position", addCommasToPos(database, position), 30);
sprintLongWithCommas(buf, winEnd - winStart);
if(assemblySupportsGeneSuggest(database))
hPrintf(" <a title='click for help on gene search box' target='_blank' href='../goldenPath/help/geneSearchBox.html'>gene</a> "
"<input type='text' size='8' name='hgt.suggest' id='suggest'>\n"
"<input type='hidden' name='hgt.suggestTrack' id='suggestTrack' value='%s'>\n", assemblyGeneSuggestTrack(database)
);
hWrites(" ");
hButtonWithOnClick("hgt.jump", "jump", NULL, "imageV2.jumpButtonOnClick()");
hOnClickButton(clearButtonJavascript,"clear");
hPrintf(" size <span id='size'>%s</span> bp. ", buf);
hWrites(" ");
hButton("hgTracksConfigPage", "configure");
@@ -4749,31 +4754,32 @@
// if (showTrackControls) - always show "hide all", Hiram 2008-06-26
{
hPrintf(" ");
hButtonWithMsg("hgt.hideAll", "hide all","Hide all currently visibile tracks");
}
hPrintf(" ");
hPrintf("<INPUT TYPE='button' VALUE='%s' onClick='document.customTrackForm.submit();"
"return false;' title='%s'>",
hasCustomTracks ? CT_MANAGE_BUTTON_LABEL : CT_ADD_BUTTON_LABEL,
hasCustomTracks ? "Manage your custom tracks" : "Add your own custom tracks");
hPrintf(" ");
if (hubConnectTableExists())
{
- hPrintf("<INPUT TYPE='button' VALUE='track hubs' onClick='document.trackHubForm.submit();return false;' title='Import tracks from hubs'>");
+ hPrintf("<INPUT TYPE='button' VALUE='track hubs' onClick='document.trackHubForm.submit();"
+ "return false;' title='Import tracks from hubs'>");
hPrintf(" ");
}
hButtonWithMsg("hgTracksConfigPage", "configure","Configure image and track selection");
hPrintf(" ");
if (!hIsGsidServer())
{
hButtonWithMsg("hgt.toggleRevCmplDisp", "reverse",
revCmplDisp ? "Show forward strand at this location"
: "Show reverse strand at this location");
hPrintf(" ");
}
hButtonWithOnClick("hgt.setWidth", "resize", "Resize image width to browser window size", "hgTracksSetWidth()");