src/hg/hgGenome/mainPage.c 1.26
1.26 2009/04/06 05:33:50 galt
deal with javascript and cases where only cga (clade,genome,assembly) will appear since there are no usable chroms
Index: src/hg/hgGenome/mainPage.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgGenome/mainPage.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -b -B -U 4 -r1.25 -r1.26
--- src/hg/hgGenome/mainPage.c 3 Sep 2008 19:18:54 -0000 1.25
+++ src/hg/hgGenome/mainPage.c 6 Apr 2009 05:33:50 -0000 1.26
@@ -385,12 +385,14 @@
char *curVal = graphColorAt(row, col);
cgiMakeDropListFull(varName, allColors, allColors, ArraySize(allColors), curVal, js);
}
-static void addThresholdGraphCarries(struct dyString *dy, int graphRows, int graphCols)
+static void addThresholdGraphCarries(struct dyString *dy, int graphRows, int graphCols, boolean cgaOnly)
/* Add javascript that carries over threshold and graph vars
* to new form. */
{
+if (cgaOnly)
+ return;
jsTextCarryOver(dy, getThresholdName());
int i,j;
for (i=0; i<graphRows; ++i)
for (j=0; j<graphCols; ++j)
@@ -399,42 +401,42 @@
jsDropDownCarryOver(dy, graphColorVarName(i,j));
}
}
-static struct dyString *onChangeStart(int graphRows, int graphCols)
+static struct dyString *onChangeStart(int graphRows, int graphCols, boolean cgaOnly)
/* Return common prefix to onChange javascript string */
{
struct dyString *dy = jsOnChangeStart();
-addThresholdGraphCarries(dy, graphRows, graphCols);
+addThresholdGraphCarries(dy, graphRows, graphCols, cgaOnly);
return dy;
}
-static char *onChangeClade(int graphRows, int graphCols)
+static char *onChangeClade(int graphRows, int graphCols, boolean cgaOnly)
/* Return javascript executed when they change clade. */
{
-struct dyString *dy = onChangeStart(graphRows, graphCols);
+struct dyString *dy = onChangeStart(graphRows, graphCols, cgaOnly);
jsDropDownCarryOver(dy, "clade");
dyStringAppend(dy, " document.hiddenForm.org.value=0;");
dyStringAppend(dy, " document.hiddenForm.db.value=0;");
return jsOnChangeEnd(&dy);
}
-static char *onChangeOrg(int graphRows, int graphCols)
+static char *onChangeOrg(int graphRows, int graphCols, boolean cgaOnly)
/* Return javascript executed when they change organism. */
{
-struct dyString *dy = onChangeStart(graphRows, graphCols);
+struct dyString *dy = onChangeStart(graphRows, graphCols, cgaOnly);
jsDropDownCarryOver(dy, "clade");
jsDropDownCarryOver(dy, "org");
dyStringAppend(dy, " document.hiddenForm.db.value=0;");
return jsOnChangeEnd(&dy);
}
-static void saveOnChangeOtherFunction(int graphRows, int graphCols)
+static void saveOnChangeOtherFunction(int graphRows, int graphCols, boolean cgaOnly)
/* Write out Javascript function to save vars in hidden
* form and submit. */
{
struct dyString *dy = dyStringNew(0);
-addThresholdGraphCarries(dy, graphRows, graphCols);
+addThresholdGraphCarries(dy, graphRows, graphCols, cgaOnly);
jsDropDownCarryOver(dy, "clade");
jsDropDownCarryOver(dy, "org");
jsDropDownCarryOver(dy, "db");
char *js = jsOnChangeEnd(&dy);
@@ -538,54 +540,66 @@
/* Start form and save session var. */
hPrintf("<FORM ACTION=\"%s\" NAME=\"mainForm\" METHOD=GET>\n", scriptName);
cartSaveSession(cart);
-/* notify if appears to be non-chrom based assembly */
-int count = sqlQuickNum(conn, "select count(*) from chromInfo");
-if (count > 500)
+
+
+/* it might be a non-chrom based assembly */
+
+// defined externally in import.c at the moment
+extern struct slName *getChroms();
+/* Get a chrom list. */
+
+
+struct slName *chromList = getChroms();
+int count = slCount(chromList);
+boolean cgaOnly = FALSE;
+if ((count > 500) || (count == 0))
{
- graphRows = 0;
- graphCols = 0;
+ cgaOnly = TRUE;
}
+
/* Write some javascript functions */
jsWriteFunctions();
-saveOnChangeOtherFunction(graphRows, graphCols);
+saveOnChangeOtherFunction(graphRows, graphCols, cgaOnly);
+char *jsOther = onChangeOther(graphRows, graphCols);
/* Print clade, genome and assembly line. */
+hPrintf("<TABLE>");
boolean gotClade = hGotClade();
-char *jsOther = onChangeOther(graphRows, graphCols);
- {
- hPrintf("<TABLE>");
- if (gotClade)
+if (gotClade)
{
hPrintf("<TR><TD><B>clade:</B>\n");
- printCladeListHtml(hGenome(database), onChangeClade(graphRows, graphCols));
+ printCladeListHtml(hGenome(database), onChangeClade(graphRows, graphCols, cgaOnly));
htmlNbSpaces(3);
hPrintf("<B>genome:</B>\n");
- printGenomeListForCladeHtml(database, onChangeOrg(graphRows, graphCols));
+ printGenomeListForCladeHtml(database, onChangeOrg(graphRows, graphCols, cgaOnly));
}
- else
+else
{
hPrintf("<TR><TD><B>genome:</B>\n");
- printGenomeListHtml(database, onChangeOrg(graphRows, graphCols));
- }
- htmlNbSpaces(3);
- hPrintf("<B>assembly:</B>\n");
- printAssemblyListHtml(database, jsOther);
- hPrintf("</TD></TR>\n");
- hPrintf("</TABLE>");
+ printGenomeListHtml(database, onChangeOrg(graphRows, graphCols, cgaOnly));
}
+htmlNbSpaces(3);
+hPrintf("<B>assembly:</B>\n");
+printAssemblyListHtml(database, jsOther);
+hPrintf("</TD></TR>\n");
+hPrintf("</TABLE>");
+
-if (count > 500) /* non-chrom assembly */
+if (cgaOnly)
+ {
+ if (count > 500) /* Too-many-chrom assembly */
+ {
+ warn("Sorry, too many chromosomes. "
+ "This one has %d. Please select another organism or assembly.", count);
+ }
+ else if (count == 0) /* non-chrom assembly */
{
warn("Sorry, can only do genome layout on assemblies mapped to chromosomes. "
- "This one has %d contigs. Please select another organism or assembly.", count);
- /* dummy hidden variable to make javascript happy */
- hPrintf("<INPUT TYPE=\"HIDDEN\" NAME=\"%s\" SIZE=\"%d\" VALUE=\"%g\"",
- getThresholdName(), 3, getThreshold());
- hPrintf(" onchange=\"changeOther();\" "
- "onkeypress=\"return submitOnEnter(event,document.mainForm);\">");
+ "This one has no usable chromosomes. Please select another organism or assembly.");
+ }
}
else
{