Class: Grapple::Components::ColumnHeadings

Inherits:
HtmlComponent show all
Defined in:
lib/grapple/components/column_headings.rb

Instance Attribute Summary

Attributes inherited from BaseComponent

#builder, #columns, #params, #records, #template

Instance Method Summary collapse

Methods inherited from BaseComponent

#initialize, setting

Constructor Details

This class inherits a constructor from Grapple::Components::BaseComponent

Instance Method Details

#column_header(column, additional_parameters = {}) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/grapple/components/column_headings.rb', line 16

def column_header(column, additional_parameters = {})
  cell_classes = []
  cell_classes << alignment_classes[(column[:align] || :left).to_sym]
  
  liner_classes = []
  liner_classes << tooltip_class if column[:title].present?

  label = t(column[:label] || '')
  
  if column[:sort]
    cell_classes << 'sortable'
    if column[:sort] == params[:sort]
      liner_classes << (params[:dir] == 'desc' ? 'sort-desc' : 'sort-asc')
      cell_classes << 'sorted'
    end
    url = table_url(additional_parameters.merge({sort: column[:sort]}))
    content = template.link_to(label, url)
  else
    content = label
  end
  
  cell_classes = ' class="' + cell_classes.join(' ') + '"'
  title = column[:title] ? " title=\"#{h(column[:title])}\"" : ''
  liner_classes = liner_classes.length ? " class=\"#{liner_classes.join(" ")}\"" : ''

  "<th#{cell_classes}><div#{title}#{liner_classes}>#{h content}</div></th>".html_safe
end

#render(url_params = {}) ⇒ Object



9
10
11
12
13
14
# File 'lib/grapple/components/column_headings.rb', line 9

def render(url_params = {})
  cols = columns.collect do |column|
    indent + column_header(column, url_params)
  end
  builder.row cols.join("\n"), :class => row_class
end