src/hg/lib/hui.c 1.174
1.174 2009/03/13 23:29:09 tdreszer
Add support for enable/disabling checkboxes by having 4 state boolShad hidden inputs
Index: src/hg/lib/hui.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/hui.c,v
retrieving revision 1.173
retrieving revision 1.174
diff -b -B -U 4 -r1.173 -r1.174
--- src/hg/lib/hui.c 13 Mar 2009 23:02:08 -0000 1.173
+++ src/hg/lib/hui.c 13 Mar 2009 23:29:09 -0000 1.174
@@ -2702,20 +2702,27 @@
}
for (subtrack = parentTdb->subtracks; subtrack != NULL; subtrack = subtrack->next)
{
- boolean alreadySet = TRUE;
+ boolean checkedCB = TRUE;
+ boolean enabledCB = TRUE;
boolean isPrimary = FALSE;
char *setting;
int ix;
- safef(htmlIdentifier, sizeof(htmlIdentifier), "%s_sel", subtrack->tableName);
if ((setting = trackDbSetting(subtrack, "subTrack")) != NULL)
{
if (chopLine(cloneString(setting), words) >= 2)
- alreadySet = differentString(words[1], "off");
+ checkedCB = differentString(words[1], "off");
+ }
+ safef(htmlIdentifier, sizeof(htmlIdentifier), "%s_sel", subtrack->tableName);
+ setting = cartOptionalString(cart, htmlIdentifier);
+ if(setting != NULL)
+ {
+ int state = atoi(setting);
+ checkedCB = (state == 1 || state == -1); // checked/eanbled:1 unchecked/enabled:0 checked/disabled:-1 unchecked/disabled:-2
+ enabledCB = (state >= 0);
}
- alreadySet = cartUsualBoolean(cart, htmlIdentifier, alreadySet);
isPrimary = (primarySubtrack &&
sameString(subtrack->tableName, primarySubtrack));
if (primarySubtrack)
@@ -2731,9 +2738,9 @@
else if (hSameTrackDbType(primaryType, subtrack->type) &&
hTableExists(db, subtrack->tableName))
{
puts("<TR><TD>");
- cgiMakeCheckBox(htmlIdentifier, alreadySet);
+ cgiMakeCheckBox(htmlIdentifier, checkedCB && enabledCB);
printf ("</TD><TD>%s</TD></TR>\n", subtrack->longLabel);
}
}
else
@@ -2766,9 +2773,9 @@
if(dimensions[di] && -1 != (ix = stringArrayIx(dimensions[di]->tag, membership->subgroups, membership->count)))
dyStringPrintf(dyHtml, " %s",membership->membership[ix]);
}
dyStringAppendC(dyHtml,'"');
- cgiMakeCheckBoxIdAndJS(htmlIdentifier,alreadySet,id,dyStringContents(dyHtml));
+ cgiMakeCheckBox2BoolWithIdAndJS(htmlIdentifier,checkedCB,enabledCB,id,dyStringContents(dyHtml));
if(sortOrder != NULL || useDragAndDrop)
{
safef(htmlIdentifier, sizeof(htmlIdentifier), "%s.priority", subtrack->tableName);
float priority = (float)cartUsualDouble(cart, htmlIdentifier, subtrack->priority);
@@ -4379,10 +4386,9 @@
continue;
if (sameString(subName, subGroup) && sameString(subValue, name))
{
boolean newVal = FALSE;
- safef(option, sizeof(option),
- "%s_sel", subtrack->tableName);
+ safef(option, sizeof(option),"%s_sel", subtrack->tableName);
newVal = sameString(button, ADD_BUTTON_LABEL);
if (primarySubtrack)
{
if (sameString(subtrack->tableName, primarySubtrack))
@@ -4471,9 +4477,9 @@
if(trackDbSetting(tdb, "wgEncode") != NULL)
{
printf("<P><A HREF=\"http://%s/goldenPath/%s/%s/\" TARGET=_BLANK>Downloads</A></P>\n",
cfgOptionDefault("downloads.server", "hgdownload.cse.ucsc.edu"),
- (trackDbSetting(tdb, "origAssembly") != NULL ?trackDbSetting(tdb, "origAssembly"):"hg18"),
+ trackDbSettingOrDefault(tdb, "origAssembly","hg18"),
tdb->tableName);
return TRUE;
}
return FALSE;