diff --git a/lib/acts_as_faceted.rb b/lib/acts_as_faceted.rb index 6d47618..2298d5f 100644 --- a/lib/acts_as_faceted.rb +++ b/lib/acts_as_faceted.rb @@ -4,18 +4,13 @@ module ActsAsFaceted end module ActsMethods - # === fields: - # A hash of id fields (may be an attribute or a method). - # === order: - # An array # Example: # - # acts_as_faceted :fields => {:f_category_id => {:class => ProductCategory, :display_field => :name, :label => _('Related products')}, - # :f_region_id => {:class => Region, :display_field => :name, :label => _('Region')}, - # :f_qualifier_id => {:class => Qualifier, :display_field => :name, :label => _('Qualifiers')}, - # :f_certifier_id => {:class => Certifier, :display_field => :name, :label => _('Certifiers')}}, - # :order => [:f_category_id, :f_region_id, :f_qualifier_id, :f_certifier_id] - # end + # acts_as_faceted :fields => { + # :f_category => {:label => _('Related products')}, + # :f_region => {:label => _('Region')}, + # :f_qualifier => {:label => _('Qualifiers')}}, + # :order => [:f_category, :f_region, :f_qualifier] def acts_as_faceted(options) extend ClassMethods @@ -41,25 +36,15 @@ module ActsAsFaceted end end - def each_facet_obj(solr_facet, id_hash, options = {}) + def each_facet_name(solr_facet, data, options = {}) facet = facets[solr_facet_fields[solr_facet]] - klass = facet[:class] if options[:sort] == :alphabetically - display_field = facet[:display_field] - result = [] - id_hash.each do |id, count| - obj = klass.find_by_id(id) - result << [obj, count] if obj - end - result = result.sort { |a,b| a[0].send(display_field) <=> b[0].send(display_field) } - result.each { |obj, count| yield [obj, count] } + result = data.sort{ |a,b| -1*(a[0] <=> b[0]) } + result.each { |name, count| yield [name, count] } else - result = options[:sort] == :count ? id_hash.sort{ |a,b| -1*(a[1] <=> b[1]) } : id_hash - result.each do |id, count| - obj = klass.find_by_id(id) - yield [obj, count] if obj - end + result = options[:sort] == :count ? data.sort{ |a,b| -1*(a[1] <=> b[1]) } : data + result.each { |name, count| yield [name, count] } end end end -- libgit2 0.21.2