6629bda6c730982c3e4602ec78ff3b0cbf701c61 braney Tue May 25 17:31:38 2021 -0700 implement cart editing. Needs doc. ;-) diff --git src/hg/makeDb/hgTrackDb/hgTrackDb.c src/hg/makeDb/hgTrackDb/hgTrackDb.c index 27113e8..2f0380b 100644 --- src/hg/makeDb/hgTrackDb/hgTrackDb.c +++ src/hg/makeDb/hgTrackDb/hgTrackDb.c @@ -786,40 +786,62 @@ if (!hashLookup(superTrackHash, parent->track)) { hashAdd(superTrackHash, parent->track, parent); slAddHead(&tdbList, parent); } } slAddHead(&tdbList, tdb); } slFreeList(&refList); hashFree(&superTrackHash); slReverse(&tdbList); return tdbList; } +static struct trackDb *makeCartVersionTrack() +/* Build a trackDb entry for the cartVersion pseudo track that keeps track of the + * highest cartVersion used in this trackDb list. + */ +{ +struct trackDb *cartVerTdb; + +AllocVar(cartVerTdb); +cartVerTdb->track = cloneString("cartVersion"); +cartVerTdb->priority = -trackDbGetCartVersion(); +cartVerTdb->shortLabel = cloneString("cartVersion"); +cartVerTdb->longLabel = cloneString("cartVersion"); +cartVerTdb->html = cloneString("cartVersion"); +cartVerTdb->type = cloneString("cartVersion"); +cartVerTdb->url = cloneString("cartVersion"); +cartVerTdb->grp = cloneString("cartVersion"); +cartVerTdb->settings = cloneString("cartVersion"); + +return cartVerTdb; +} + void hgTrackDb(char *org, char *database, char *trackDbName, char *sqlFile, char *hgRoot, boolean strict) /* hgTrackDb - Create trackDb table from text files. */ { struct trackDb *td; char *tab = rTempName(getTempDir(), trackDbName, ".tab"); struct trackDb *tdbList = buildTrackDb(org, database, hgRoot, strict); tdbList = flatten(tdbList); slSort(&tdbList, trackDbCmp); +slAddTail(&tdbList, makeCartVersionTrack()); verbose(1, "Loaded %d track descriptions total\n", slCount(tdbList)); /* Write to tab-separated file; hold off on html, since it must be encoded */ { verbose(2, "Starting write of tabs to %s\n", tab); FILE *f = mustOpen(tab, "w"); for (td = tdbList; td != NULL; td = td->next) { hVarSubstTrackDb(td, database); char *hold = td->html; td->html = ""; subChar(td->type, '\t', ' '); /* Tabs confuse things. */ subChar(td->shortLabel, '\t', ' '); /* Tabs confuse things. */ subChar(td->longLabel, '\t', ' '); /* Tabs confuse things. */ trackDbTabOut(td, f);