9b13731e6e466aa0f781179da2d504db2f4c15a9
tdreszer
Wed Mar 30 11:28:34 2011 -0700
Made slPairListFromString and slPairListToString optionally handle double quotes. Finally made mdbObjReorderByCv so that priority in cv.ra typeOfTerms is used.
diff --git src/hg/lib/hui.c src/hg/lib/hui.c
index 96fd4d8..6b7210f 100644
--- src/hg/lib/hui.c
+++ src/hg/lib/hui.c
@@ -173,66 +173,61 @@
const struct mdbObj *safeObj = metadataForTable(db,tdb,NULL);
if (safeObj == NULL || safeObj->vars == NULL)
return NULL;
//struct dyString *dyTable = dyStringCreate("
",tdb->table);
struct dyString *dyTable = dyStringCreate("");
if(showLongLabel)
dyStringPrintf(dyTable,"%s |
",tdb->longLabel);
if(showShortLabel)
dyStringPrintf(dyTable,"shortLabel: | %s |
",tdb->shortLabel);
// Get the hash of mdb and cv term types
struct hash *cvTermTypes = (struct hash *)cvTermTypeHash();
struct mdbObj *mdbObj = mdbObjClone(safeObj); // Important if we are going to remove vars!
-mdbObjRemoveVars(mdbObj,"composite project objType dccInternalNotes"); // Don't bother showing these (suggest: "composite project dataType view tableName")
+mdbObjRemoveVars(mdbObj,MDB_OBJ_TYPE_COMPOSITE " " MDB_VAR_PROJECT " " MDB_OBJ_TYPE); // Don't bother showing these (NOTE: composite,objType should be added to cv.ra typeOfTerms as hidden)
mdbObjRemoveHiddenVars(mdbObj);
-mdbObjReorderVars(mdbObj,"grant lab dataType cell treatment antibody protocol replicate view setType inputType",FALSE); // Bring to front
-mdbObjReorderVars(mdbObj,"subId submittedDataVersion dateSubmitted dateResubmitted dateUnrestricted dataVersion tableName fileName fileIndex",TRUE); // Send to back
+mdbObjReorderByCv(mdbObj,FALSE);// Use cv defined order for visible vars
struct mdbVar *mdbVar;
for (mdbVar=mdbObj->vars;mdbVar!=NULL;mdbVar=mdbVar->next)
{
- if ((sameString(mdbVar->var,"fileName") || sameString(mdbVar->var,"fileIndex") )
- && trackDbSettingClosestToHome(tdb,"wgEncode") != NULL)
+ if ((sameString(mdbVar->var,MDB_VAR_FILENAME) || sameString(mdbVar->var,MDB_VAR_FILEINDEX) )
+ && trackDbSettingClosestToHome(tdb,MDB_VAL_ENCODE_PROJECT) != NULL)
{
dyStringPrintf(dyTable,"%s: | ",mdbVar->var);
dyStringAppend(dyTable,htmlStringForDownloadsLink(db, tdb, mdbVar->val, TRUE, trackHash));
dyStringAppend(dyTable," |
");
}
else
{
- // If antibody and metadata contains input={sameValue} then just print input
- if(sameString(mdbVar->var,"antibody") && mdbObjContains(mdbObj,"input",mdbVar->val))
- continue;
-
- if (cvTermTypes && differentString(mdbVar->var,"tableName")) // Don't bother with tableName
+ if (cvTermTypes && differentString(mdbVar->var,MDB_VAR_TABLENAME)) // Don't bother with tableName
{
struct hash *cvTerm = hashFindVal(cvTermTypes,mdbVar->var);
if (cvTerm != NULL)
{
- if(SETTING_NOT_ON(hashFindVal(cvTerm,"hidden"))) // NULL is not on
+ if(SETTING_NOT_ON(hashFindVal(cvTerm,CV_TOT_HIDDEN))) // NULL is not on
{
- char *label=hashFindVal(cvTerm,"label");
+ char *label=hashFindVal(cvTerm,CV_LABEL);
if (label == NULL)
label = mdbVar->var;
- char *linkOfType = controlledVocabLink(NULL,"type",mdbVar->var,label,label,NULL);
- char *cvDefined=hashFindVal(cvTerm,"cvDefined");
+ char *linkOfType = controlledVocabLink(NULL,CV_TYPE,mdbVar->var,label,label,NULL);
+ char *cvDefined=hashFindVal(cvTerm,CV_TOT_CV_DEFINED);
if (cvDefined != NULL && !SETTING_IS_OFF(cvDefined)) // assume setting is ON
{
- char *linkOfTerm = controlledVocabLink(NULL,"term",mdbVar->val,mdbVar->val,mdbVar->val,NULL);
+ char *linkOfTerm = controlledVocabLink(NULL,CV_TERM,mdbVar->val,mdbVar->val,mdbVar->val,NULL);
dyStringPrintf(dyTable,"%s: | %s |
",linkOfType,linkOfTerm);
freeMem(linkOfTerm);
}
else
dyStringPrintf(dyTable,"%s: | %s |
",linkOfType,mdbVar->val);
//{ // NOTE: Could just have a tool tip for these.
//char *descr=cgiEncode(hashMustFindVal(cvTerm,"description"));
//label = cgiEncode(label);
//dyStringPrintf(dyTable,"%s: | %s |
",descr,label,mdbVar->val);
//freeMem(descr);
//freeMem(label);
//}
freeMem(linkOfType);
continue;
}
@@ -4809,31 +4804,31 @@
#ifdef ALL_SCORE_FILTERS_LOGIC
static int numericFiltersShowAll(struct cart *cart, struct trackDb *tdb, boolean *opened, boolean boxed,
boolean compositeLevel,char *name, char *title)
// Shows all *Filter style filters. Note that these are in random order and have no graceful title
{
int count = 0;
struct slName *filterSettings = trackDbSettingsWildMatch(tdb, "*Filter");
if (filterSettings)
{
puts("
");
struct slName *filter = NULL;
struct slPair *extras = NULL;
char *extraFields = trackDbSetting(tdb, "extraFields"); // TODo: seems like there should be a cleaner way
if (extraFields != NULL)
- extras = slPairFromString(extraFields);
+ extras = slPairListFromString(extraFields,TRUE); // Quoted strings may be okay
while ((filter = slPopHead(&filterSettings)) != NULL)
{
if (differentString(filter->name,"noScoreFilter") && differentString(filter->name,"scoreFilter")) // TODO: scoreFilter could be included
{
char *field = cloneString(filter->name);
int ix = strlen(field) - strlen("Filter");
assert(ix > 0);
field[ix] = '\0';
// Could lookup extraFields // TODO: Should we be using extra fields? Could this be sorted by the order in extraFields?
if (extras != NULL)
{
char *foundLabel = slPairFindVal(extras, field);
if (foundLabel != NULL)
{ // Found label so replace field