ed8dbd64ca36974846ce471161da56c58a8d224a braney Thu Mar 8 08:54:54 2018 -0800 don't use Javascript sets because IE doesn't completely support them. diff --git src/hg/hgCollection/hgCollection.c src/hg/hgCollection/hgCollection.c index 32c620e..855a1d4 100644 --- src/hg/hgCollection/hgCollection.c +++ src/hg/hgCollection/hgCollection.c @@ -329,90 +329,90 @@ first = FALSE; } jsInlineF("];"); for(tdb = parentTdb->subtracks; tdb; tdb = tdb->next) printSubtracks(arrayName,tdb, user); } void addSubtrackNames(struct dyString *dy, struct trackDb *parentTdb) { if (parentTdb->subtracks == NULL) return; struct trackDb *tdb; for(tdb = parentTdb->subtracks; tdb; tdb = tdb->next) { - dyStringPrintf(dy, ",'%s'", trackHubSkipHubName(tdb->track)); + dyStringPrintf(dy, "collectionNames['%s']=1;", trackHubSkipHubName(tdb->track)); addSubtrackNames(dy, tdb); } } static void doTable(struct cart *cart, char *db, struct grp *groupList, struct trackDb *trackList) // output the tree table { char *hubName = hubNameFromUrl(getHubName(cart, db)); struct grp *curGroup; struct hash *groupHash = newHash(10); int count = 0; for(curGroup = groupList; curGroup; curGroup = curGroup->next) { if (curGroup->priority == 0) curGroup->priority = count--; hashAdd(groupHash, curGroup->name, curGroup); } curGroup = NULL; if (hubName != NULL) curGroup = hashFindVal(groupHash, hubName); jsInlineF("var collectionData = []; "); -struct dyString *dy = newDyString(100); +struct dyString *dy = newDyString(1024); +jsInlineF("var collectionNames = [];"); if (curGroup != NULL) { // print out all the tracks in all the collections struct trackDb *tdb; jsInlineF("collectionData['#'] = ["); boolean first = TRUE; for(tdb = trackList; tdb; tdb = tdb->next) { if (sameString(tdb->grp, hubName)) { if (!first) { jsInlineF(","); - dyStringPrintf(dy, ","); } printTrack("#", tdb, TRUE); - dyStringPrintf(dy, "'%s'", trackHubSkipHubName(tdb->track)); + dyStringPrintf(dy, "collectionNames['%s']=1;", trackHubSkipHubName(tdb->track)); first = FALSE; } } jsInlineF("];"); for(tdb = trackList; tdb; tdb = tdb->next) { if ( sameString(tdb->grp, curGroup->name)) { printSubtracks("collectionData", tdb, TRUE); addSubtrackNames(dy, tdb); } } } else jsInlineF("collectionData['#'] = [];"); -jsInlineF("var collectionNames = new Set([%s]);", dy->string); +jsInlineF("%s", dy->string); jsInlineF("var trackData = []; "); struct dyString *rootChildren = newDyString(512); addVisibleTracks(groupHash, rootChildren, cart, trackList); for(curGroup = groupList; curGroup; curGroup = curGroup->next) { if ((hubName != NULL) && sameString(curGroup->name, hubName)) continue; if (!isEmpty(rootChildren->string)) dyStringPrintf(rootChildren, ","); dyStringPrintf(rootChildren, "{icon:'../images/folderC.png',id:'%s', text:'%s', parent:'#', children:true,li_attr:{title:'%s'}}", curGroup->name, curGroup->label, FOLDERTITLE); struct trackDb *tdb; jsInlineF("trackData['%s'] = [", curGroup->name); boolean first = TRUE; for(tdb = trackList; tdb; tdb = tdb->next)