Class: PaginatedTable::RendersTable

Inherits:
Object
  • Object
show all
Defined in:
lib/paginated_table/view_helpers.rb

Instance Method Summary collapse

Constructor Details

#initialize(view, description, data_page, link_renderer) ⇒ RendersTable

Returns a new instance of RendersTable.



52
53
54
55
56
57
# File 'lib/paginated_table/view_helpers.rb', line 52

def initialize(view, description, data_page, link_renderer)
  @view = view
  @description = description
  @data_page = data_page
  @link_renderer = link_renderer
end

Instance Method Details

#renderObject



59
60
61
62
63
# File 'lib/paginated_table/view_helpers.rb', line 59

def render
  pagination_area = render_pagination_area
  content = pagination_area + render_table + pagination_area
  @view.('div', content, :class => 'paginated_table')
end

#render_pagination_areaObject



65
66
67
68
# File 'lib/paginated_table/view_helpers.rb', line 65

def render_pagination_area
  content = render_pagination_info + render_pagination_links
  @view.('div', content, :class => 'header')
end

#render_pagination_infoObject



70
71
72
73
# File 'lib/paginated_table/view_helpers.rb', line 70

def render_pagination_info
  content = @view.page_entries_info(@data_page.data)
  @view.('div', content, :class => 'info')
end


75
76
77
78
# File 'lib/paginated_table/view_helpers.rb', line 75

def render_pagination_links
  content = @view.will_paginate(@data_page.data, :renderer => @link_renderer)
  @view.('div', content, :class => 'links')
end

#render_tableObject



80
81
82
83
# File 'lib/paginated_table/view_helpers.rb', line 80

def render_table
  content = render_table_header + render_table_body
  @view.('table', content, :class => 'paginated')
end

#render_table_bodyObject



118
119
120
121
122
123
# File 'lib/paginated_table/view_helpers.rb', line 118

def render_table_body
  content = @data_page.data.map { |datum|
    render_table_body_row(datum)
  }.reduce(&:+)
  @view.('tbody', content)
end

#render_table_body_cell(datum, column) ⇒ Object



132
133
134
# File 'lib/paginated_table/view_helpers.rb', line 132

def render_table_body_cell(datum, column)
  @view.('td', column.render_cell(datum))
end

#render_table_body_row(datum) ⇒ Object



125
126
127
128
129
130
# File 'lib/paginated_table/view_helpers.rb', line 125

def render_table_body_row(datum)
  content = @description.columns.map { |column|
    render_table_body_cell(datum, column)
  }.reduce(&:+)
  @view.('tr', content)
end

#render_table_headerObject



85
86
87
# File 'lib/paginated_table/view_helpers.rb', line 85

def render_table_header
  @view.('thead', render_table_header_row)
end

#render_table_header_column(column) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/paginated_table/view_helpers.rb', line 96

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.('th', render_table_header_column_content(column), attributes)
end

#render_table_header_column_content(column) ⇒ Object



109
110
111
112
113
114
115
116
# File 'lib/paginated_table/view_helpers.rb', line 109

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_rowObject



89
90
91
92
93
94
# File 'lib/paginated_table/view_helpers.rb', line 89

def render_table_header_row
  content = @description.columns.map { |column|
    render_table_header_column(column)
  }.reduce(&:+)
  @view.('tr', content)
end