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 "%s" #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;sIxcount;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("  "); + 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 (" ",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("
"); } if (boxed) { printf("
", COLOR_BG_ALTDEFAULT, COLOR_BG_ALTDEFAULT); + printf("' style='background-color:%s;'>
", COLOR_BG_ALTDEFAULT); if (title) printf("
%s Configuration
\n", title); } else if (title) printf("

%s  ", title ); else printf("

"); return boxed; } static void cfgEndBox(boolean boxed) /* Handle end of box and title for individual track type settings */ { if (boxed) puts("

"); @@ -6549,31 +6553,31 @@ puts(strLower(javascript)); if(!subgroupingExists(parentTdb,"view")) puts("(help)\n"); puts("
\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("\n",COLOR_BG_DEFAULT,COLOR_BG_DEFAULT); +printf("
\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(""); matrixYheadings(db,parentTdb, membersForAll,ixY,TRUE);