68556d6313c84572edde3f854fd0ee2592cee9b7
tdreszer
  Mon Sep 12 14:05:12 2011 -0700
Further work to have cv label appear instead of term in file search, fileUi and metadata dropdown
diff --git src/hg/lib/cv.c src/hg/lib/cv.c
index 4894516..c1788b7 100644
--- src/hg/lib/cv.c
+++ src/hg/lib/cv.c
@@ -295,36 +295,44 @@
 const char *validationRule = cvValidationRule(term);
 if (validationRule != NULL)
     {
     if (startsWithWord(CV_VALIDATE_INT,(char *)validationRule))
         return cvInteger;
     else if (startsWithWord(CV_VALIDATE_FLOAT,(char *)validationRule))
         return cvFloat;
     else if (startsWithWord(CV_VALIDATE_DATE,(char *)validationRule))
         return cvDate;
     else
         return cvString;
     }
 return cvIndeterminant;
 }
 
-const char *cvLabel(const char *term)
+const char *cvLabel(const char *type,const char *term)
 // returns cv label if term found or else just term
+// If type not supplied, must be a typeOfTerm definition
+{
+struct hash *termHash = NULL;
+if (type == NULL) // Must be a typeOfTerm
 {
 // Get the list of term types from thew cv
 struct hash *termTypeHash = (struct hash *)cvTermTypeHash();
-struct hash *termHash = hashFindVal(termTypeHash,(char *)term);
+    termHash = hashFindVal(termTypeHash,(char *)term);
+    }
+else
+    termHash = (struct hash *)cvOneTermHash(type,term);
+
 if (termHash != NULL)
     {
     char *label = hashFindVal(termHash,CV_LABEL);
     if (label != NULL)
         return label;
     }
 return term;
 }
 
 const char *cvTag(const char *type,const char *term)
 // returns cv Tag if term found or else NULL
 {
 const struct hash *termHash = cvOneTermHash(type,term);
 if (termHash != NULL)
     return hashFindVal((struct hash *)termHash,CV_TAG);
@@ -360,30 +368,44 @@
 #endif///def OMIT
 
 boolean cvTermIsHidden(const char *term)
 // returns TRUE if term is defined as hidden in cv.ra
 {
 struct hash *termTypeHash = (struct hash *)cvTermTypeHash();
 struct hash *termHash = hashFindVal(termTypeHash,(char *)term);
 if (termHash != NULL)
     {
     char *setting = hashFindVal(termHash,CV_TOT_HIDDEN);
     return cvHiddenIsTrue(setting);
     }
 return FALSE;
 }
 
+boolean cvTermIsCvDefined(const char *term)
+// returns TRUE if the terms values are defined in the cv.ra
+// For example anitobody is cv defined but expId isn't
+{
+struct hash *termTypeHash = (struct hash *)cvTermTypeHash();
+struct hash *termHash = hashFindVal(termTypeHash,(char *)term);
+if (termHash != NULL)
+    {
+    char *setting = hashFindVal(termHash,CV_TOT_CV_DEFINED);
+    return SETTING_IS_ON(setting);
+    }
+return FALSE;
+}
+
 boolean cvTermIsEmpty(const char *term,const char *val)
 // returns TRUE if term has validation of "cv or None" and the val is None
 {
 if (val == NULL)
     return TRUE; // Empty whether it is supposed to be or not
 
 struct hash *termTypeHash = (struct hash *)cvTermTypeHash();
 struct hash *termHash = hashFindVal(termTypeHash,(char *)term);
 if (termHash != NULL)
     {
     char *validationRule = hashFindVal(termHash,CV_VALIDATE);
     if (validationRule != NULL)
         {           // Currently only supporting special case for "None"
         if (sameString(validationRule,CV_VALIDATE_CV_OR_NONE)
         && sameString(val,MDB_VAL_ENCODE_EDV_NONE))