src/lib/cheapcgi.c 1.115
1.115 2009/04/01 19:57:06 tdreszer
Added controls for int and double which valdate using javascript. Requires utils.js and jQuery.js
Index: src/lib/cheapcgi.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/lib/cheapcgi.c,v
retrieving revision 1.114
retrieving revision 1.115
diff -b -B -U 4 -r1.114 -r1.115
--- src/lib/cheapcgi.c 1 Apr 2009 06:56:42 -0000 1.114
+++ src/lib/cheapcgi.c 1 Apr 2009 19:57:06 -0000 1.115
@@ -1154,8 +1154,57 @@
printf("<INPUT TYPE=TEXT NAME=\"%s\" SIZE=%d VALUE=%d>", varName,
maxDigits, initialVal);
}
+void cgiMakeIntVarInRange(char *varName, int initialVal, char *title, int width, char *min, char *max)
+/* Make a integer control filled with initial value.
+ If min and/or max are non-NULL will enforce range
+ Requires utils.js jQuery.js and inputBox class */
+{
+if(width==0)
+ {
+ if(max)
+ width=strlen(max)*10;
+ else
+ {
+ int sz=initialVal+1000;
+ if(min)
+ sz=atoi(min) + 1000;
+ width = 10;
+ while(sz/=10)
+ width+=10;
+ }
+ }
+if (width < 65)
+ width = 65;
+
+printf("<INPUT TYPE=TEXT class='inputBox' name=\"%s\" style='width: %dpx' value=%d",varName,width,initialVal);
+printf(" onChange='return validateInt(this,%s,%s);'",(min?min:"\"null\""),(max?max:"\"null\""));
+if(title)
+ printf(" title='%s'",title);
+printf(">\n");
+}
+void cgiMakeIntVarWithLimits(char *varName, int initialVal, char *title, int width, int min, int max)
+{
+char minLimit[20];
+char maxLimit[20];
+safef(minLimit,sizeof(minLimit),"%d",min);
+safef(maxLimit,sizeof(maxLimit),"%d",max);
+cgiMakeIntVarInRange(varName,initialVal,title,width,minLimit,maxLimit);
+}
+void cgiMakeIntVarWithMin(char *varName, int initialVal, char *title, int width, int min)
+{
+char minLimit[20];
+safef(minLimit,sizeof(minLimit),"%d",min);
+cgiMakeIntVarInRange(varName,initialVal,title,width,minLimit,NULL);
+}
+void cgiMakeIntVarWithMax(char *varName, int initialVal, char *title, int width, int max)
+{
+char maxLimit[20];
+safef(maxLimit,sizeof(maxLimit),"%d",max);
+cgiMakeIntVarInRange(varName,initialVal,title,width,NULL,maxLimit);
+}
+
void cgiMakeDoubleVar(char *varName, double initialVal, int maxDigits)
/* Make a text control filled with initial floating-point value. */
{
if (maxDigits == 0) maxDigits = 4;
@@ -1163,8 +1212,48 @@
printf("<INPUT TYPE=TEXT NAME=\"%s\" SIZE=%d VALUE=%g>", varName,
maxDigits, initialVal);
}
+void cgiMakeDoubleVarInRange(char *varName, double initialVal, char *title, int width, char *min, char *max)
+/* Make a floating point control filled with initial value.
+ If min and/or max are non-NULL will enforce range
+ Requires utils.js jQuery.js and inputBox class */
+{
+if(width==0)
+ {
+ if(max)
+ width=strlen(max)*10;
+ }
+if (width < 65)
+ width = 65;
+
+printf("<INPUT TYPE=TEXT class='inputBox' name=\"%s\" style='width: %dpx' value=%.0lf",varName,width,initialVal);
+printf(" onChange='return validateFloat(this,%s,%s);'",(min?min:"\"null\""),(max?max:"\"null\""));
+if(title)
+ printf(" title='%s'",title);
+printf(">\n");
+}
+void cgiMakeDoubleVarWithLimits(char *varName, double initialVal, char *title, int width, double min, double max)
+{
+char minLimit[20];
+char maxLimit[20];
+safef(minLimit,sizeof(minLimit),"%g",min);
+safef(maxLimit,sizeof(maxLimit),"%g",max);
+cgiMakeDoubleVarInRange(varName,initialVal,title,width,minLimit,maxLimit);
+}
+void cgiMakeDoubleVarWithMin(char *varName, double initialVal, char *title, int width, double min)
+{
+char minLimit[20];
+safef(minLimit,sizeof(minLimit),"%g",min);
+cgiMakeDoubleVarInRange(varName,initialVal,title,width,minLimit,NULL);
+}
+void cgiMakeDoubleVarWithMax(char *varName, double initialVal, char *title, int width, double max)
+{
+char maxLimit[20];
+safef(maxLimit,sizeof(maxLimit),"%g",max);
+cgiMakeDoubleVarInRange(varName,initialVal,title,width,NULL,maxLimit);
+}
+
void cgiMakeDropListClassWithStyleAndJavascript(char *name, char *menu[],
int menuSize, char *checked, char *class, char *style,char *javascript)
/* Make a drop-down list with names, text class, style and javascript. */
{
@@ -1578,4 +1667,19 @@
cookieHash = NULL;
cookieList = NULL;
}
+void commonCssStyles()
+/* Defines a few common styles to use through CSS */
+{
+ printf("\n<style type='text/css'>\n");
+ printf(".trDrag {background-color:%s;} .pale {background-color:%s;}\n",COLOR_BG_GHOST,COLOR_BG_PALE);
+ printf(".inputBox {border: 2px inset %s;}\n",COLOR_LTGREY);
+ printf(".greenRoof {border-top: 3px groove %s;}\n",COLOR_DARKGREEN);
+ //printf(".greenFloor {border-bottom: 3px ridge %s;}\n",COLOR_DARKGREEN); // Unused
+ //printf(".hiddenRoof {border-top: 0px solid %s;}\n",COLOR_BG_ALTDEFAULT); // Doesn't work
+ //printf(".hiddenFloor {border-bottom: 0px solid %s;}\n",COLOR_BG_ALTDEFAULT); // Doesn't work
+ printf(".greenBox {border: 5px outset %s;}\n",COLOR_DARKGREEN);
+ printf(".blueBox {border: 4px inset %s;}\n",COLOR_DARKBLUE);
+ puts("</style>");
+}
+