Skip to content

Commit

Permalink
tweak faceted indexing a bit
Browse files Browse the repository at this point in the history
  • Loading branch information
rbuels committed May 2, 2012
1 parent b051e52 commit 51928c1
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 16 deletions.
29 changes: 15 additions & 14 deletions js/Model/TrackMetaData.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,22 +54,26 @@ dojo.declare( 'JBrowse.Model.TrackMetaData', dojox.data.CsvStore,
);

// initialize the empty indexes
this.facetIndexes = { count: 0, byFacetName: {} };
this.facetIndexes = { itemCount: 0, bucketCount: 0, byName: {} };
dojo.forEach( facets, function(facet) {
this.facetIndexes.byFacetName[facet] = { count: 0, byFacetValue: {} };
this.facetIndexes.bucketCount++;
this.facetIndexes.byName[facet] = { itemCount: 0, bucketCount: 0, byValue: {} };
}, this);

// build an index of our items for each facet
dojo.forEach( items, function( item ) {
this.facetIndexes.count++;
this.facetIndexes.itemCount++;
dojo.forEach( facets, function( facet ) {
var value = this.getValue( item, facet, undefined );
if( typeof value == 'undefined' )
return;
var bucket = this.facetIndexes.byFacetName[facet].byFacetValue[value];
if( !bucket )
bucket = this.facetIndexes.byFacetName[facet].byFacetValue[value] = { count: 0, items: [] };
bucket.count++;
var facetValues = this.facetIndexes.byName[facet];
var bucket = facetValues.byValue[value];
if( !bucket ) {
bucket = facetValues.byValue[value] = { itemCount: 0, items: [] };
facetValues.bucketCount++;
}
bucket.itemCount++;
bucket.items.push(item);
},this);
}, this);
Expand All @@ -90,13 +94,13 @@ dojo.declare( 'JBrowse.Model.TrackMetaData', dojox.data.CsvStore,
* @returns {Array} distinct values for that facet
*/
getFacetValues: function( facetName ) {
var index = this.facetIndexes.byFacetName[facetName];
var index = this.facetIndexes.byName[facetName];
if( !index )
return [];

var values = [];
for( var v in index.byFacetValue ) {
if( index.byFacetValue.hasOwnProperty(v) )
for( var v in index.byValue ) {
if( index.byValue.hasOwnProperty(v) )
values.push( v );
}
return values;
Expand All @@ -112,8 +116,5 @@ dojo.declare( 'JBrowse.Model.TrackMetaData', dojox.data.CsvStore,
else {
this.onReadyFuncs.push( callback );
}
},



}
});
9 changes: 7 additions & 2 deletions js/View/TrackList/Faceted.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,19 @@ dojo.declare( 'JBrowse.View.TrackList.Faceted', null,
renderFacetSelectors: function( facets ) {
var store = this.trackDataStore;
dojo.forEach( store.getFacets() , function(facetName) {
var values = store.getFacetValues(facetName).sort();
if( !values || !values.length )
return;

var selector =
dojo.create( 'select', {},
dojo.create( 'select', { multiple: true, size: Math.min( 10, values.length ) },
dojo.create( 'label', {innerHTML: facetName},
this.facetsDiv ));

dojo.forEach( store.getFacetValues(facetName).sort(), function(val) {
dojo.forEach( values, function(val) {
dojo.create( 'option', { innerHTML: val, value: val }, selector );
},this);

},this);
},

Expand Down

0 comments on commit 51928c1

Please sign in to comment.