946812f7ebe9bd45e3e3fbaaa3db102e9696a973 braney Thu Mar 24 14:21:20 2011 -0700 add support for supertracks in hubs #3381 diff --git src/hg/lib/trackDbCustom.c src/hg/lib/trackDbCustom.c index d1e4436..5946bc7 100644 --- src/hg/lib/trackDbCustom.c +++ src/hg/lib/trackDbCustom.c @@ -587,49 +587,62 @@ { struct superTrackInfo *stInfo = getSuperTrackInfo(tdb); if(stInfo == NULL || stInfo->isSuper) return; tdb->parentName = cloneString(stInfo->parentName); tdb->visibility = stInfo->defaultVis; tdbMarkAsSuperTrackChild(tdb); if(tdb->parent) { tdbMarkAsSuperTrack(tdb->parent); refAddUnique(&(tdb->parent->children),tdb); } freeMem(stInfo); } +char *maybeSkipHubPrefix(char *track) +{ +if (!startsWith("hub_", track)) + return track; + +char *nextUnderBar = strchr(track + sizeof "hub_", '_'); + +if (nextUnderBar) + return nextUnderBar + 1; + +return track; +} + void trackDbSuperMarkup(struct trackDb *tdbList) /* Set trackDb from superTrack setting */ { struct trackDb *tdb; struct hash *superHash = hashNew(0); struct superTrackInfo *stInfo; /* find supertracks, setup their settings */ for (tdb = tdbList; tdb != NULL; tdb = tdb->next) { stInfo = getSuperTrackInfo(tdb); if (!stInfo) continue; if (stInfo->isSuper) { tdbMarkAsSuperTrack(tdb); tdb->isShow = stInfo->isShow; if (!hashLookup(superHash, tdb->track)) - hashAdd(superHash, tdb->track, tdb); + hashAdd(superHash, maybeSkipHubPrefix(tdb->track), tdb); tdb->children = NULL; // assertable? } freeMem(stInfo); } /* adjust settings on supertrack members after verifying they have * a supertrack configured in this trackDb */ for (tdb = tdbList; tdb != NULL; tdb = tdb->next) { stInfo = getSuperTrackInfo(tdb); if (!stInfo) continue; if(!stInfo->isSuper) { tdb->parent = hashFindVal(superHash, stInfo->parentName); if (tdb->parent)