c5a827f8f0c4094c20ff333acb191ded2bf86744 braney Wed Dec 20 11:36:10 2017 -0800 ongoing work on hgCollection diff --git src/hg/hgCollection/hgCollection.c src/hg/hgCollection/hgCollection.c index e070d5c..bda1af9 100644 --- src/hg/hgCollection/hgCollection.c +++ src/hg/hgCollection/hgCollection.c @@ -386,30 +386,32 @@ puts(""); puts( " \n" " \n"); } static void doMainPage(struct cart *cart, char *db, struct grp *groupList, struct trackDb *trackList) /* Print out initial HTML of control page. */ { webStartGbNoBanner(cart, db, "Collections"); webIncludeResourceFile("gb.css"); webIncludeResourceFile("spectrum.min.css"); webIncludeResourceFile("hgGtexTrackSettings.css"); +jsReloadOnBackButton(cart); + webIncludeFile("inc/hgCollection.html"); char *assembly = stringBetween("(", ")", hFreezeFromDb(db)); jsInlineF("$('#assembly').text('%s');\n",assembly); printHelp(); doTable(cart, db, groupList, trackList); puts(""); puts(""); puts(""); puts(""); puts("\n"); jsIncludeFile("utils.js", NULL); jsIncludeFile("ajax.js", NULL); jsIncludeFile("spectrum.min.js", NULL); @@ -455,49 +457,50 @@ if (differentString(hel->name, "parent") && differentString(hel->name, "polished")&& differentString(hel->name, "shortLabel")&& differentString(hel->name, "longLabel")&& differentString(hel->name, "color")&& differentString(hel->name, "visibility")&& differentString(hel->name, "track")&& differentString(hel->name, "trackNames")&& differentString(hel->name, "superTrack")&& differentString(hel->name, "priority")&& differentString(hel->name, "group")) fprintf(f, "%s%s %s\n", tabs,hel->name, (char *)hel->val); } if (bigDataUrl == NULL) { if (dataUrl != NULL) fprintf(f, "%sbigDataUrl %s\n", tabs,dataUrl); } fprintf(f, "%sparent %s\n",tabs,parent); fprintf(f, "%scolor %d,%d,%d\n", tabs,(color >> 16) & 0xff,(color >> 8) & 0xff,color & 0xff); fprintf(f, "%svisibility %s\n",tabs,visibility); fprintf(f, "%spriority %d\n",tabs,priority); fprintf(f, "\n"); } -static void outComposite(FILE *f, struct track *collection) +static void outComposite(FILE *f, struct track *collection, int priority) // output a composite header for user composite { char *parent = collection->name; char *shortLabel = collection->shortLabel; char *longLabel = collection->longLabel; fprintf(f,"track %s\n\ shortLabel %s\n\ compositeTrack on\n\ autoScale on\n\ maxHeightPixels 100:30:11 \n\ aggregate none\n\ longLabel %s\n\ %s on\n\ color %ld,%ld,%ld \n\ viewFunc %s\n\ type mathWig\n\ +\tpriority %d\n\ visibility full\n\n", parent, shortLabel, longLabel, CUSTOM_COMPOSITE_SETTING, - 0xff& (collection->color >> 16),0xff& (collection->color >> 8),0xff& (collection->color), collection->viewFunc); + 0xff& (collection->color >> 16),0xff& (collection->color >> 8),0xff& (collection->color), collection->viewFunc, priority); } static void modifyName(struct trackDb *tdb, char *hubName, struct hash *collectionNameHash) /* If this is a new track in the collection we want to make sure * it gets a different name than the track in trackDb. * If it's a native track, we want to squirrel away the original track name. */ { if ((tdb->grp == NULL) || (hubName == NULL) || differentString(tdb->grp, hubName)) { if (collectionNameHash) hashStore(collectionNameHash, tdb->track); char *bigDataUrl = trackDbSetting(tdb, "bigDataUrl"); if (bigDataUrl == NULL) @@ -540,38 +543,38 @@ static void updateHub(struct cart *cart, char *db, struct track *collectionList, struct hash *nameHash) // save our state to the track hub { char *filename = getHubName(cart, db); char *hubName = hubNameFromUrl(filename); FILE *f = mustOpen(filename, "w"); chmod(filename, 0666); struct hash *collectionNameHash = newHash(6); outHubHeader(f, db); struct track *collection; struct sqlConnection *conn = hAllocConn(db); +int priority = 1; for(collection = collectionList; collection; collection = collection->next) { if (collection->trackList == NULL) // don't output composites without children continue; - outComposite(f, collection); + outComposite(f, collection, priority++); struct trackDb *tdb; struct track *track; - int priority = 1; for (track = collection->trackList; track; track = track->next) { if (track->viewFunc != NULL) { priority = outView(f, conn, db, track, collection->name, nameHash, collectionNameHash, priority, hubName); } else { tdb = hashMustFindVal(nameHash, track->name); modifyName(tdb, hubName, collectionNameHash); outTdb(conn, db, f, track->name,tdb, collection->name, track->visibility, track->color, track, nameHash, collectionNameHash, 1, priority++); } } }