a3c34fc62526e195b493ec41e72f6b4a3ebe799f kate Wed Apr 3 15:30:07 2019 -0700 Very preliminary diff --git src/hg/hgTracks/factorSource.c src/hg/hgTracks/factorSource.c index 0ab548d..0e955dc 100644 --- src/hg/hgTracks/factorSource.c +++ src/hg/hgTracks/factorSource.c @@ -13,60 +13,63 @@ #include "hgTracks.h" #include "expRecord.h" #include "dystring.h" #include "factorSource.h" #include "bed6FloatScore.h" static struct factorSource *loadOne(char **row) /* Load up factorSource from array of strings. */ { return factorSourceLoad(row); } /* Save info about factors and their motifs */ struct factorSourceInfo { boolean showCellAbbrevs; + boolean showCellCounts; struct hash *factorChoices; struct hash *motifTargets; struct bed6FloatScore *motifs; }; boolean factorFilter(struct track *track, void *item) /* Returns true if an item should be passed by the filter. NOTE: single filter supported here*/ { struct hash *factorHash = ((struct factorSourceInfo *)track->extraUiData)->factorChoices; if (track->extraUiData != NULL && factorHash != NULL) if (hashLookup(factorHash, ((struct factorSource *)item)->name) != NULL) return TRUE; return FALSE; } static void factorSourceLoadItems(struct track *track) /* Load all items (and motifs if table is present) in window */ { bedLoadItem(track, track->table, (ItemLoader)loadOne); if (track->items == NULL) return; struct factorSourceInfo *fsInfo = NULL; AllocVar(fsInfo); track->extraUiData = fsInfo; -// Check UI setting to show cell abbreviations +// Check UI setting to show cell abbreviations or counts char varName[64]; safef(varName, sizeof(varName), "%s.showCellAbbrevs", track->track); fsInfo->showCellAbbrevs = cartUsualBoolean(cart, varName, TRUE); +safef(varName, sizeof(varName), "%s.showCellCounts", track->track); +fsInfo->showCellCounts = cartUsualBoolean(cart, varName, TRUE); // Filter factors based on multi-select filterBy_t *filter = filterBySetGet(track->tdb, cart, NULL); if (filter != NULL && filter->slChoices != NULL && differentString(filter->slChoices->name, "All")) { struct slName *choice; struct hash *factorHash = newHash(0); for (choice = filter->slChoices; choice != NULL; choice = choice->next) { hashAdd(factorHash, choice->name, NULL); } fsInfo->factorChoices = factorHash; filterItems(track, factorFilter, "include"); }