e46b8109fd1277a3abbda51a7da0434863eabc77 kent Fri Jan 29 16:10:27 2021 -0800 Removed second table that was there just for testing. Transitioning away from table for metadata to tab-sep-file. diff --git src/hg/hgFacetedBars/hgFacetedBars.c src/hg/hgFacetedBars/hgFacetedBars.c index 83ea6ae..ab18573 100644 --- src/hg/hgFacetedBars/hgFacetedBars.c +++ src/hg/hgFacetedBars/hgFacetedBars.c @@ -2,30 +2,31 @@ #include #include "common.h" #include "linefile.h" #include "hash.h" #include "options.h" #include "jksql.h" #include "htmshell.h" #include "web.h" #include "cheapcgi.h" #include "cart.h" #include "hui.h" #include "udc.h" #include "knetUdc.h" #include "genbank.h" #include "tablesTables.h" +#include "facetField.h" /* Global Variables */ struct cart *cart; /* CGI and other variables */ struct hash *oldVars = NULL; char *database = NULL; char *genome = NULL; struct facetedTable /* Help manage a faceted table */ { struct facetedTable *next; char *name; /* Name of file or database table */ char *varPrefix; /* Prefix used on variables */ }; @@ -92,31 +93,30 @@ /* Look up sel val in cart */ { char var[256]; safef(var, sizeof(var), "%s_facet_fieldVal", ft->varPrefix); return cartOptionalString(cart, var); } char *facetedTableSelList(struct facetedTable *ft, struct cart *cart) /* Look up sel val in cart */ { char var[256]; safef(var, sizeof(var), "%s_facet_selList", ft->varPrefix); return cartOptionalString(cart, var); } - void facetedTableRemoveOpVars(struct facetedTable *ft, struct cart *cart) /* Remove sel op/field/name vars from cart */ { char var[256]; safef(var, sizeof(var), "%s_facet_op", ft->varPrefix); cartRemove(cart, var); safef(var, sizeof(var), "%s_facet_fieldVal", ft->varPrefix); cartRemove(cart, var); safef(var, sizeof(var), "%s_facet_fieldName", ft->varPrefix); cartRemove(cart, var); } boolean facetedTableUpdateOnFacetClick(struct facetedTable *ft, struct cart *cart) /* If we got called by a click on a facet deal with that and return TRUE, else do * nothing and return false */ @@ -136,72 +136,81 @@ char *newSelectedFacetValues = linearizeFacetVals(selList); cartSetString(cart, selListVar, newSelectedFacetValues); facetedTableRemoveOpVars(ft, cart); } return TRUE; } else return FALSE; } void doBody() { /* Fake up a 'track' for development */ char *trackName = "cellFacetsJk1"; -char *trackName2 = "tableList"; struct sqlConnection *conn = sqlConnect(database); struct hash *emptyHash = hashNew(0); struct facetedTable *ft = facetedTableNew("the original", trackName); -struct facetedTable *ft2 = facetedTableNew("the other", trackName2); /* Write out html to pull in the other files we use. */ facetedTableWebInit(); /* Working within a form we save context */ printf("
\n"); cartSaveSession(cart); /* Set up url that has enough context to get back to us. This is very much a work in * progress. */ char returnUrl[PATH_LEN*2]; safef(returnUrl, sizeof(returnUrl), "../cgi-bin/hgFacetedBars?%s", cartSidUrlString(cart) ); -/* If we got called by a click on a facet deal with that */ - /* Put up the big faceted search table */ printf("
\n"); +char *statsFileName = "/gbdb/hg38/bbi/singleCellMerged/barChart.stats"; +char *requiredStatsFields[] = {"cluster","count","mean","organ","cell_class","stage","cell_type"}; +struct fieldedTable *table = fieldedTableFromTabFile(statsFileName, statsFileName, + requiredStatsFields, ArraySize(requiredStatsFields)); facetedTableUpdateOnFacetClick(ft, cart); + +/* Look up sel val in cart */ +char *selList = facetedTableSelList(ft, cart); +struct facetField *ffArray[table->fieldCount]; +int selCount = 0; +facetFieldsFromFieldedTable(table, selList, ffArray, &selCount); +// uglyf("%d of %d selected in facets", selCount, table->rowCount); +webFilteredFieldedTable(cart, table, + "count,cluster,mean", returnUrl, trackName, + 32, emptyHash, NULL, + FALSE, NULL, + table->rowCount, 7, + NULL, emptyHash, + ffArray, "organ,cell_class,stage,cell_type", + NULL); + +#ifdef OLD webFilteredSqlTable(cart, conn, - "cell_count,organ,cell_type", trackName, "", + "organ,cell_class,cell_type", trackName, "", returnUrl, trackName, 32, emptyHash, NULL, FALSE, NULL, 50, 7, emptyHash, "organ,cell_class,stage,cell_type", NULL); +#endif /* OLD */ printf("
\n"); -printf("
\n"); -facetedTableUpdateOnFacetClick(ft2, cart); -webFilteredSqlTable(cart, conn, - "tableName,field,type,nullAllowed", trackName2, "", - returnUrl, trackName2, 32, - emptyHash, NULL, - FALSE, NULL, 50, 7, emptyHash, "type,field,tableName", - NULL); -printf("
\n"); /* Clean up and go home. */ printf("
\n"); hashFree(&emptyHash); sqlDisconnect(&conn); } void doMiddle(struct cart *theCart) /* Set up globals and make web page */ { /* Set some major global variable and attach us to current genome and DB. */ cart = theCart; getDbAndGenome(cart, &database, &genome, oldVars); initGenbankTableNames(database);