b985d31ae01e1a4e3662d36f2b7e5f77cc131482
tdreszer
  Mon May 16 13:08:51 2011 -0700
User's should see 'None' and {empty} as the same thing.  Sortable tracks and sortable files lists will now show no value when term defined in cv as 'validate cv or None' and there is either no value or 'None'.
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 7781368..7dd0a06 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -4049,31 +4049,35 @@
     struct dyString *dyLabel = newDyString(128);
 #else///ifndef SUBTRACK_CFG_POPUP
     #define CFG_SUBTRACK_LINK  "<A HREF='#a_cfg_%s' onclick='return subtrackCfgShow(\"%s\");' title='Subtrack Configuration'>%s</A>"
     #define MAKE_CFG_SUBTRACK_LINK(table,title) printf(CFG_SUBTRACK_LINK, (table),(table),(title))
 #endif///ndef SUBTRACK_CFG_POPUP
 
     // If sortable, then there must be a column per sortable dimension
     if (sortOrder != NULL)
         {
         int sIx=0;
         for(sIx=0;sIx<sortOrder->count;sIx++)
             {
             ix = stringArrayIx(sortOrder->column[sIx], membership->subgroups, membership->count); // TODO: Sort needs to expand from subGroups to labels as well
             if (ix >= 0)
                 {
-                char *titleRoot=labelRoot(membership->titles[ix],NULL);
+                char *titleRoot=NULL;
+                if (cvTermIsEmpty(sortOrder->column[sIx],membership->titles[ix]))
+                    titleRoot = cloneString(" &nbsp;");
+                else
+                    titleRoot = labelRoot(membership->titles[ix],NULL);
                 // Each sortable column requires hidden goop (in the "abbr" field currently) which is the actual sort on value
                 printf ("<TD id='%s_%s' abbr='%s' align='left'>&nbsp;",subtrack->track,sortOrder->column[sIx],membership->membership[ix]);
             #ifdef SUBTRACK_CFG_POPUP
                 dyStringPrintf(dyLabel,"%s ",titleRoot);
                 if (cType != cfgNone && sameString("view",sortOrder->column[sIx])) // configure link is on view currenntly  TODO: make a wrench next to check box/view
                     {
                     dyStringAppend(dyLabel,"Configuration");
                     MAKE_CFG_SUBTRACK_LINK(subtrack->track,dyStringContents(dyLabel),titleRoot);
                     }
             #else///ifndef SUBTRACK_CFG_POPUP
                 if (cType != cfgNone && sameString("view",sortOrder->column[sIx]))
                     MAKE_CFG_SUBTRACK_LINK(subtrack->track,titleRoot);  // FIXME: Currently configurable under sort only supported when multiview
             #endif///ndef SUBTRACK_CFG_POPUP
                 else
                     printf("%s",titleRoot);
@@ -4253,31 +4257,31 @@
 static boolean cfgBeginBoxAndTitle(struct trackDb *tdb, boolean boxed, char *title)
 /* Handle start of box and title for individual track type settings */
 {
 if(!boxed)
     {
     boxed = trackDbSettingOn(tdb,"boxedCfg");
     if(boxed)
         printf("<BR>");
     }
 if (boxed)
     {
     printf("<TABLE class='blueBox");
     char *view = tdbGetViewName(tdb);
     if(view != NULL)
         printf(" %s",view);
-    printf("' bgcolor=\"%s\" borderColor=\"%s\"><TR><TD>", COLOR_BG_ALTDEFAULT, COLOR_BG_ALTDEFAULT);
+    printf("' style='background-color:%s;'><TR><TD>", COLOR_BG_ALTDEFAULT);
     if (title)
         printf("<CENTER><B>%s Configuration</B></CENTER>\n", title);
     }
 else if (title)
     printf("<p><B>%s &nbsp;</b>", title );
 else
     printf("<p>");
 return boxed;
 }
 
 static void cfgEndBox(boolean boxed)
 /* Handle end of box and title for individual track type settings */
 {
 if (boxed)
     puts("</td></tr></table>");
@@ -6549,31 +6553,31 @@
 puts(strLower(javascript));
 
 if(!subgroupingExists(parentTdb,"view"))
     puts("(<A HREF=\"../goldenPath/help/multiView.html\" title='Help on subtrack selection' TARGET=_BLANK>help</A>)\n");
 
 puts("<BR>\n");
 
 if(membersForAll->abcCount > 0 && membersForAll->filters == FALSE)
     {
     displayABCdimensions(db,cart,parentTdb,subtrackRefList,membersForAll);
     }
 
 if(dimensionX == NULL && dimensionY == NULL) // Could have been just filterComposite. Must be an X or Y dimension
     return FALSE;
 
-printf("<TABLE class='greenBox' bgcolor='%s' borderColor='%s'>\n",COLOR_BG_DEFAULT,COLOR_BG_DEFAULT);
+printf("<TABLE class='greenBox' style='background-color:%s;'>\n",COLOR_BG_DEFAULT);
 
 matrixXheadings(db,parentTdb,membersForAll,TRUE);
 
 // Now the Y by X matrix
 int cntX=0,cntY=0;
 for (ixY = 0; ixY < sizeOfY; ixY++)
     {
     if(dimensionY == NULL || (dimensionY->tags[ixY]))
         {
         cntY++;
         assert(!dimensionY || ixY < dimensionY->count);
         printf("<TR ALIGN=CENTER BGCOLOR=\"#FFF9D2\">");
 
         matrixYheadings(db,parentTdb, membersForAll,ixY,TRUE);