src/hg/gsid/gsidTable/gsidTable.h 1.8
1.8 2009/09/24 16:51:44 fanhsu
Fixed a bug that was hidden for years.
Index: src/hg/gsid/gsidTable/gsidTable.h
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/gsid/gsidTable/gsidTable.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -b -B -U 1000000 -r1.7 -r1.8
--- src/hg/gsid/gsidTable/gsidTable.h 4 Nov 2007 01:51:57 -0000 1.7
+++ src/hg/gsid/gsidTable/gsidTable.h 24 Sep 2009 16:51:44 -0000 1.8
@@ -1,281 +1,281 @@
/* gsidTable.h - interfaces to plug columns into gsidTable. The must important
* thing here is the column structure. */
#ifndef gsidTable_H
#define gsidTable_H
struct subjInfo
/* subjInfo - subject info */
{
struct subjInfo *next;
char **fields; /* array of field values from gsidSubjInfo. fields[0] is always subjId */
char *sortString; /* value to use if sorting as a string */
int sortInteger; /* value to use if sorting as an integer */
- int sortDouble; /* value to use if sorting as an double */
+ double sortDouble; /* value to use if sorting as an double */
};
struct column
/* A column in the big table. The central data structure for
* gsidTable. */
{
/* Data set during initialization that is guaranteed to be in each track. */
struct column *next; /* Next column. */
char *name; /* Column name, not allocated here. */
char *shortLabel; /* Column label. */
char *longLabel; /* Column description. */
float priority; /* Order displayed. */
boolean on; /* True if turned on. */
boolean defaultOn; /* On by default? */
boolean filterOn; /* True if its filter on. */
char *type; /* type of column */
struct hash* remap; /* hash for substitutes if type="remap" */
char *query; /* query if not in gsidSubjInfo main table */
boolean filterDropDown; /* True if filter uses dropdown list. */
int colNo; /* index into subjInfo string array or -1 if not in gsidSubjInfo table */
struct hash *settings; /* Settings from ra file. */
/* -- Methods -- */
boolean (*exists)(struct column *col, struct sqlConnection *conn);
/* Return TRUE if column exists in database. */
char *(*cellVal)(struct column *col, struct subjInfo *si,
struct sqlConnection *conn);
/* Get value of one cell as string. FreeMem this when done. Note that
* gp->chrom may be NULL legitimately. */
void (*cellPrint)(struct column *col, struct subjInfo *si,
struct sqlConnection *conn);
/* Print one cell of this column. Note that gp->chrom may be
* NULL legitimately. */
void (*labelPrint)(struct column *col);
/* Print the label in the label row. */
int (*tableColumns)(struct column *col);
/* How many html columns this uses. */
struct subjInfo *(*advFilter)(struct column *col, struct sqlConnection *conn,
struct subjInfo *inputList);
/* Return list of positions for advanced filter. */
int (*sortCmp)(const void *va, const void *vb);
/* Compare to sort rows based on value. */
void (*filterControls)(struct column *col, struct sqlConnection *conn);
/* Print out controls for advanced filter. */
};
/* ---- global variables ---- */
extern struct cart *cart; /* This holds variables between clicks. */
extern char *database; /* Name of genome database - hg15, or the like. */
extern char *genome; /* Name of organism - mouse, human, etc. */
extern char *sortOn; /* Current sorted by column. */
extern int displayCount; /* Number of items to display. */
extern struct hash *columnHash; /* Hash of active columns keyed by name. */
/* ---- Cart Variables ---- */
#define dbVarName "db" /* Which assembly to use. */
#define orgVarName "org" /* Which organism to use. */
#define orderVarName "gsidTable.order" /* Sorting column. */
#define confVarName "gsidTable.do.configure" /* Configuration button */
#define advFilterVarName "gsidTable.do.advFilter" /* Advanced filter */
#define countVarName "gsidTable_count" /* How many items to display. */
#define getSeqHowVarName "gsidTable.getSeqHow" /* How to get sequence. */
#define getSeqPageVarName "gsidTable.do.getSeqPage" /* Button go to getSequence page. */
#define getSeqVarName "gsidTable.do.getSeq" /* Button to get sequence. */
#define getTextVarName "gsidTable.do.getText" /* Button to get as text. */
#define advFilterPrefix "gsidTable.as."
/* Prefix for advanced filter variables. */
#define advFilterPrefixI "gsidTable.asi."
/* Prefix for advanced filter variables not forcing search. */
#define advFilterVarName "gsidTable.do.advFilter" /* Advanced filter */
#define advFilterClearVarName "gsidTable.do.advFilterClear"
/* Advanced filter clear all button. */
#define advFilterListVarName "gsidTable.do.advFilterList"
/* Advanced filter submit list. */
#define gsidSubjList "gsidTable.gsidSubjList"
#define gsidSeqList "gsidTable.gsidSeqList"
#define keyWordUploadPrefix "gsidTable.do.keyUp." /* Prefix for keyword uploads. */
#define keyWordPastePrefix "gsidTable.do.keyPaste." /* Prefix for keyword paste-ins. */
#define keyWordPastedPrefix "gsidTable.do.keyPasted."
/* Prefix for keyword paste-ins. */
#define keyWordClearPrefix "gsidTable.do.keyClear." /* Prefix for keyword paste-ins. */
#define colConfigPrefix "gsidTable.col."
/* Prefix for stuff set in configuration pages. */
#define colOrderVar "gsidTable.colOrder" /* Order of columns. */
#define defaultConfName "gsidTable.do.colDefault" /* Restore to default settings. */
#define hideAllConfName "gsidTable.do.colHideAll" /* Hide all columns. */
#define showAllConfName "gsidTable.do.colShowAll" /* Show all columns. */
#define redirectName "fromProg" /* cgi to redirect back to. */
/* ---- General purpose helper routines. ---- */
void saveSubjList(struct subjInfo *subjList);
/* save the filtered list of subject gsids to a file for other applications to use */
boolean gotAdvFilter();
/* Return TRUE if advanced filter variables are set. */
void doAdvFilter(struct sqlConnection *conn, struct column *colList);
/* Put up advanced filter page. */
void doAdvFilterClear(struct sqlConnection *conn, struct column *colList);
/* Clear variables in advanced filter page. */
void doAdvFilterList(struct sqlConnection *conn, struct column *colList);
/* List gene names matching advanced filter. */
struct subjInfo *advFilterResults(struct column *colList,
struct sqlConnection *conn);
/* Get list of genes that pass all advanced filter filters.
* If no filters are on this returns all genes. */
char *advFilterName(struct column *col, char *varName);
/* Return variable name for advanced filter. */
char *advFilterVal(struct column *col, char *varName);
/* Return value for advanced filter variable. Return NULL if it
* doesn't exist or if it is "" */
char *advFilterNameI(struct column *col, char *varName);
/* Return name for advanced filter that doesn't force search. */
void advFilterRemakeTextVar(struct column *col, char *varName, int size);
/* Make a text field of given name and size filling it in with
* the existing value if any. */
void advFilterAnyAllMenu(struct column *col, char *varName,
boolean defaultAny);
/* Make a drop-down menu with value all/any. */
boolean advFilterOrLogic(struct column *col, char *varName,
boolean defaultOr);
/* Return TRUE if user has selected 'all' from any/all menu */
void advFilterKeyUploadButton(struct column *col);
/* Make a button for uploading keywords. */
struct column *advFilterKeyUploadPressed(struct column *colList);
/* Return column where an key upload button was pressed, or
* NULL if none. */
void doAdvFilterKeyUpload(struct sqlConnection *conn, struct column *colList,
struct column *col);
/* Handle upload keyword list button press in advanced filter form. */
void advFilterKeyPasteButton(struct column *col);
/* Make a button for uploading keywords. */
struct column *advFilterKeyPastePressed(struct column *colList);
/* Return column where an key upload button was pressed, or
* NULL if none. */
void doAdvFilterKeyPaste(struct sqlConnection *conn, struct column *colList,
struct column *col);
/* Handle search keyword list button press in advanced filter form. */
struct column *advFilterKeyPastedPressed(struct column *colList);
/* Return column where an key upload button was pressed, or
* NULL if none. */
void doAdvFilterKeyPasted(struct sqlConnection *conn, struct column *colList,
struct column *col);
/* Handle search keyword list button press in advanced filter form. */
void advFilterKeyClearButton(struct column *col);
/* Make a button for uploading keywords. */
struct column *advFilterKeyClearPressed(struct column *colList);
/* Return column where an key upload button was pressed, or
* NULL if none. */
void doAdvFilterKeyClear(struct sqlConnection *conn, struct column *colList,
struct column *col);
/* Handle clear keyword list button press in advanced filter form. */
void lookupAdvFilterControls(struct column *col, struct sqlConnection *conn);
/* Print out controls for advanced filter on lookup column. */
void minMaxAdvFilterControls(struct column *col, struct sqlConnection *conn);
/* Print out controls for min/max advanced filter. */
void dropDownAdvFilterControls(struct column *col, struct sqlConnection *conn);
/* Print out controls for dropdown list filter. */
struct subjInfo *readAllSubjInfo(struct sqlConnection *conn, struct column *columns);
/* Get all main table gsidSubjInfo columns in use. */
boolean anyRealInCart(struct cart *cart, char *wild);
/* Return TRUE if variables are set matching wildcard. */
void controlPanelStart();
/* Put up start of tables around a control panel. */
void controlPanelEnd();
/* Put up end of tables around a control panel. */
void hotLinks();
/* Make top bar */
void makeTitle(char *title, char *helpName);
/* Make title bar. */
void doConfigure(struct sqlConnection *conn, struct column *colList);
//, char *bumpVar);
/* Configuration page. */
void doDefaultConfigure(struct sqlConnection *conn, struct column *colList );
/* Do configuration starting with defaults. */
void doConfigHideAll(struct sqlConnection *conn, struct column *colList);
/* Respond to hide all button in configuration page. */
void doConfigShowAll(struct sqlConnection *conn, struct column *colList);
/* Respond to show all button in configuration page. */
void fixSafariSpaceInQuotes(char *s);
/* Safari on the Mac changes a space (ascii 32) to a
* ascii 160 if it's inside of a single-quote in a
* text input box!? This tuns it back to a 32. */
char *colVarName(struct column *col, char *prefix);
/* Return variable name prefix.col->name. This is just a static
* variable, so don't nest these calls. */
void colButton(struct column *col, char *prefix, char *label);
/* Make a button named prefix.col->name with given label. */
struct column *colButtonPressed(struct column *colList, char *prefix);
/* See if a button named prefix.column is pressed for some
* column, and if so return the column, else NULL. */
void doGetSeqPage(struct sqlConnection *conn, struct column *colList);
/* Put up the get sequence page. */
void doGetSeq(struct sqlConnection *conn, struct subjInfo *siList, char *how);
#endif /* gsidTable_H */