Class: PaginatedTable::TableRenderer
- Inherits:
-
Object
- Object
- PaginatedTable::TableRenderer
- Defined in:
- lib/paginated_table/table_renderer.rb
Instance Method Summary collapse
-
#initialize(view, description, data_page, link_renderer) ⇒ TableRenderer
constructor
A new instance of TableRenderer.
- #render ⇒ Object
- #render_pagination_area ⇒ Object
- #render_pagination_info ⇒ Object
- #render_pagination_links ⇒ Object
- #render_table ⇒ Object
- #render_table_body ⇒ Object
- #render_table_body_cell(datum, column) ⇒ Object
- #render_table_body_row(row, datum) ⇒ Object
- #render_table_body_rows(datum) ⇒ Object
- #render_table_header ⇒ Object
- #render_table_header_column(column) ⇒ Object
- #render_table_header_column_content(column) ⇒ Object
- #render_table_header_row(row) ⇒ Object
- #render_table_header_rows ⇒ Object
Constructor Details
#initialize(view, description, data_page, link_renderer) ⇒ TableRenderer
Returns a new instance of TableRenderer.
3 4 5 6 7 8 |
# File 'lib/paginated_table/table_renderer.rb', line 3 def initialize(view, description, data_page, link_renderer) @view = view @description = description @data_page = data_page @link_renderer = link_renderer end |
Instance Method Details
#render ⇒ Object
10 11 12 13 14 |
# File 'lib/paginated_table/table_renderer.rb', line 10 def render pagination_area = render_pagination_area content = pagination_area + render_table + pagination_area @view.content_tag('div', content, :class => 'paginated_table') end |
#render_pagination_area ⇒ Object
16 17 18 19 |
# File 'lib/paginated_table/table_renderer.rb', line 16 def render_pagination_area content = render_pagination_info + render_pagination_links @view.content_tag('div', content, :class => 'header') end |
#render_pagination_info ⇒ Object
21 22 23 24 25 |
# File 'lib/paginated_table/table_renderer.rb', line 21 def render_pagination_info = { :model => @description.model_label } content = @view.page_entries_info(@data_page.data, ) @view.content_tag('div', content, :class => 'info') end |
#render_pagination_links ⇒ Object
27 28 29 30 |
# File 'lib/paginated_table/table_renderer.rb', line 27 def render_pagination_links content = @view.will_paginate(@data_page.data, :renderer => @link_renderer) @view.content_tag('div', content, :class => 'links') end |
#render_table ⇒ Object
32 33 34 35 |
# File 'lib/paginated_table/table_renderer.rb', line 32 def render_table content = render_table_header + render_table_body @view.content_tag('table', content, :class => 'paginated') end |
#render_table_body ⇒ Object
78 79 80 81 82 83 |
# File 'lib/paginated_table/table_renderer.rb', line 78 def render_table_body content = @data_page.data.map { |datum| render_table_body_rows(datum) }.reduce(&:+) @view.content_tag('tbody', content) end |
#render_table_body_cell(datum, column) ⇒ Object
110 111 112 |
# File 'lib/paginated_table/table_renderer.rb', line 110 def render_table_body_cell(datum, column) @view.content_tag('td', column.render_cell(datum), column.html_attributes) end |
#render_table_body_row(row, datum) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/paginated_table/table_renderer.rb', line 91 def render_table_body_row(row, datum) content = row.columns.map { |column| render_table_body_cell(datum, column) }.reduce(&:+) = {} if row.cycle [:class] = @view.cycle(*row.cycle) end if row.hidden [:style] = 'display: none' end if row.data_type [:"data-type"] = row.data_type end dom_id = @view.dom_id(datum) [:"data-datum-id"] = dom_id @view.content_tag('tr', content, ) end |
#render_table_body_rows(datum) ⇒ Object
85 86 87 88 89 |
# File 'lib/paginated_table/table_renderer.rb', line 85 def render_table_body_rows(datum) @description.rows.map { |row| render_table_body_row(row, datum) }.reduce(&:+) end |
#render_table_header ⇒ Object
37 38 39 |
# File 'lib/paginated_table/table_renderer.rb', line 37 def render_table_header @view.content_tag('thead', render_table_header_rows) end |
#render_table_header_column(column) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/paginated_table/table_renderer.rb', line 56 def render_table_header_column(column) css = [] if column.sortable? css << 'sortable' end if @data_page.page.sort_column == column.name.to_s css << "sorted_#{@data_page.page.sort_direction}" end attributes = {} attributes[:class] = css.join(' ') unless css.empty? @view.content_tag('th', render_table_header_column_content(column), attributes) end |
#render_table_header_column_content(column) ⇒ Object
69 70 71 72 73 74 75 76 |
# File 'lib/paginated_table/table_renderer.rb', line 69 def render_table_header_column_content(column) text = column.render_header if column.sortable? @link_renderer.sort_link(text, column.name.to_s) else text end end |
#render_table_header_row(row) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/paginated_table/table_renderer.rb', line 49 def render_table_header_row(row) content = row.columns.map { |column| render_table_header_column(column) }.reduce(&:+) @view.content_tag('tr', content) end |
#render_table_header_rows ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/paginated_table/table_renderer.rb', line 41 def render_table_header_rows @description.rows.select { |row| row.title == :header }.map { |row| render_table_header_row(row) }.reduce(&:+) end |