src/hg/lib/hui.c 1.236
1.236 2009/09/08 21:09:23 tdreszer
Fixed configurable subtracks to not depend upon subgroup/view membership
Index: src/hg/lib/hui.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/hui.c,v
retrieving revision 1.235
retrieving revision 1.236
diff -b -B -U 4 -r1.235 -r1.236
--- src/hg/lib/hui.c 4 Sep 2009 23:42:37 -0000 1.235
+++ src/hg/lib/hui.c 8 Sep 2009 21:09:23 -0000 1.236
@@ -2687,9 +2687,9 @@
printf("<OPTION%s>%s</OPTION>\n",(filterBy->slChoices != NULL && slNameInList(filterBy->slChoices,slValue->name)?" SELECTED":""),slValue->name);
}
}
// The following is needed to make msie scroll to selected option.
- printf("<script type='text/javascript'>onload=function(){ $( 'select[name^=%s.filterBy.]' ).children('option[selected]').each( function(i) { this.selected=true; }); }</script>\n",tdb->tableName);
+ printf("<script type='text/javascript'>onload=function(){ if( $.browser.msie ) { $(\"select[name^='%s.filterBy.']\").children('option[selected]').each( function(i) { $(this).attr('selected',true); }); }}</script>\n",tdb->tableName);
puts("</TR></TABLE>");
return;
}
@@ -2955,8 +2955,15 @@
}
return date;
}
+static void cfgLinkToDependentCfgs(struct trackDb *tdb,char *prefix)
+/* Link composite or view level controls to all associateled lower level controls */
+{
+if(tdbIsComposite(tdb))
+ printf("<script type='text/javascript'>compositeCfgRegisterOnchangeAction(\"%s\")</script>\n",prefix);
+}
+
static void compositeUiSubtracks(char *db, struct cart *cart, struct trackDb *parentTdb,
boolean selectedOnly, char *primarySubtrack)
/* Show checkboxes for subtracks. */
{
@@ -2967,8 +2974,9 @@
char *words[5];
char *colors[2] = { COLOR_BG_DEFAULT,
COLOR_BG_ALTDEFAULT };
int colorIx = COLOR_BG_DEFAULT_IX; // Start with non-default allows alternation
+boolean dependentCfgsNeedBinding = FALSE;
// Look for dividers, heirarchy, dimensions, sort and dragAndDrop!
char **lastDivide = NULL;
dividers_t *dividers = dividersSettingGet(parentTdb);
@@ -3201,15 +3209,22 @@
printf("</div>");
if(cType != cfgNone)
{
+ dependentCfgsNeedBinding = TRUE; // configurable subtrack needs to be bound to composite settings
+ if(membership)
ix = stringArrayIx("view", membership->subgroups, membership->count);
+ else
+ ix = -1;
#define CFG_SUBTRACK_DIV "<DIV id='div_%s_cfg'%s><INPUT TYPE=HIDDEN NAME='%s' value='%s'>\n"
#define MAKE_CFG_SUBTRACK_DIV(table,cfgVar,open) printf(CFG_SUBTRACK_DIV,(table),((open)?"":" style='display:none'"),(cfgVar),((open)?"on":"off"))
safef(htmlIdentifier,sizeof(htmlIdentifier),"%s.childShowCfg",subtrack->tableName);
boolean open = cartUsualBoolean(cart, htmlIdentifier,FALSE);
MAKE_CFG_SUBTRACK_DIV(subtrack->tableName,htmlIdentifier,open);
+ if(ix >= 0)
safef(htmlIdentifier,sizeof(htmlIdentifier),"%s.%s",subtrack->tableName,membership->membership[ix]);
+ else
+ safef(htmlIdentifier,sizeof(htmlIdentifier),"%s",subtrack->tableName);
cfgByCfgType(cType,db,cart,subtrack,htmlIdentifier,"Subtrack",TRUE);
puts("</DIV>\n");
}
printf("<TD nowrap> ");
@@ -3232,8 +3247,10 @@
//if (!preSorted && sortOrder != NULL) // No longer need to do this since hgTrackDb should sort composites with sortOrder and set priorities
// puts("<script type='text/javascript'>tableSortAtStartup();</script>");
if (!primarySubtrack)
puts("<script type='text/javascript'>matInitializeMatrix();</script>");
+if(dependentCfgsNeedBinding)
+ cfgLinkToDependentCfgs(parentTdb,parentTdb->tableName);
for(di=dimX;di<dimMax;di++)
subgroupMembersFree(&dimensions[di]);
dyStringFree(&dyHtml)
sortOrderFree(&sortOrder);
@@ -3293,15 +3310,8 @@
printf("<p>");
return boxed;
}
-static void cfgLinkToDependentCfgs(struct trackDb *tdb,char *prefix)
-/* Link composite or view level controls to all associateled lower level controls */
-{
-if(tdbIsComposite(tdb))
- printf("<script type='text/javascript'>compositeCfgRegisterOnchangeAction(\"%s\")</script>\n",prefix);
-}
-
static void cfgEndBox(boolean boxed)
/* Handle end of box and title for individual track type settings */
{
if (boxed)
@@ -5388,11 +5398,9 @@
compositeUiAllSubtracks(db, cart, tdb, primarySubtrack);
else
compositeUiSelectedSubtracks(db, cart, tdb, primarySubtrack);
-cfgLinkToDependentCfgs(tdb,tdb->tableName);
-
-if (primarySubtrack == NULL) // This is set for tableBrowser but not hgTrackUi
+if (primarySubtrack == NULL) // primarySubtrack is set for tableBrowser but not hgTrackUi
{
if (slCount(tdb->subtracks) > 5)
{
cgiMakeButton("Submit", "Submit");