a93fb7921260a5c8555bfe3a9f63acec910028e3 kent Thu Jan 28 18:03:09 2021 -0800 Turning a define into facetUsualSize parameter, so it's not always 20 any more! Improving commenting of webFilteredSqlTable function. diff --git src/hg/inc/tablesTables.h src/hg/inc/tablesTables.h index cfa3279..49d1f73 100644 --- src/hg/inc/tablesTables.h +++ src/hg/inc/tablesTables.h @@ -1,22 +1,23 @@ /* 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. */ @@ -24,44 +25,55 @@ 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 *returnUrl, char *varPrefix, + char *visibleFieldList, char *returnUrl, char *varPrefix, int maxLenField, struct hash *tagOutputWrappers, void *wrapperContext, - boolean withFilters, char *itemPlural, - int pageSize, struct fieldedTableSegment *largerContext, struct hash *suggestHash, + boolean withFilters, char *pluralInstruction, + int pageSize, int facetUsualSize, + struct fieldedTableSegment *largerContext, struct hash *suggestHash, struct facetField **ffArray, char *visibleFacetList, void (*addFunc)(int) ); /* 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, struct sqlConnection *conn, - char *fields, char *from, char *initialWhere, - char *returnUrl, char *varPrefix, int maxFieldWidth, - struct hash *tagOutWrappers, void *wrapperContext, - boolean withFilters, char *itemPlural, int pageSize, struct hash *suggestHash, char *visibleFacetList, - void (*addFunc)(int) ); -/* Given 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. This HTML table has - * column names that will sort the table, and optionally (if withFilters is set) +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 */