src/hg/hgTracks/simpleTracks.c 1.77

1.77 2009/04/30 15:58:32 tdreszer
Rewrote getScoreFilterClause to use hui.c::dyAddFilterAsInt() so that all score filtering uses the same rules
Index: src/hg/hgTracks/simpleTracks.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/simpleTracks.c,v
retrieving revision 1.76
retrieving revision 1.77
diff -b -B -U 4 -r1.76 -r1.77
--- src/hg/hgTracks/simpleTracks.c	29 Apr 2009 18:14:28 -0000	1.76
+++ src/hg/hgTracks/simpleTracks.c	30 Apr 2009 15:58:32 -0000	1.77
@@ -1768,60 +1768,17 @@
 
 char *getScoreFilterClause(struct cart *cart,struct trackDb *tdb,char *scoreColumn)
 // Returns "score >= ..." extra where clause if one is needed
 {
-char *extraWhereClause = NULL;
-if(trackDbSettingClosestToHome(tdb, NO_SCORE_FILTER) != NULL)
-    return NULL;
-
 if( scoreColumn == NULL)
     scoreColumn = "score";
 
-if(trackDbSettingClosestToHomeOn(tdb, SCORE_FILTER _BY_RANGE))
-    {
-    char *scoreDefault = strSwapChar(cloneString(trackDbSettingClosestToHomeOrDefault(tdb, SCORE_FILTER,"0:1000")),':',0);
-    int defaultMin = atoi(scoreDefault);
-    int defaultMax = atoi(scoreDefault + strlen(scoreDefault) + 1);
-    freeMem(scoreDefault);
-    int scoreRangeMin = cartUsualIntClosestToHome(cart, tdb,FALSE,SCORE_FILTER _MIN, defaultMin);
-    int scoreRangeMax = cartUsualIntClosestToHome(cart, tdb,FALSE,SCORE_FILTER _MAX, defaultMax);
-    if (scoreRangeMin < defaultMin)
-        {
-        warn("%d is an invalid %s for the filter on the %s track. Please choose a score in the valid range",
-             scoreRangeMin, scoreColumn, tdb->tableName);
-	    cartRemoveVariableClosestToHome(cart, tdb, FALSE, SCORE_FILTER _MIN);
-	    scoreRangeMin = defaultMin;
-        }
-    if (scoreRangeMax > defaultMax)
-        {
-        warn("%d is an invalid %s for the filter on the %s track. Please choose a score in the valid range",
-             scoreRangeMax, scoreColumn, tdb->tableName);
-	    cartRemoveVariableClosestToHome(cart, tdb, FALSE, SCORE_FILTER _MAX);
-	    scoreRangeMax = defaultMax;
-        }
-    if (scoreRangeMin > 0 || scoreRangeMax < 1000) // TODO: Here is a possible bug: default range and data range may differ!
-        {
-        extraWhereClause = needMem(64);
-        safef(extraWhereClause, 64, "%s >= %d and %s <= %d", scoreColumn,scoreRangeMin,scoreColumn,scoreRangeMax);
-        }
-    }
-else
-    {
-    int defaultMin =atoi(trackDbSettingClosestToHomeOrDefault(tdb, SCORE_FILTER,"0"));
-    int scoreRangeMin = cartUsualIntClosestToHome(cart, tdb,FALSE,SCORE_FILTER, defaultMin);
-    if (scoreRangeMin < defaultMin)
-        {
-        warn("%d is an invalid %s for the filter on the %s track. Please choose a score in the valid range", scoreRangeMin, scoreColumn, tdb->tableName);
-	    cartRemoveVariableClosestToHome(cart, tdb, FALSE, SCORE_FILTER);
-	    scoreRangeMin = defaultMin;
-        }
-    else if (scoreRangeMin > 0) // TODO: Here is a possible bug: default min and data min may differ!
-        {
-        extraWhereClause = needMem(64);
-        safef(extraWhereClause, 64,"%s >= %d", scoreColumn, scoreRangeMin);
-        }
-    }
-return extraWhereClause;
+struct dyString *extraWhere = newDyString(128);
+boolean and = FALSE;
+extraWhere = dyAddFilterAsInt(cart,tdb,extraWhere,SCORE_FILTER,"0:1000",scoreColumn,&and);
+if (sameString(extraWhere->string, ""))
+    return NULL;
+return dyStringCannibalize(&extraWhere);
 }
 
 
 void loadLinkedFeaturesWithLoaders(struct track *tg, struct slList *(*itemLoader)(char **row),