915f56e3f34f66d58bf6573dc4dfddd068bd4090 angie Tue Apr 19 13:36:48 2016 -0700 Simplify the generation of hgGateway's dbDbTaxonomy tree info and support mirrors better: new hg.conf setting hgGateway.dbDbTaxonomy enables tree display and specifies relative URL to file. Instead of dbDbTaxonomy.{hgwdev,rr}.js, there is only one dbDbTaxonomy.js, built from hgcentraltest (hgwdev). hgGateway.c's HTML output includes JS encoding the set of active genomes+taxIds. hgGateway.js uses that to prune the tree so it contains only active genomes; now we can use the hgwdev tree on the RR and see only RR species. Also updated dbDbTaxonomy.js to get the latest hgwdev species as of 4/18/16. refs #15277 diff --git src/hg/hgGateway/hgGateway.c src/hg/hgGateway/hgGateway.c index bf309fe..becc9da 100644 --- src/hg/hgGateway/hgGateway.c +++ src/hg/hgGateway/hgGateway.c @@ -230,68 +230,87 @@ if (pix) jsonWriteNumber(cj->jw, "pix", pix); } static void doCartJson() /* Perform UI commands to update the cart and/or retrieve cart vars & metadata. */ { struct cartJson *cj = cartJsonNew(cart); cartJsonRegisterHandler(cj, "setTaxId", setTaxId); cartJsonRegisterHandler(cj, "setDb", setDb); cartJsonRegisterHandler(cj, "setHubDb", setHubDb); cartJsonRegisterHandler(cj, "getUiState", getUiState); cartJsonExecute(cj); } +static void printActiveGenomes() +/* Print out JSON for an object mapping each genome that has at least one db with active=1 + * to its taxId. */ +{ +struct jsonWrite *jw = jsonWriteNew(); +jsonWriteObjectStart(jw, NULL); +struct sqlConnection *conn = hConnectCentral(); +char *query = NOSQLINJ "select distinct(genome),taxId from dbDb where active=1 " + "and taxId > 1;"; // filter out experimental hgwdev-only stuff with invalid taxIds +struct sqlResult *sr = sqlGetResult(conn, query); +char **row; +while ((row = sqlNextRow(sr)) != NULL) + jsonWriteNumber(jw, row[0], atoi(row[1])); +hDisconnectCentral(&conn); +jsonWriteObjectEnd(jw); +puts(jw->dy->string); +jsonWriteFree(&jw); +} + static void doMainPage() /* Send HTML with javascript to bootstrap the user interface. */ { // Start web page with new banner char *db = NULL, *genome = NULL, *clade = NULL; getDbGenomeClade(cart, &db, &genome, &clade, oldVars); webStartJWest(cart, db, "Genome Browser Gateway"); -// Edit the HTML in hgGateway.html (see makefile): +// The visible page elements are all in ./hgGateway.html, which is transformed into a quoted .h +// file containing a string constant that we #include and print here (see makefile). puts( #include "hgGateway.html.h" ); -// Set global JS variable hgsid +// Set global JS variables hgsid and activeGenomes // We can't just use "var hgsid = " or the other scripts won't see it -- it has to be // "window.hgsid = ". puts(""); puts(""); puts(""); puts(""); puts(""); webIncludeResourceFile("jquery-ui.css"); jsIncludeFile("jquery-ui.js", NULL); jsIncludeFile("jquery.watermarkinput.js", NULL); jsIncludeFile("utils.js",NULL); // Phylogenetic tree .js file, produced by dbDbTaxonomy.pl: -char *hostCode = (hIsPrivateHost() || hIsPreviewHost()) ? "hgwdev" : "rr"; - -// Keep using dbDbTaxonomy.rr.js on demo6 for testing. -if (hHostHasPrefix("hgwdev-demo6")) - hostCode = "rr"; - -printf("\n", hostCode); +char *dbDbTree = cfgOptionDefault("hgGateway.dbDbTaxonomy", NULL); +if (isNotEmpty(dbDbTree)) + printf("\n", dbDbTree); // Main JS for hgGateway: puts(""); webIncludeFile("inc/jWestFooter.html"); webEndJWest(); } void doMiddle(struct cart *theCart) /* Depending on invocation, either perform a query and print out results * or display the main page. */ { cart = theCart; if (cgiOptionalString(CARTJSON_COMMAND))