0d2757e19a4ea5280be67b8d3edcfd67ab4d01c7 braney Tue Aug 29 17:05:17 2017 -0700 more updates to hgCollection diff --git src/hg/hgCollection/hgCollection.c src/hg/hgCollection/hgCollection.c index 8997596..d9ae08b 100644 --- src/hg/hgCollection/hgCollection.c +++ src/hg/hgCollection/hgCollection.c @@ -254,46 +254,46 @@ void doTable() // output the tree table { char *hubName = hubNameFromUrl(getHubName(database)); struct grp *curGroup; for(curGroup = fullGroupList; curGroup; curGroup = curGroup->next) { if ((hubName != NULL) && sameString(curGroup->name, hubName)) break; } if (curGroup != NULL) { // print out all the tracks in this group struct trackDb *tdb; - jsInlineF("$('#collection').append(\""); + jsInlineF("$('#currentCollection').append(\""); for(tdb = fullTrackList; tdb; tdb = tdb->next) { if (sameString(tdb->grp, hubName)) { jsInlineF("
", trackHubSkipHubName(tdb->track), tdb->shortLabel); jsInlineF("
"); } } jsInlineF("\");\n"); // print out all the tracks in this group - jsInlineF("$('#collections').append(\""); + jsInlineF("$('#collectionList').append(\""); for(tdb = fullTrackList; tdb; tdb = tdb->next) { if (sameString(tdb->grp, hubName)) { jsInlineF("
  • %s
  • ", trackHubSkipHubName(tdb->track),trackHubSkipHubName(tdb->track), tdb->shortLabel); //printGroup("collections", tdb, TRUE, TRUE); } } jsInlineF("\");\n"); } //addVisibleTracks(); jsInlineF("$('#tracks').append(\""); for(curGroup = fullGroupList; curGroup; curGroup = curGroup->next) { if ((hubName != NULL) && sameString(curGroup->name, hubName)) @@ -303,31 +303,31 @@ struct trackDb *tdb; jsInlineF(""); jsInlineF(""); jsInlineF(""); } jsInlineF("\");\n"); -jsInlineF("collections.init();\n"); +jsInlineF("hgCollection.init();\n"); } static void onclickJumpToTop(char *id) /* CSP-safe click handler arrows that cause scroll to top */ { jsOnEventById("click", id, "$('html,body').scrollTop(0);"); } static void printHelp() // print out the help page { puts( "\n" "
    \n" "
    Help
    \n" @@ -398,62 +398,63 @@ { struct trackDb *tdb = hashMustFindVal(nameHash, track->name); if (tdb == NULL) errAbort("cannot find trackDb for %s\n", track->name); char *bigDataUrl = trackDbSetting(tdb, "bigDataUrl"); if (bigDataUrl == NULL) { if (startsWith("bigWig", tdb->type)) bigDataUrl = getSqlBigWig(conn, db, tdb); } return bigDataUrl; } -void outTdb(struct sqlConnection *conn, char *db, FILE *f, char *name, struct trackDb *tdb, char *parent, char *visibility, unsigned int color, struct track *track, struct hash *nameHash, struct hash *collectionNameHash, int numTabs) +void outTdb(struct sqlConnection *conn, char *db, FILE *f, char *name, struct trackDb *tdb, char *parent, char *visibility, unsigned int color, struct track *track, struct hash *nameHash, struct hash *collectionNameHash, int numTabs, int priority) // out the trackDb for one track { char *dataUrl = NULL; char *bigDataUrl = trackDbSetting(tdb, "bigDataUrl"); char *tabs = "\t"; if (numTabs == 2) tabs = "\t\t"; if (bigDataUrl == NULL) { if (startsWith("bigWig", tdb->type)) dataUrl = getSqlBigWig(conn, db, tdb); } struct hashCookie cookie = hashFirst(tdb->settingsHash); struct hashEl *hel; fprintf(f, "%strack %s\n",tabs, makeUnique(collectionNameHash, name)); fprintf(f, "%sshortLabel %s\n",tabs, track->shortLabel); fprintf(f, "%slongLabel %s\n",tabs, track->longLabel); while ((hel = hashNext(&cookie)) != NULL) { - 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")) + 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")) 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) // 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\ aggregate none\n\ longLabel %s\n\ %s on\n\ @@ -479,69 +480,71 @@ static void outView(FILE *f, struct sqlConnection *conn, char *db, struct track *view, char *parent, struct hash *nameHash, struct hash *collectionNameHash) // output a view to a trackhub { fprintf(f,"\ttrack %s\n\ \tshortLabel %s\n\ \tlongLabel %s\n\ \tview %s \n\ \tparent %s \n\ \tcolor %ld,%ld,%ld \n\ \tvisibility %s\n", view->name, view->shortLabel, view->longLabel, view->name, parent, 0xff& (view->color >> 16),0xff& (view->color >> 8),0xff& (view->color), view->visibility); //fprintf(f,"\tequation +\n"); fprintf(f, "\n"); //int useColor = 0; struct track *track = view->trackList; +int priority = 1; for(; track; track = track->next) { struct trackDb *tdb = hashMustFindVal(nameHash, skipColl(track->name)); - outTdb(conn, db, f, skipColl(track->name),tdb, view->name, track->visibility, track->color, track, nameHash, collectionNameHash, 2); + outTdb(conn, db, f, skipColl(track->name),tdb, view->name, track->visibility, track->color, track, nameHash, collectionNameHash, 2, priority++); //useColor++; } } void updateHub(char *db, struct track *collectionList, struct hash *nameHash) // save our state to the track hub { char *hubName = getHubName(db); chmod(hubName, 0666); FILE *f = mustOpen(hubName, "w"); struct hash *collectionNameHash = newHash(6); outHubHeader(f, db, hubName); //int useColor = 0; struct track *collection; struct sqlConnection *conn = hAllocConn(db); for(collection = collectionList; collection; collection = collection->next) { outComposite(f, collection); struct trackDb *tdb; struct track *track; + int priority = 1; for (track = collection->trackList; track; track = track->next) { if (track->trackList != NULL) { outView(f, conn, db, track, collection->name, nameHash, collectionNameHash); } else { tdb = hashMustFindVal(nameHash, track->name); - outTdb(conn, db, f, track->name,tdb, collection->name, track->visibility, track->color, track, nameHash, collectionNameHash, 1); + outTdb(conn, db, f, track->name,tdb, collection->name, track->visibility, track->color, track, nameHash, collectionNameHash, 1, priority++); /* useColor++; if (useColor == (sizeof snakePalette2 / sizeof(int))) useColor = 0; */ } } } fclose(f); hFreeConn(&conn); } unsigned long hexStringToLong(char *str) { /*