Module: Catalog::BrowserHelper

Defined in:
app/helpers/catalog/browser_helper.rb

Instance Method Summary (collapse)

Instance Method Details

- (Object) browser_taxon_header(taxon, options = {})



30
31
32
33
34
35
36
37
38
# File 'app/helpers/catalog/browser_helper.rb', line 30

def browser_taxon_header taxon, options = {}
  label_and_css_classes = Formatters::CatalogFormatter.taxon_label_and_css_classes taxon, :uppercase => true
  rank = Rank[taxon].to_s(:capitalized)
  if options[:link]
    (rank + ' ' + link_to(label_and_css_classes[:label], browser_catalog_path(taxon, options[:search_params]), :class => label_and_css_classes[:css_classes])).html_safe
  else
    (rank + ' ' + ('span', label_and_css_classes[:label], :class => label_and_css_classes[:css_classes])).html_safe
  end
end

- (Object) make_index_groups(taxa, max_row_count, abbreviated_length)



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/helpers/catalog/browser_helper.rb', line 6

def make_index_groups taxa, max_row_count, abbreviated_length
  items_per_row = (taxa.count.to_f / max_row_count).ceil
  return [] if items_per_row.zero?
  groups = taxa.sort_by(&:name).in_groups_of(items_per_row, false)
  any_groups_with_more_than_one_member = false
  groups.inject([]) do |label_groups, group|
    result = {:id => group.first.id}
    label_and_classes = Formatters::CatalogFormatter.taxon_label_and_css_classes group.first
    any_groups_with_more_than_one_member ||= group.size > 1
    if any_groups_with_more_than_one_member
      if group.size > 1
        result[:label] = "#{group.first.name[0, abbreviated_length]}-#{group.last.name[0, abbreviated_length]}"
        result[:css_classes] = Formatters::CatalogFormatter.css_classes_for_rank(group.first).join ' '
      else
        result.merge! label_and_classes
        result[:css_classes] = Formatters::CatalogFormatter.css_classes_for_rank(group.first).join ' '
      end
    else
      result.merge! label_and_classes
    end
    label_groups << result
  end
end