a3739b776a1dff6f5b07d035faa320d22c975c48 braney Mon Jul 15 14:08:31 2024 -0700 make priority optional in groups.txt. Also actually sort by priority if specified diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index bbcf97c..4ad2388 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -492,45 +492,51 @@ errAbort("missing required setting '%s' for group on line %d in file %s\n", name, lf->lineIx, lf->fileName); return str; } struct grp *readGroupRa(char *groupFileName) /* Read in the ra file that describes the groups in an assembly hub. */ { if (groupFileName == NULL) return NULL; struct hash *ra; struct grp *list = NULL; struct lineFile *lf = udcWrapShortLineFile(groupFileName, NULL, MAX_HUB_GROUP_FILE_SIZE); while ((ra = raNextRecord(lf)) != NULL) { + char *str; struct grp *grp; AllocVar(grp); slAddHead(&list, grp); grp->name = cloneString(getRequiredGrpSetting(ra, "name", lf)); grp->label = cloneString(getRequiredGrpSetting(ra, "label", lf)); - grp->priority = atof(getRequiredGrpSetting(ra, "priority", lf)); - char *str; + + grp->priority = BIGDOUBLE; + str = hashFindVal(ra, "priority"); + if (str != NULL) + grp->priority = atof(str); + str = hashFindVal(ra, "defaultIsClosed"); if ((str != NULL) && (sameString("on",str) || sameString("1", str))) grp->defaultIsClosed = 1; hashFree(&ra); } if (list) - slReverse(&list); + slSort(&list, grpCmpPriorityLabel); + lineFileClose(&lf); return list; } struct grp *trackHubLoadGroups(char *database) /* Load the grp structures for this track hub database. */ { struct trackHubGenome *genome = trackHubGetGenome(database); if (genome == NULL) return NULL; struct grp *list = readGroupRa(genome->groups); return list; }