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("
%s | ", 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("", 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(" | ");
}
puts("\n");
}
if (showAllButtons)
{
cgiSimpleTableRowStart();
- puts("check all / clear all | ");
+ printf("check all / clear all | ", 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();
}