src/hg/hgCustom/hgCustom.c 1.135
1.135 2009/12/09 19:28:10 galt
Added column to display remote ct errors (big*, bam).
Fixed some stray </TD> tags.
Uses new func javaScriptLiteralEncode().
Index: src/hg/hgCustom/hgCustom.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgCustom/hgCustom.c,v
retrieving revision 1.134
retrieving revision 1.135
diff -b -B -U 4 -r1.134 -r1.135
--- src/hg/hgCustom/hgCustom.c 9 Nov 2009 22:32:18 -0000 1.134
+++ src/hg/hgCustom/hgCustom.c 9 Dec 2009 19:28:10 -0000 1.135
@@ -436,17 +436,19 @@
if (cartVarExists(cart, hgCtDoRefreshSet))
setAllUpdate = TRUE;
/* determine which columns to display (avoid empty columns) */
-int updateCt = 0, itemCt = 0, posCt = 0;
+int updateCt = 0, itemCt = 0, posCt = 0, errCt = 0;
for (ct = ctList; ct != NULL; ct = ct->next)
{
if (ctDataUrl(ct))
updateCt++;
if (ctItemCount(ct) > 0)
itemCt++;
if (ctInitialPosition(ct) || ctFirstItemPos(ct))
posCt++;
+ if (ct->networkErrMsg)
+ errCt++;
}
hTableStart();
cgiSimpleTableRowStart();
tableHeaderField("Name", "Short track identifier");
@@ -456,8 +458,10 @@
if (itemCt)
tableHeaderField("Items", "Count of discrete items in track");
if (posCt)
tableHeaderField("Pos"," Go to genome browser at default track position or first item");
+if (errCt)
+ tableHeaderField("Error"," Error in custom track");
boolean showAllButtons = FALSE;
if (numCts > 3)
showAllButtons = TRUE;
@@ -529,26 +533,38 @@
}
else
puts("<TD> </TD>");
}
+ if (errCt)
+ {
+ if (ct->networkErrMsg)
+ {
+ printf("\n<TD><A href=\"javascript:void(0)\" onClick=\"alert('%s')\">Show</A></TD>\n",
+ javaScriptLiteralEncode(ct->networkErrMsg));
+ }
+ else
+ puts("<TD> </TD>");
+ }
/* Delete checkboxes */
- printf("</TD><TD COLSPAN=%d ALIGN=CENTER>", showAllButtons ? 2 : 1);
+ printf("<TD COLSPAN=%d ALIGN=CENTER>", showAllButtons ? 2 : 1);
safef(buf, sizeof(buf), "%s_%s", hgCtDeletePrefix,
ct->tdb->tableName);
cgiMakeCheckBox(buf, setAllDelete);
+ puts("</TD>");
/* Update checkboxes */
if (updateCt)
{
- printf("</TD><TD COLSPAN=%d ALIGN=CENTER>", showAllButtons ? 2 : 1);
+ printf("<TD COLSPAN=%d ALIGN=CENTER>", showAllButtons ? 2 : 1);
safef(buf, sizeof(buf), "%s_%s", hgCtRefreshPrefix,
ct->tdb->tableName);
if ((dataUrl = ctDataUrl(ct)) != NULL)
cgiMakeCheckBoxWithMsg(buf, setAllUpdate, dataUrl);
else
puts(" ");
+ puts("</TD>");
}
- puts("</TD></TR>\n");
+ puts("</TR>\n");
}
if (showAllButtons)
{
cgiSimpleTableRowStart();
@@ -1155,9 +1171,26 @@
addWarning(dsWarn, warn);
ctUpdated = TRUE;
}
if (ctUpdated || ctConfigUpdate(ctFileName))
+ {
customTracksSaveCart(database, cart, ctList);
+
+ /* refresh ctList again to pickup remote resource error state */
+ struct errCatch *catch = errCatchNew();
+ if (errCatchStart(catch))
+ ctList = customTracksParseCartDetailed(database, cart, &browserLines, &ctFileName,
+ &replacedCts, NULL, &err);
+ errCatchEnd(catch);
+ if (catch->gotError)
+ {
+ addWarning(dsWarn, err);
+ addWarning(dsWarn, catch->message->string);
+ ctParseError = TRUE;
+ }
+ errCatchFree(&catch);
+
+ }
warn = dyStringCannibalize(&dsWarn);
if (!initialDb || ctList || cartVarExists(cart, hgCtDoDelete))
doManageCustom(warn);
else if (ctParseError)