src/hg/lib/hui.c 1.201
1.201 2009/05/22 20:40:26 tdreszer
handle implied 'scoreFilter' setting and assume that filter at limits is the same as no filter
Index: src/hg/lib/hui.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/hui.c,v
retrieving revision 1.200
retrieving revision 1.201
diff -b -B -U 4 -r1.200 -r1.201
--- src/hg/lib/hui.c 22 May 2009 19:37:05 -0000 1.200
+++ src/hg/lib/hui.c 22 May 2009 20:40:26 -0000 1.201
@@ -3728,9 +3728,13 @@
safef(filterLimitName, sizeof(filterLimitName), "%s%s", filter,_NO);
if(trackDbSettingClosestToHome(tdb, filterLimitName) != NULL)
return extraWhere;
-char *setting = trackDbSettingClosestToHome(tdb, filter);
+char *setting = NULL;
+if(differentWord(filter,SCORE_FILTER))
+ setting = trackDbSettingClosestToHome(tdb, filter);
+else
+ setting = trackDbSettingClosestToHomeOrDefault(tdb, filter,"0:1000");
if(setting || sameWord(filter,NO_SCORE_FILTER))
{
boolean invalid = FALSE;
int minValueTdb = 0,maxValueTdb = NO_VALUE;
@@ -3769,17 +3773,31 @@
cartRemoveVariableClosestToHome(cart,tdb,FALSE,filterLimitName);
safef(filterLimitName, sizeof(filterLimitName), "%s%s", filter, _MAX);
cartRemoveVariableClosestToHome(cart,tdb,FALSE,filterLimitName);
}
- else if((min != 0 && min != NO_VALUE) || max != NO_VALUE) // Assumes min==0 is no filter!
+//#define FILTER_ASSUMES_RANGE_AT_LIMITS_IS_VALID_FILTER
+#ifdef FILTER_ASSUMES_RANGE_AT_LIMITS_IS_VALID_FILTER
+ else if((min != 0 && (int)min != NO_VALUE) || (int)max != NO_VALUE) // Assumes min==0 is no filter!
{
if((min != 0 && min != NO_VALUE) && max != NO_VALUE)
- dyStringPrintf(extraWhere, "%s(%s BETWEEN %d and %d)", (*and?" and ":""),field,min,max);
+ dyStringPrintf(extraWhere, "%s(%s BETWEEN %d and %d)", (*and?" and ":""),field,min,max); // both min and max
else if(min != 0 && min != NO_VALUE)
- dyStringPrintf(extraWhere, "%s(%s >= %d)", (*and?" and ":""),field,min);
+ dyStringPrintf(extraWhere, "%s(%s >= %d)", (*and?" and ":""),field,min); // min only
else //if(max != NO_VALUE)
- dyStringPrintf(extraWhere, "%s(%s <= %d)", (*and?" and ":""),field,max);
+ dyStringPrintf(extraWhere, "%s(%s <= %d)", (*and?" and ":""),field,max); // max only
+#else//ifndef FILTER_ASSUMES_RANGE_AT_LIMITS_IS_VALID_FILTER
+ else if((min != NO_VALUE && (minLimit == NO_VALUE || minLimit != min)) // Assumes min==NO_VALUE or min==minLimit is no filter
+ || (max != NO_VALUE && (maxLimit == NO_VALUE || maxLimit != max))) // Assumes max==NO_VALUE or max==maxLimit is no filter!
+ {
+ if(max == NO_VALUE || (maxLimit != NO_VALUE && maxLimit == max))
+ dyStringPrintf(extraWhere, "%s(%s >= %d)", (*and?" and ":""),field,min); // min only
+ else if(min == NO_VALUE || (minLimit != NO_VALUE && minLimit == min))
+ dyStringPrintf(extraWhere, "%s(%s <= %d)", (*and?" and ":""),field,max); // max only
+ else
+ dyStringPrintf(extraWhere, "%s(%s BETWEEN %d and %d)", (*and?" and ":""),field,min,max); // both min and max
+#endif//ndef FILTER_ASSUMES_RANGE_AT_LIMITS_IS_VALID_FILTER
*and=TRUE;
+ //warn("%s: %s",tdb->tableName,extraWhere->string);
}
}
return extraWhere;
}
@@ -3835,16 +3853,28 @@
cartRemoveVariableClosestToHome(cart,tdb,FALSE,filterLimitName);
safef(filterLimitName, sizeof(filterLimitName), "%s%s", filter, _MAX);
cartRemoveVariableClosestToHome(cart,tdb,FALSE,filterLimitName);
}
+#ifdef FILTER_ASSUMES_RANGE_AT_LIMITS_IS_VALID_FILTER
else if((min != 0 && (int)min != NO_VALUE) || (int)max != NO_VALUE) // Assumes min==0 is no filter!
{
if((min != 0 && (int)min != NO_VALUE) && (int)max != NO_VALUE)
- dyStringPrintf(extraWhere, "%s(%s BETWEEN %g and %g)", (*and?" and ":""),field,min,max);
+ dyStringPrintf(extraWhere, "%s(%s BETWEEN %g and %g)", (*and?" and ":""),field,min,max); // both min and max
else if(min != 0 && (int)min != NO_VALUE)
- dyStringPrintf(extraWhere, "%s(%s >= %g)", (*and?" and ":""),field,min);
+ dyStringPrintf(extraWhere, "%s(%s >= %g)", (*and?" and ":""),field,min); // min only
else //if((int)max != NO_VALUE)
- dyStringPrintf(extraWhere, "%s(%s <= %g)", (*and?" and ":""),field,max);
+ dyStringPrintf(extraWhere, "%s(%s <= %g)", (*and?" and ":""),field,max); // max only
+#else//ifndef FILTER_ASSUMES_RANGE_AT_LIMITS_IS_VALID_FILTER
+ else if(((int)min != NO_VALUE && ((int)minLimit == NO_VALUE || minLimit != min)) // Assumes min==NO_VALUE or min==minLimit is no filter
+ || ((int)max != NO_VALUE && ((int)maxLimit == NO_VALUE || maxLimit != max))) // Assumes max==NO_VALUE or max==maxLimit is no filter!
+ {
+ if((int)max == NO_VALUE || ((int)maxLimit != NO_VALUE && maxLimit == max))
+ dyStringPrintf(extraWhere, "%s(%s >= %g)", (*and?" and ":""),field,min); // min only
+ else if((int)min == NO_VALUE || ((int)minLimit != NO_VALUE && minLimit == min))
+ dyStringPrintf(extraWhere, "%s(%s <= %g)", (*and?" and ":""),field,max); // max only
+ else
+ dyStringPrintf(extraWhere, "%s(%s BETWEEN %g and %g)", (*and?" and ":""),field,min,max); // both min and max
+#endif//ndef FILTER_ASSUMES_RANGE_AT_LIMITS_IS_VALID_FILTER
*and=TRUE;
}
}
return extraWhere;