0f2b15b55316a468c710d89d7078ac6aa95a2bc8 angie Mon Jun 24 09:02:45 2013 -0700 Fixing problems with the way hgTables and hgVai handled failed position searches.fixes #10964, refs #6152 diff --git src/hg/hgVai/hgVai.c src/hg/hgVai/hgVai.c index d7f8845..659f0b6 100644 --- src/hg/hgVai/hgVai.c +++ src/hg/hgVai/hgVai.c @@ -798,30 +798,35 @@ * * If we get bold & offer 1000Genomes VCF, will def. need handling of split chroms. * Are we really going to offer genome-wide in hgVai? * Up-front limit on #rows of input ? * * Eventually, we might want a FormatVep that produces structs that are passed * forward to multiple output writers... I would want to send it lots of gratorData * like a formatter, but it would produce rows like an annoGrator. * Maybe annoGrators should accept a bunch of input rows like formatters? * or would this grator wrap all the input grators inside? */ void doMainPage() /* Print out initial HTML of control page. */ { +jsInit(); +jsIncludeFile("jquery-ui.js", NULL); +webIncludeResourceFile("jquery-ui.css"); +jsIncludeFile("hgVarAnnogrator.js", NULL); +addSomeCss(); printAssemblySection(); /* Check for variant custom tracks. If there are none, tell user they need to * upload at least one. */ struct slRef *varTrackList = NULL, *varGroupList = NULL; tdbFilterGroupTrack(fullTrackList, fullGroupList, isVariantCustomTrack, NULL, &varGroupList, &varTrackList); if (varTrackList == NULL) { askUserForVariantCustomTrack(); } else { puts("
"); @@ -833,35 +838,30 @@ selectOutput(); submitAndDisclaimer(); } printf(""); jsReloadOnBackButton(cart); webNewSection("Using the Variant Annotation Integrator"); webIncludeHelpFile("hgVaiHelpText", FALSE); } void doUi() /* Set up globals and make web page */ { cartWebStart(cart, database, "Variant Annotation Integrator"); -jsInit(); -jsIncludeFile("jquery-ui.js", NULL); -webIncludeResourceFile("jquery-ui.css"); -jsIncludeFile("hgVarAnnogrator.js", NULL); -addSomeCss(); doMainPage(); cartWebEnd(); /* Save variables. */ cartCheckout(&cart); } void checkVariantTrack(struct trackDb *tdb) /* variantTrack should be either pgSnp or VCF. */ { if (! sameString(tdb->type, "pgSnp") && ! sameString(tdb->type, "vcfTabix")) { errAbort("Expected variant track '%s' to be either pgSnp or vcfTabix, but it's '%s'", tdb->track, tdb->type); } @@ -1255,33 +1255,33 @@ cart = cartAndCookie(hUserCookie(), excludeVars, oldVars); /* Set up global variables. */ getDbAndGenome(cart, &database, &genome, oldVars); regionType = cartUsualString(cart, hgvaRegionType, hgvaRegionTypeGenome); if (isEmpty(cartOptionalString(cart, hgvaRange))) cartSetString(cart, hgvaRange, hDefaultPos(database)); int timeout = cartUsualInt(cart, "udcTimeout", 300); if (udcCacheTimeout() < timeout) udcSetCacheTimeout(timeout); #if ((defined USE_BAM || defined USE_TABIX) && defined KNETFILE_HOOKS) knetUdcInstall(); #endif//def (USE_BAM || USE_TABIX) && KNETFILE_HOOKS +initGroupsTracksTables(cart, &fullTrackList, &fullGroupList); if (lookupPosition(cart, hgvaRange)) { - initGroupsTracksTables(cart, &fullTrackList, &fullGroupList); if (startQuery) doQuery(); else doUi(); } else if (webGotWarnings()) { // We land here when lookupPosition pops up a warning box. // Reset the problematic position and show the main page. char *position = cartUsualString(cart, "lastPosition", hDefaultPos(database)); cartSetString(cart, hgvaRange, position); doMainPage(); } // If lookupPosition returned FALSE and didn't report warnings, // then it wrote HTML showing multiple position matches & links.