3155ab7933aae3bf9e111c826290f2605e560b16
braney
Tue Oct 31 15:46:51 2017 -0700
fixes from code review #20441
diff --git src/hg/hgCollection/hgCollection.c src/hg/hgCollection/hgCollection.c
index 628b42d..b726d8a 100644
--- src/hg/hgCollection/hgCollection.c
+++ src/hg/hgCollection/hgCollection.c
@@ -23,32 +23,32 @@
/* Global Variables */
struct hash *oldVars = NULL; /* The cart before new cgi stuff added. */
// Null terminated list of CGI Variables we don't want to save permanently:
char *excludeVars[] = {"Submit", "submit", "cmd", "track", "collection", "jsonp", NULL,};
struct track
{
struct track *next;
struct track *trackList;
struct trackDb *tdb;
char *name;
char *shortLabel;
char *longLabel;
char *visibility;
unsigned long color;
-char *viewFunc;
-char *missing;
+char *viewFunc; // The method by which calculated tracks should be calculated
+char *missingMethod; // How should missing data be treated in calculated tracks
};
struct trackDbRef
{
struct trackDbRef *next;
struct trackDb *tdb;
int order;
};
static char *makeUnique(struct hash *nameHash, char *name)
// Make the name of this track unique.
{
char *skipHub = trackHubSkipHubName(name);
if (hashLookup(nameHash, skipHub) == NULL)
{
@@ -72,70 +72,70 @@
return NULL;
}
static boolean trackCanBeAdded(struct trackDb *tdb)
// are we allowing this track into a custom composite
{
return (tdb->subtracks == NULL) && !startsWith("wigMaf",tdb->type) && (startsWith("wig",tdb->type) || startsWith("bigWig",tdb->type) || startsWith("bedGraph",tdb->type)) ;
}
static void printGroup(char *parent, struct trackDb *tdb, boolean folder, boolean user)
// output list elements for a group
{
char *userString = "";
char *prefix = "";
char *viewFunc = NULL;
-char *missing = NULL;
+char *missingMethod = NULL;
if (user)
{
if (tdb->parent && tdb->subtracks)
{
viewFunc = trackDbSetting(tdb, "viewFunc");
- missing = trackDbSetting(tdb, "missing");
+ missingMethod = trackDbSetting(tdb, "missingMethod");
userString = "data-jstree='{\\\"icon\\\":\\\"../images/folderC.png\\\"}' viewType='view' class='folder'";
}
else if (tdb->subtracks)
userString = "data-jstree='{\\\"icon\\\":\\\"../images/folderC.png\\\"}' viewType='track' class='folder'";
else
userString = "data-jstree='{\\\"icon\\\":\\\"fa fa-minus-square\\\"}' viewType='track'";
}
else
{
if (tdb->parent && tdb->subtracks)
userString = "data-jstree='{\\\"icon\\\":\\\"../images/folderC.png\\\"}' class='nodrop' viewType='view'";
else if (tdb->subtracks)
userString = "data-jstree='{\\\"icon\\\":\\\"../images/folderC.png\\\"}' class='nodrop' viewType='track'";
else
userString = "data-jstree='{ \\\"icon\\\":\\\"fa fa-plus\\\"}' class='nodrop' viewType='track'";
}
#define IMAKECOLOR_32(r,g,b) ( ((unsigned int)b<<0) | ((unsigned int)g << 8) | ((unsigned int)r << 16))
char buffer[1024];
char *viewFuncString = "";
if (viewFunc != NULL)
{
safef(buffer, sizeof buffer, "viewFunc='%s' ", viewFunc);
viewFuncString = cloneString(buffer);
}
char *missingString = "";
-if (missing != NULL)
+if (missingMethod != NULL)
{
- safef(buffer, sizeof buffer, "missing='%s' ", missing);
+ safef(buffer, sizeof buffer, "missingMethod='%s' ", missingMethod);
missingString = cloneString(buffer);
}
jsInlineF("
%s", tdb->shortLabel, tdb->longLabel,IMAKECOLOR_32(tdb->colorR,tdb->colorG,tdb->colorB), viewFuncString, missingString, hStringFromTv(tdb->visibility), prefix, trackHubSkipHubName(tdb->track), userString, tdb->shortLabel );
jsInlineF(" (%s)", tdb->longLabel);
if (tdb->subtracks)
{
struct trackDb *subTdb;
jsInlineF("");
for(subTdb = tdb->subtracks; subTdb; subTdb = subTdb->next)
printGroup(trackHubSkipHubName(tdb->track), subTdb, user && (subTdb->subtracks != NULL), user);
jsInlineF("
");
@@ -401,31 +401,31 @@
static void doMainPage(struct cart *cart, char *db, struct grp *groupList, struct trackDb *trackList)
/* Print out initial HTML of control page. */
{
webStartGbNoBanner(cart, db, "Collections");
webIncludeResourceFile("gb.css");
webIncludeResourceFile("spectrum.min.css");
webIncludeResourceFile("hgGtexTrackSettings.css");
webIncludeFile("inc/hgCollection.html");
char *assembly = stringBetween("(", ")", hFreezeFromDb(db));
jsInlineF("$('#assembly').text('%s');\n",assembly);
printHelp();
doTable(cart, db, groupList, trackList);
-puts("");
+puts("");
puts("");
puts("");
puts("");
puts("\n");
jsIncludeFile("utils.js", NULL);
jsIncludeFile("ajax.js", NULL);
jsIncludeFile("spectrum.min.js", NULL);
jsIncludeFile("hgCollection.js", NULL);
webEndGb();
}
static char *getSqlBigWig(struct sqlConnection *conn, char *db, struct trackDb *tdb)
// figure out the bigWig for native tables
{
char buffer[4096];
@@ -517,32 +517,32 @@
}
static int outView(FILE *f, struct sqlConnection *conn, char *db, struct track *view, char *parent, struct hash *nameHash, struct hash *collectionNameHash, int priority, char *hubName)
// output a view to a trackhub
{
fprintf(f,"\ttrack %s\n\
\tshortLabel %s\n\
\tlongLabel %s\n\
\tview %s \n\
\tcontainer mathWig\n\
\tautoScale on \n\
\tparent %s \n\
\tcolor %ld,%ld,%ld \n\
\tpriority %d\n\
\tviewFunc %s \n\
-\tmissing %s \n\
-\tvisibility %s\n", view->name, view->shortLabel, view->longLabel, view->name, parent, 0xff& (view->color >> 16),0xff& (view->color >> 8),0xff& (view->color), priority++, view->viewFunc, view->missing, view->visibility);
+\tmissingMethod %s \n\
+\tvisibility %s\n", view->name, view->shortLabel, view->longLabel, view->name, parent, 0xff& (view->color >> 16),0xff& (view->color >> 8),0xff& (view->color), priority++, view->viewFunc, view->missingMethod, view->visibility);
fprintf(f, "\n");
struct track *track = view->trackList;
for(; track; track = track->next)
{
struct trackDb *tdb = hashMustFindVal(nameHash, track->name);
modifyName(tdb, hubName, collectionNameHash);
outTdb(conn, db, f, track->name,tdb, view->name, track->visibility, track->color, track, nameHash, collectionNameHash, 2, priority++);
}
return priority;
}
static void updateHub(struct cart *cart, char *db, struct track *collectionList, struct hash *nameHash)
@@ -628,33 +628,33 @@
struct jsonElement *strEle = (struct jsonElement *)hashMustFindVal(attrHash, "name");
track->name = jsonStringEscape(strEle->val.jeString);
hashAdd(trackHash, parentId, track);
strEle = (struct jsonElement *)hashMustFindVal(attrHash, "shortlabel");
track->shortLabel = jsonStringEscape(strEle->val.jeString);
strEle = (struct jsonElement *)hashMustFindVal(attrHash, "longlabel");
track->longLabel = jsonStringEscape(strEle->val.jeString);
strEle = (struct jsonElement *)hashMustFindVal(attrHash, "visibility");
track->visibility = jsonStringEscape(strEle->val.jeString);
strEle = (struct jsonElement *)hashMustFindVal(attrHash, "color");
track->color = hexStringToLong(jsonStringEscape(strEle->val.jeString));
strEle = (struct jsonElement *)hashFindVal(attrHash, "viewfunc");
if (strEle)
track->viewFunc = jsonStringEscape(strEle->val.jeString);
- strEle = (struct jsonElement *)hashFindVal(attrHash, "missing");
+ strEle = (struct jsonElement *)hashFindVal(attrHash, "missingMethod");
if (strEle)
- track->missing = jsonStringEscape(strEle->val.jeString);
+ track->missingMethod = jsonStringEscape(strEle->val.jeString);
}
}
}
static struct track *parseJsonElements( struct jsonElement *collectionElements)
// parse the JSON returned from the ap
{
struct track *collectionList = NULL;
struct hash *trackHash = hashNew(5);
struct jsonParseData jpd = {&collectionList, trackHash};
jsonElementRecurse(collectionElements, NULL, FALSE, jsonObjStart, NULL, &jpd);
slReverse(&collectionList);
return collectionList;
}