c3bb5a0e0757e2f66a06395b05fc78a7f2957e87 hiram Fri Mar 23 11:34:33 2018 -0700 manage dataVersion trackDb setting in conjuction with hgFixed.trackVersion table refs #20215 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index c992b97..61068af 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -8957,56 +8957,64 @@ ins[11] = "$n"; outs[11] = scName; ins[12] = "$taxId"; outs[12] = taxId; uUrl = subMulti(url, ArraySize(ins), ins, outs); outs[0] = eItem; eUrl = subMulti(url, ArraySize(ins), ins, outs); freeDyString(&uUrl); freeMem(eItem); freeMem(scName); return eUrl->string; } -void printDataVersion(char *database, struct trackDb *tdb) -/* If this annotation has a dataVersion setting, print it. - * check hgFixed.trackVersion, meta data and trackDb 'dataVersion'. */ +char *checkDataVersion(char *database, struct trackDb *tdb) +/* see if trackDb has a dataVersion setting and check that file for version */ { // try the metadata metadataForTable(database, tdb, NULL); char *version = (char *)metadataFindValue(tdb, "dataVersion"); // try trackDb itself, this automatically will go up the hierarchy if (version == NULL) version = trackDbSetting(tdb, "dataVersion"); if (version != NULL) { // dataVersion can also be the path to a local file, for otto tracks if (!trackHubDatabase(database) && !isHubTrack(tdb->table) && startsWith("/", version)) { char *path = replaceInUrl(version, "", NULL, database, "", 0, 0, tdb->track, FALSE); struct lineFile* lf = lineFileMayOpen(path, TRUE); if (lf) version = lineFileReadAll(lf); else version = NULL; lineFileClose(&lf); } } +return version; +} + +void printDataVersion(char *database, struct trackDb *tdb) +/* If this annotation has a dataVersion setting, print it. + * check hgFixed.trackVersion, meta data and trackDb 'dataVersion'. */ +{ +char *version = checkDataVersion(database, tdb); + if (version == NULL) { // try the hgFixed.trackVersion table struct trackVersion *trackVersion = getTrackVersion(database, tdb->track); // try trackVersion table with parent, for composites/superTracks if (trackVersion == NULL && tdb->parent != NULL) trackVersion = getTrackVersion(database, tdb->parent->track); if (trackVersion != NULL) version = trackVersion->version; } if (isNotEmpty(version)) printf("<B>Data version:</B> %s <BR>\n", version); }