b4513e3f7e7f904bd91b4c8029edc10ffb7e28ad larrym Thu Oct 21 16:31:38 2010 -0700 handle invalid metaDb values when switching assemblies diff --git src/hg/hgTracks/searchTracks.c src/hg/hgTracks/searchTracks.c index c9c50e7..21d567b 100644 --- src/hg/hgTracks/searchTracks.c +++ src/hg/hgTracks/searchTracks.c @@ -274,9 +274,9 @@ int numMetadataSelects = 0; char **mdbVar = NULL; char **mdbVal = NULL; -int i, count; char **mdbVars = NULL; char **mdbVarLabels = NULL; +int i, count = metaDbVars(conn, &mdbVars, &mdbVarLabels); for(;;) { @@ -313,13 +313,26 @@ offset = 1; safef(buf, sizeof(buf), "%s%d", METADATA_NAME_PREFIX, i + offset); mdbVar[i] = cloneString(cartOptionalString(cart, buf)); - // XXXX we need to make sure mdbVar[i] is valid in this assembly if(!simpleSearch) { + int j; + boolean found = FALSE; + // We need to make sure mdbVar[i] is valid in this assembly; if it isn't, reset it to "cell". + for(j = 0; j < count && !found; j++) + if(sameString(mdbVars[j], mdbVar[i])) + found = TRUE; + if(found) + { safef(buf, sizeof(buf), "%s%d", METADATA_VALUE_PREFIX, i + offset); mdbVal[i] = cloneString(cartOptionalString(cart, buf)); if(sameString(mdbVal[i], ANYLABEL)) mdbVal[i] = NULL; + } + else + { + mdbVar[i] = cloneString("cell"); + mdbVal[i] = NULL; + } if(!isEmpty(mdbVal[i])) (*numMetadataNonEmpty)++; } @@ -345,8 +358,6 @@ mdbVal[1] = ANYLABEL; } -count = metaDbVars(conn, &mdbVars,&mdbVarLabels); - hPrintf("<tr><td colspan='%d' align='right' class='lineOnTop' style='height:20px; max-height:20px;'><em style='color:%s; width:200px;'>ENCODE terms</em></td></tr>", cols,COLOR_DARKGREY); for(i = 0; i < numMetadataSelects; i++) {