src/hg/makeDb/hgTrackDb/hgTrackDb.c 1.51
1.51 2009/06/04 19:14:43 hiram
Properly mark composite parents and children so that ClosestToHome settings will function OK
Index: src/hg/makeDb/hgTrackDb/hgTrackDb.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/makeDb/hgTrackDb/hgTrackDb.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -b -B -U 4 -r1.50 -r1.51
--- src/hg/makeDb/hgTrackDb/hgTrackDb.c 26 Feb 2009 04:07:21 -0000 1.50
+++ src/hg/makeDb/hgTrackDb/hgTrackDb.c 4 Jun 2009 19:14:43 -0000 1.51
@@ -297,9 +297,9 @@
for (td = tdList; td != NULL; td = td->next)
{
if (isEmpty(td->html))
{
- char *htmlName = trackDbSetting(td, "html");
+ char *htmlName = trackDbSettingClosestToHome(td, "html");
if (htmlName == NULL)
htmlName = td->tableName;
safef(fileName, sizeof(fileName), "%s/%s.html", dirName, htmlName);
if (fileExists(fileName))
@@ -339,8 +339,9 @@
{
int numSubGroups; /* count of subGroups */
struct hash *nameHash; /* hash of subGroup names */
struct hash *values[10]; /* array of value hash pointers in order */
+struct trackDb *compositeTdb; /* tdb of composite parent */
};
static void checkSubGroups(struct trackDb *tdList)
/* check integrity of subGroup clauses */
@@ -358,8 +359,10 @@
struct subGroupData *sgd;
char subGroupName[256];
AllocVar(sgd);
sgd->nameHash = newHash(3);
+ sgd->compositeTdb = td;
+ tdbMarkAsComposite(td);
while(i<10)
{
safef(subGroupName, sizeof(subGroupName), "subGroup%d", i+1);
char *sgSetting = trackDbSetting(td, subGroupName);
@@ -403,9 +406,12 @@
char *words[2];
chopLine(cloneString(trackName), words);
trackName = words[0];
+
struct subGroupData *sgd = hashFindVal(compositeHash, trackName);
+ td->parent = sgd->compositeTdb;
+ tdbMarkAsCompositeChild(td);
if (!sgd)
{
verbose(1,"parent %s missing for subtrack %s\n", trackName, td->tableName);
continue;
@@ -612,19 +618,20 @@
/* Load in html and settings fields. */
for (td = tdList; td != NULL; td = td->next)
{
- if (isEmpty(td->html))
+ if ( (! tdbIsCompositeChild(td)) && isEmpty(td->html))
{
if (strict && !trackDbSetting(td, "subTrack") && !sameString(td->tableName,"cytoBandIdeo"))
{
fprintf(stderr, "Warning: html missing for %s %s %s '%s'\n",org, database, td->tableName, td->shortLabel);
}
}
else
{
- updateBigTextField(conn, trackDbName, "tableName", td->tableName,
- "html", td->html);
+ if (! tdbIsCompositeChild(td))
+ updateBigTextField(conn, trackDbName, "tableName",
+ td->tableName, "html", td->html);
}
if (td->settingsHash != NULL)
{
char *settings = settingsFromHash(td->settingsHash);