58ada3bc410cb2ee88828d95f2be1168328bc0d9 braney Tue Feb 7 10:11:53 2017 -0800 more tweaks to label support for big* files. Added defaultLabelFields and labelSeparator. Also support "none" for both labelFields and defaultLabelFields. diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 3661eb6..dbb4428 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -5792,71 +5792,79 @@ printf("
Color track based on chromosome: ");
safef(colorVar, sizeof(colorVar), "%s.color", tdb->track);
colorSetting = cartUsualString(cart, colorVar, colorDefault);
cgiMakeRadioButton(colorVar, "on", sameString(colorSetting, "on"));
printf(" on ");
cgiMakeRadioButton(colorVar, "off", sameString(colorSetting, "off"));
printf(" off ");
printf("
");
filterByChromCfgUi(cart,tdb);
}
struct slPair *buildFieldList(struct trackDb *tdb, char *trackDbVar, struct asObject *as)
/* Build up a hash of a list of fields in an AS file. */
{
-struct slPair *list = NULL;
char *fields = trackDbSettingClosestToHome(tdb, trackDbVar);
-if (fields != NULL)
- {
+if (fields == NULL)
+ return NULL;
+
+if (sameString(fields, "none"))
+ return slPairNew("none", NULL);
+
+struct slPair *list = NULL;
struct slName *thisField, *fieldList = slNameListFromComma(fields);
for(thisField = fieldList; thisField; thisField = thisField->next)
{
char *trimLabel = trimSpaces(thisField->name);
unsigned colNum = asColumnFindIx(as->columnList, trimLabel);
if (colNum == -1)
- errAbort("cannot find field named '%s' in as file '%s'",
+ errAbort("cannot find field named '%s' in AS file '%s'",
trimLabel, as->name);
slAddHead(&list, slPairNew(trimLabel, NULL + colNum));
}
- }
slReverse(&list);
return list;
}
void labelCfgUi(char *db, struct cart *cart, struct trackDb *tdb)
/* If there is a labelFields for a bigBed, this routine is called to put up the label options. */
{
+if (trackDbSettingClosestToHomeOn(tdb, "linkIdInName"))
+ return;
+
struct asObject *as = asForDb(tdb, db);
struct slPair *labelList = buildFieldList(tdb, "labelFields", as);
struct slPair *defaultLabelList = buildFieldList(tdb, "defaultLabelFields", as);
char varName[1024];
-if (labelList == NULL)
+if ((labelList == NULL) || sameString(labelList->name, "none"))
return;
printf("Label: ");
struct slPair *thisLabel = labelList;
for(; thisLabel; thisLabel = thisLabel->next)
{
safef(varName, sizeof(varName), "%s.label.%s", tdb->track, thisLabel->name);
boolean isDefault = FALSE;
if (defaultLabelList == NULL)
isDefault = (thisLabel == labelList);
+ else if (sameString(defaultLabelList->name, "none"))
+ isDefault = FALSE;
else
isDefault = (slPairFind(defaultLabelList, thisLabel->name) != NULL);
boolean option = cartUsualBoolean(cart, varName, isDefault);
cgiMakeCheckBox(varName, option);
// find comment for the column listed
struct asColumn *col = as->columnList;
unsigned num = ptToInt(thisLabel->val);
for(; col && num--; col = col->next)
;
assert(col);
printf(" %s ", col->comment);
}
}