caaf5cefb276c8f48858912d249156bcb45477d3 tdreszer Wed Apr 20 14:55:34 2011 -0700 Support for cv.ra typeOfTerm hidden being alpha,beta,public diff --git src/hg/lib/cv.c src/hg/lib/cv.c index 41caa6e..532cddd 100644 --- src/hg/lib/cv.c +++ src/hg/lib/cv.c @@ -1,23 +1,24 @@ // cv.c stands for Controlled Vocabullary and this file contains the // library APIs for reading and making sense of the contents of cv.ra. #include "common.h" #include "linefile.h" #include "dystring.h" +#include "hdb.h" #include "ra.h" #include "hui.h" #include "mdb.h" // CV Defines that should not necessarily be public // CV UGLY TERMS (NOTE: These should be hiddne inside cv.c APIS and callers should use non-UGLY terms) #define CV_UGLY_TOT_CELLTYPE "cellType" #define CV_UGLY_TERM_CELL_LINE "Cell Line" #define CV_UGLY_TERM_ANTIBODY "Antibody" // Type of Terms searchable defines #define CV_SEARCHABLE "searchable" #define CV_SEARCHABLE_SINGLE_SELECT "select" #define CV_SEARCHABLE_MULTI_SELECT "multiSelect" @@ -127,48 +128,74 @@ { hashAdd(cvHashOfTermTypes,CV_TERM_CELL,cellHash); hashReplace(cellHash, CV_TERM, cloneString(CV_TERM_CELL)); // spilling memory of 'cellType' val } struct hash *abHash = hashRemove(cvHashOfTermTypes,CV_UGLY_TERM_ANTIBODY); if (abHash) { hashAdd(cvHashOfTermTypes,CV_TERM_ANTIBODY,abHash); hashReplace(abHash, CV_TERM, cloneString(CV_TERM_ANTIBODY)); // spilling memory of 'Antibody' val } } return cvHashOfTermTypes; } +static boolean cvHiddenIsTrue(char *setting) +// returns TRUE if hidden setting passed in is true for this browser +{ +if (setting != NULL) + { + if (sameWord(setting,"yes") || sameWord(setting,"on") || sameWord(setting,"true")) + return TRUE; + if (hIsPrivateHost() || hIsPreviewHost()) + { + if (strstrNoCase(setting,"alpha")) + return TRUE; + } + else if (hIsBetaHost()) + { + if (strstrNoCase(setting,"beta")) + return TRUE; + } + else // RR and everyone else + { + if (strstrNoCase(setting,"public")) + return TRUE; + } + } +return FALSE; +} + struct slPair *cvWhiteList(boolean searchTracks, boolean cvDefined) // returns the official mdb/controlled vocabulary terms that have been whitelisted for certain uses. // TODO: change to return struct that includes searchable! { struct slPair *whitePairs = NULL; // Get the list of term types from thew cv struct hash *termTypeHash = (struct hash *)cvTermTypeHash(); struct hashCookie hc = hashFirst(termTypeHash); struct hashEl *hEl; while ((hEl = hashNext(&hc)) != NULL) { char *setting = NULL; struct hash *typeHash = (struct hash *)hEl->val; //if (!includeHidden) { setting = hashFindVal(typeHash,CV_TOT_HIDDEN); - if(SETTING_IS_ON(setting)) + if (cvHiddenIsTrue(setting)) continue; } if (searchTracks) { setting = hashFindVal(typeHash,CV_SEARCHABLE); if (setting == NULL || ( differentWord(setting,CV_SEARCHABLE_SINGLE_SELECT) && differentWord(setting,CV_SEARCHABLE_MULTI_SELECT) && differentWord(setting,CV_SEARCHABLE_FREE_TEXT))) continue; } if (cvDefined) { setting = hashFindVal(typeHash,CV_TOT_CV_DEFINED); if(SETTING_NOT_ON(setting)) @@ -214,15 +241,29 @@ const char *cvLabel(char *term) // returns cv label if term found or else just term { // Get the list of term types from thew cv struct hash *termTypeHash = (struct hash *)cvTermTypeHash(); struct hash *termHash = hashFindVal(termTypeHash,term); if (termHash != NULL) { char *label = hashFindVal(termHash,CV_LABEL); if (label != NULL) return label; } return term; } + +boolean cvTermIsHidden(char *term) +// returns TRUE if term is defined as hidden in cv.ra +{ +struct hash *termTypeHash = (struct hash *)cvTermTypeHash(); +struct hash *termHash = hashFindVal(termTypeHash,term); +if (termHash != NULL) + { + char *setting = hashFindVal(termHash,CV_TOT_HIDDEN); + return cvHiddenIsTrue(setting); + } +return FALSE; +} +