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))