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
     {