d4178f33139c9bd7c848f5d2ee958fb8838155df larrym Fri Oct 21 12:22:52 2011 -0700 fix shifted checkbox problem (see redmine #3955) diff --git src/hg/hgCustom/hgCustom.c src/hg/hgCustom/hgCustom.c index cd71ed5..e7077a3 100644 --- src/hg/hgCustom/hgCustom.c +++ src/hg/hgCustom/hgCustom.c @@ -448,64 +448,74 @@ { /* print table column header with white text on black background */ puts("<TD ALIGN='CENTER' BGCOLOR='#536ED3' "); if (description) printf("TITLE='%s'", description); printf("><B>%s</B></TD> ", wrapWhiteFont(label)); } void showCustomTrackList(struct customTrack *ctList, int numCts) /* print table of custom tracks with controls */ { struct customTrack *ct; char buf[256]; char *pos = NULL; char *dataUrl; +int colSpan = 4; /* handle 'set all' and 'clr all' */ boolean setAllDelete = FALSE; boolean setAllUpdate = FALSE; if (cartVarExists(cart, hgCtDoDeleteSet)) setAllDelete = TRUE; if (cartVarExists(cart, hgCtDoRefreshSet)) setAllUpdate = TRUE; /* determine which columns to display (avoid empty columns) */ int updateCt = 0, itemCt = 0, posCt = 0, errCt = 0; for (ct = ctList; ct != NULL; ct = ct->next) { if (ctDataUrl(ct)) updateCt++; if (ctItemCount(ct) > 0) itemCt++; if (ctInitialPosition(ct) || ctFirstItemPos(ct)) posCt++; if (ct->networkErrMsg) errCt++; } hTableStart(); cgiSimpleTableRowStart(); tableHeaderField("Name", "Short track identifier"); tableHeaderField("Description", "Long track identifier"); tableHeaderField("Type", "Data format of track"); tableHeaderField("Doc", "HTML track description"); if (itemCt) + { tableHeaderField("Items", "Count of discrete items in track"); + colSpan++; + } if (posCt) + { tableHeaderField("Pos"," Go to genome browser at default track position or first item"); + colSpan++; + } if (errCt) + { tableHeaderField("Error"," Error in custom track"); + colSpan++; + } boolean showAllButtons = FALSE; if (numCts > 3) showAllButtons = TRUE; tableHeaderFieldStart(showAllButtons ? 2 : 1); cgiMakeButtonWithMsg(hgCtDoDelete, "delete", "Remove custom track"); cgiTableFieldEnd(); /* add column with Update button if any custom tracks are updateable */ if (updateCt) { tableHeaderFieldStart(showAllButtons ? 2 : 1); cgiMakeButtonWithMsg(hgCtDoRefresh, "update", "Refresh from data URL"); cgiTableFieldEnd(); @@ -589,31 +599,31 @@ { printf("<TD COLSPAN=%d ALIGN=CENTER>", showAllButtons ? 2 : 1); safef(buf, sizeof(buf), "%s_%s", hgCtRefreshPrefix, ct->tdb->track); if ((dataUrl = ctDataUrl(ct)) != NULL) cgiMakeCheckBoxWithMsg(buf, setAllUpdate, dataUrl); else puts(" "); puts("</TD>"); } puts("</TR>\n"); } if (showAllButtons) { cgiSimpleTableRowStart(); - puts("<TD COLSPAN=6 ALIGN='RIGHT'>check all / clear all </TD>"); + printf("<TD COLSPAN=%d ALIGN='RIGHT'>check all / clear all </TD>", colSpan); cgiSimpleTableFieldStart(); cgiMakeButtonWithMsg(hgCtDoDeleteSet, "+", "Select all for deletion"); cgiTableFieldEnd(); cgiSimpleTableFieldStart(); cgiMakeButtonWithMsg(hgCtDoDeleteClr, "-", "Clear all for deletion"); cgiTableFieldEnd(); if (updateCt) { cgiSimpleTableFieldStart(); cgiMakeButtonWithMsg(hgCtDoRefreshSet, "+", "Select all for update"); cgiTableFieldEnd(); cgiSimpleTableFieldStart(); cgiMakeButtonWithMsg(hgCtDoRefreshClr, "-", "Clear all for update"); cgiTableFieldEnd(); }