src/hg/lib/hui.c 1.207
1.207 2009/05/29 23:23:44 tdreszer
Minor changes to UI links. Ensure two cfg boxes are not opened at the same time
Index: src/hg/lib/hui.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/hui.c,v
retrieving revision 1.206
retrieving revision 1.207
diff -b -B -U 4 -r1.206 -r1.207
--- src/hg/lib/hui.c 29 May 2009 22:19:50 -0000 1.206
+++ src/hg/lib/hui.c 29 May 2009 23:23:44 -0000 1.207
@@ -3093,9 +3093,9 @@
{
ix = stringArrayIx(sortOrder->column[sIx], membership->subgroups, membership->count); // TODO: Sort needs to expand from subGroups to labels as well
if(ix >= 0)
{
-#define CFG_SUBTRACK_LINK "<A HREF='#a_cfg_%s' onclick='return subtrackCfgShow(\"%s\");' title='Configure Subtrack Settings'>%s</A>\n"
+#define CFG_SUBTRACK_LINK "<A HREF='#a_cfg_%s' onclick='return subtrackCfgShow(\"%s\");' title='Subtrack Configuration'>%s</A>\n"
#define MAKE_CFG_SUBTRACK_LINK(table,title) printf(CFG_SUBTRACK_LINK, (table),(table),(title))
printf ("<TD id='%s' nowrap abbr='%s' align='left'> ",sortOrder->column[sIx],membership->membership[ix]);
if(cType != cfgNone && sameString("view",sortOrder->column[sIx]))
MAKE_CFG_SUBTRACK_LINK(subtrack->tableName,membership->titles[ix]); // FIXME: Currently configurable under sort only supported when multiview
@@ -4498,17 +4498,18 @@
int ix;
struct trackDb *subtrack;
char objName[SMALLBUF];
char javascript[JBUFSIZE];
-#define CFG_LINK "<B><A NAME=\"a_cfg_%s\"></A><A id='a_cfg_%s' HREF=\"#a_cfg_%s\" onclick=\"return (showConfigControls('%s') == false);\" title=\"Configure View Settings\">%s</A><INPUT TYPE=HIDDEN NAME='%s.%s.showCfg' value='%s'></B>\n"
-#define MAKE_CFG_LINK(name,title,tbl,open) printf(CFG_LINK, (name),(name),(name),(name),(title),(tbl),(name),((open)?"on":"off"))
+#define CFG_LINK "<B><A NAME=\"a_cfg_%s\"></A><A id='a_cfg_%s' HREF=\"#a_cfg_%s\" onclick=\"return (showConfigControls('%s') == false);\" title=\"%s Configuration\">%s</A><INPUT TYPE=HIDDEN NAME='%s.%s.showCfg' value='%s'></B>\n"
+#define MAKE_CFG_LINK(name,title,tbl,open) printf(CFG_LINK, (name),(name),(name),(name),(title),(title),(tbl),(name),((open)?"on":"off"))
members_t *membersOfView = subgroupMembersGet(parentTdb,"view");
if(membersOfView == NULL)
return FALSE;
char configurable[membersOfView->count];
memset(configurable,cfgNone,sizeof(configurable));
+int firstOpened = -1;
boolean makeCfgRows = FALSE;
struct trackDb **matchedSubtracks = needMem(sizeof(struct trackDb *)*membersOfView->count);
char *setting = trackDbSetting(parentTdb,"settingsByView");
boolean blockCfgs = (setting != NULL && (sameWord(setting,"off") || sameWord(setting,"disabled") || sameWord(setting,"false")));
@@ -4526,27 +4527,33 @@
if(!blockCfgs)
{
configurable[ix] = (char)cfgTypeFromTdb(subtrack,TRUE); // Warns if not multi-view compatible
if(configurable[ix] != cfgNone)
+ {
+ if(firstOpened == -1)
+ {
+ safef(objName, sizeof(objName), "%s.%s.showCfg", parentTdb->tableName,membersOfView->names[ix]);
+ if(cartUsualBoolean(cart,objName,FALSE))
+ firstOpened = ix;
+ }
makeCfgRows = TRUE;
}
+ }
break;
}
}
toLowerN(membersOfView->title, 1);
-printf("<B>Select %s:</B><BR>\n", membersOfView->title);
+printf("<B>Select %s </B>(<A HREF=\"../../goldenPath/help/multiView.html\" title='Help on views' TARGET=_BLANK>help</A>):<BR>\n", membersOfView->title);
puts("<TABLE><TR align=\"LEFT\">");
for (ix = 0; ix < membersOfView->count; ix++)
{
if(matchedSubtracks[ix] != NULL)
{
printf("<TD>");
if(configurable[ix] != cfgNone)
{
- safef(objName, sizeof(objName), "%s.%s.showCfg", parentTdb->tableName,membersOfView->names[ix]);
- boolean open = cartUsualBoolean(cart,objName,FALSE);
- MAKE_CFG_LINK(membersOfView->names[ix],membersOfView->values[ix],parentTdb->tableName,open);
+ MAKE_CFG_LINK(membersOfView->names[ix],membersOfView->values[ix],parentTdb->tableName,(firstOpened == ix));
}
else
printf("<B>%s</B>\n",membersOfView->values[ix]);
puts("</TD>");
@@ -4564,9 +4571,8 @@
//if(membersOfView->count > 6 && ix == ((membersOfView->count+1)/2)-1) // An attempt at 2 rows of cfg's No good!
// puts("</tr><tr><td> </td></tr><tr>");
}
}
-puts("<TD><A HREF=\"../../goldenPath/help/multiView.html\" TARGET=_BLANK>Help on views</A></TD>");
// Need to do the same for ENCODE Gencode 'filterBy's
puts("</TR>");
if(makeCfgRows)
{
@@ -4575,11 +4581,10 @@
{
if(matchedSubtracks[ix] != NULL)
{
printf("<TR id=\"tr_cfg_%s\"",membersOfView->names[ix]);
- safef(objName, sizeof(objName), "%s.%s.showCfg", parentTdb->tableName,membersOfView->names[ix]);
- boolean open = cartUsualBoolean(cart,objName,FALSE);
- if(!open && !compositeViewCfgExpandedByDefault(parentTdb,membersOfView->names[ix],NULL))
+ if((firstOpened == -1 && !compositeViewCfgExpandedByDefault(parentTdb,membersOfView->names[ix],NULL))
+ || firstOpened != ix)
printf(" style=\"display:none\"");
printf("><TD width=10> </TD>");
int ix2=ix;
while(0 < ix2--)
@@ -4614,14 +4619,14 @@
if((count = chopByWhite(cloneString(vocab), words,15)) <= 1)
return cloneString(label);
for(ix=1;ix<count && !found;ix++)
{
-#define VOCAB_LINK "<A HREF='hgEncodeVocab?ra=/usr/local/apache/cgi-bin/%s&term=\"%s\"' TARGET=ucscVocab>%s</A>\n"
+#define VOCAB_LINK "<A HREF='hgEncodeVocab?ra=/usr/local/apache/cgi-bin/%s&term=\"%s\"' title='%s details' TARGET=ucscVocab>%s</A>\n"
if(sameString(vocabType,words[ix])) // controlledVocabulary setting matches tag so all labels are linked
{
- int sz=strlen(VOCAB_LINK)+strlen(words[0])+strlen(words[ix])+strlen(label) + 2;
+ int sz=strlen(VOCAB_LINK)+strlen(words[0])+strlen(words[ix])+2*strlen(label) + 2;
char *link=needMem(sz);
- safef(link,sz,VOCAB_LINK,words[0],words[ix],label);
+ safef(link,sz,VOCAB_LINK,words[0],words[ix],label,label);
freeMem(words[0]);
return link;
}
else if(countChars(words[ix],'=') == 1 && childTdb != NULL) // The name of a trackDb setting follows and will be the controlled vocab term
@@ -4632,11 +4637,11 @@
char * cvSetting = words[ix] + strlen(words[ix]) + 1;
char * cvTerm = metadataSettingFind(childTdb, cvSetting);
if(cvTerm != NULL)
{
- int sz=strlen(VOCAB_LINK)+strlen(words[0])+strlen(cvTerm)+strlen(label) + 2;
+ int sz=strlen(VOCAB_LINK)+strlen(words[0])+strlen(cvTerm)+2*strlen(label) + 2;
char *link=needMem(sz);
- safef(link,sz,VOCAB_LINK,words[0],cvTerm,label);
+ safef(link,sz,VOCAB_LINK,words[0],cvTerm,label,label);
freeMem(words[0]);
freeMem(cvTerm);
return link;
}