5bfb32fdfc639f9bffb5435044cef164bdde0b28
kent
  Sun Dec 12 08:02:13 2021 -0800
Implementing barChartMerge trackDb option for faceted bar charts.

diff --git src/hg/inc/tablesTables.h src/hg/inc/tablesTables.h
index 49d1f73..cfcfb8f 100644
--- src/hg/inc/tablesTables.h
+++ src/hg/inc/tablesTables.h
@@ -1,79 +1,79 @@
 /* tablesTables - this module deals with two types of tables: SQL tables in a database
  * and fieldedTable objects in memory. It has routines to do sortable, filterable web
  * displays on tables. */
 
 #ifndef TABLESTABLES_H
 #define TABLESTABLES_H
 
 #include "fieldedTable.h"
 #include "facetField.h"
 
 void webTableBuildQuery(struct cart *cart, char *from, char *initialWhere, 
     char *varPrefix, char *fields, boolean withFilters, 
     struct dyString **retQuery, struct dyString **retWhere);
 /* Construct select and where clauses in query, keeping an additional copy of where 
  * Returns the SQL query and the SQL where expression as two dyStrings (need to be freed)  */
 
 struct fieldedTable *fieldedTableFromDbQuery(struct sqlConnection *conn, char *query);
 /* Return fieldedTable from a database query */
 
 typedef void webTableOutputWrapperType(struct fieldedTable *table, struct fieldedRow *row,
     char *field, char *val, char *shortVal, void *context);
 /* If we want more than just text output we have to provide a function for a column
  * of this type.  This is responsible for rendering the tag as we want. */
 
 void webSortableFieldedTable(struct cart *cart, struct fieldedTable *table, 
    char *returnUrl, char *varPrefix,
     int maxLenField, struct hash *tagOutputWrappers, void *wrapperContext);
 /* Display all of table including a sortable label row.  The tagOutputWrappers
  * is an optional way to enrich output of specific columns of the table.  It is keyed
  * by column name and has for values functions of type webTableOutputWrapperType. */
 
 struct fieldedTableSegment
 /* Information on a segment we're processing out of something larger */
     {
     int tableSize;	// Size of larger structure
     int tableOffset;	// Where we are in larger structure
     };
 
 void webFilteredFieldedTable(struct cart *cart, struct fieldedTable *table, 
     char *visibleFieldList, char *returnUrl, char *varPrefix,
     int maxLenField, struct hash *tagOutputWrappers, void *wrapperContext,
     boolean withFilters, char *pluralInstruction, 
     int pageSize, int facetUsualSize,
     struct fieldedTableSegment *largerContext, struct hash *suggestHash, 
     struct facetField **ffArray, char *visibleFacetList,
-    void (*addFunc)(int) );
+    void (*addFunc)(int), boolean facetMergeOk );
 /* Show a fielded table that can be sorted by clicking on column labels and optionally
  * that includes a row of filter controls above the labels .
  * The maxLenField is maximum character length of field before truncation with ...
  * Pass in 0 for no max. */
 
 
 void webFilteredSqlTable(struct cart *cart,    /* User set preferences here */
     struct sqlConnection *conn,		       /* Connection to database */
     char *fields, char *from, char *initialWhere,  /* Our query in three parts */
     char *returnUrl, char *varPrefix,	       /* Url to get back to us, and cart var prefix */
     int maxFieldWidth,			       /* How big do we let fields get in characters */
     struct hash *tagOutWrappers,	       /* A hash full of callbacks, one for each column */
     void *wrapperContext,		       /* Gets passed to callbacks in tagOutWrappers */
     boolean withFilters,	/* If TRUE put up filter controls under labels */
     char *pluralInstructions,   /* If non-NULL put up instructions and clear/search buttons */
     int pageSize,		/* How many items per page */
     int facetUsualSize,		/* How many items in a facet before opening */
     struct hash *suggestHash,	/* If using filter can put suggestions for categorical items here */
     char *visibleFacetList,     /* Comma separated list of fields to facet on */
     void (*addFunc)(int) );     /* Callback relevant with pluralInstructions only */
 /* Turn sql query into a nice interactive table, possibly with facets.  It constructs
  * a query to the database in conn that is basically a select query broken into
  * separate clauses, construct and display an HTML table around results. Optionally table
  * may have a faceted search to the left or fields that can filter under the labels.  The table 
  * has column names that will sort the table, and optionally (if withFilters is set)
  * it will also allow field-by-field wildcard queries on a set of controls it draws above
  * the labels. 
  *    Much of the functionality rests on the call to webFilteredFieldedTable.  This function
  * does the work needed to bring in sections of potentially huge results sets into
  * the fieldedTable. */
 
 #endif /* TABLESTABLES_H */