97b43803a09f9085190a3af6bb2b7c63d07016bb tdreszer Mon Aug 22 17:12:52 2011 -0700 Added support for cv terms that are searchable='wildList'. This type of searching allows comma dilimied lists and '%' wild card. diff --git src/hg/lib/search.c src/hg/lib/search.c index 95c4e45..18e3b7b 100644 --- src/hg/lib/search.c +++ src/hg/lib/search.c @@ -127,31 +127,33 @@ var = "cell"; else { safef(buf, sizeof(buf), "%s%d", METADATA_VALUE_PREFIX, ix + offset); enum cvSearchable searchBy = cvSearchMethod(var); if (searchBy == cvSearchByMultiSelect) { // Multi-selects as comma delimited list of values struct slName *vals = cartOptionalSlNameList(cart,buf); if (vals) { val = slNameListToString(vals,','); // A comma delimited list of values slNameFreeList(&vals); } } - else if (searchBy == cvSearchBySingleSelect || searchBy == cvSearchByFreeText) + else if (searchBy == cvSearchBySingleSelect + || searchBy == cvSearchByFreeText + || searchBy == cvSearchByWildList) val = cloneString(cartUsualString(cart, buf,ANYLABEL)); //else if (searchBy == cvSearchByDateRange || searchBy == cvSearchByIntegerRange) // { // // TO BE IMPLEMENTED // } if (val != NULL && sameString(val, ANYLABEL)) val = NULL; } slPairAdd(&mdbSelectPairs,var,val); // val already cloned } if(delSearchSelect > 0) { safef(buf, sizeof(buf), "%s%d", METADATA_NAME_PREFIX, numMetadataSelects + 1); cartRemove(cart, buf); @@ -217,34 +219,42 @@ struct slPair *pairs = mdbValLabelSearch(conn, mdbSelect->name, MDB_VAL_STD_TRUNCATION, FALSE, !fileSearch, fileSearch); // not tags, either a file or table search if (slCount(pairs) > 0) { char *dropDownHtml = cgiMakeSelectDropList((searchBy == cvSearchByMultiSelect), buf, pairs,mdbSelect->val, ANYLABEL,"mdbVal","style='min-width:200px; font-size:.9em;' onchange='findTracksMdbValChanged(this);'"); if (dropDownHtml) { dyStringAppend(output,dropDownHtml); freeMem(dropDownHtml); } slPairFreeList(&pairs); } } else if (searchBy == cvSearchByFreeText) { - dyStringPrintf(output,"contains\n\n",row,buf); + dyStringPrintf(output,"contains\n\n", + row,buf); dyStringPrintf(output,"\n", buf,(mdbSelect->val ? (char *)mdbSelect->val: "")); } + else if (searchBy == cvSearchByWildList) + { + dyStringPrintf(output,"is among\n\n", + row,buf); + dyStringPrintf(output,"\n", + buf,(mdbSelect->val ? (char *)mdbSelect->val: "")); + } //else if (searchBy == cvSearchByDateRange || searchBy == cvSearchByIntegerRange) // { // // TO BE IMPLEMENTED // } dyStringPrintf(output," \n", row); dyStringPrintf(output,"\n"); } dyStringPrintf(output," ", cols); return dyStringCannibalize(&output); } static boolean searchMatchToken(char *string, char *token)