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.



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

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



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

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

#render_pagination_areaObject



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

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

#render_pagination_infoObject



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

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


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

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

#render_tableObject



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

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

#render_table_bodyObject



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

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



143
144
145
# File 'lib/paginated_table/view_helpers.rb', line 143

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

#render_table_body_row(datum) ⇒ Object



136
137
138
139
140
141
# File 'lib/paginated_table/view_helpers.rb', line 136

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



96
97
98
# File 'lib/paginated_table/view_helpers.rb', line 96

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

#render_table_header_column(column) ⇒ Object



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

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



120
121
122
123
124
125
126
127
# File 'lib/paginated_table/view_helpers.rb', line 120

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



100
101
102
103
104
105
# File 'lib/paginated_table/view_helpers.rb', line 100

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