class Greedo::GridHelper::Grid

Constants

Column
Field
Row

Attributes

empty_message_text[R]
fields[R]
order[R]
order_by[R]
paginator[RW]
path_params[R]
presenter[R]
view_context[R]

Public Class Methods

new(view_context:, order: nil, order_by: nil, path_params: nil) click to toggle source
# File lib/greedo/grid_helper.rb, line 8
def initialize(view_context:, order: nil, order_by: nil, path_params: nil)
  @view_context = view_context
  @row_id = ->(record) { default_row_id(record) }
  @fields = []
  @presenter = proc{|r| r}
  @empty_message_text = "No data to show."
  @order = order
  @order_by = order_by
  @path_params = path_params
end

Public Instance Methods

column(name, label: name.to_s.humanize, sort: nil, &block) click to toggle source
# File lib/greedo/grid_helper.rb, line 37
def column(name, label: name.to_s.humanize, sort: nil, &block)
  if sort.nil? && name.is_a?(Symbol)
    sort = name.to_s
  end
  if block
    renderer = ->(record) { view_context.capture(present(record), &block) }
  else
    renderer = ->(record) { present(record).public_send(name) }
  end

  fields << Field.new(name, label, renderer, order, order_by, view_context, sort, path_params)
  nil
end
configure() { |self| ... } click to toggle source
# File lib/greedo/grid_helper.rb, line 19
def configure
  yield self if block_given?
end
custom_empty_message(empty_message_text) click to toggle source
# File lib/greedo/grid_helper.rb, line 23
def custom_empty_message(empty_message_text)
  @empty_message_text = empty_message_text
  nil
end
empty?() click to toggle source
# File lib/greedo/grid_helper.rb, line 71
def empty?
  records.empty?
end
empty_message() click to toggle source
# File lib/greedo/grid_helper.rb, line 79
def empty_message
  view_context.content_tag(:p) { empty_message_text }
end
headers() click to toggle source
# File lib/greedo/grid_helper.rb, line 67
def headers
  fields
end
ordered_by() click to toggle source
# File lib/greedo/grid_helper.rb, line 28
def ordered_by
  fields.find(&:ordered_by?) || Field.new
end
present(record) click to toggle source
# File lib/greedo/grid_helper.rb, line 57
def present(record)
  @presenter.call(record)
end
row_id(&block) click to toggle source
# File lib/greedo/grid_helper.rb, line 32
def row_id(&block)
  @row_id = block
  nil
end
rows() click to toggle source
# File lib/greedo/grid_helper.rb, line 61
def rows
  records.map do |record|
    Row.new(record, @row_id, fields)
  end
end
show_pagination?() click to toggle source
# File lib/greedo/grid_helper.rb, line 75
def show_pagination?
  paginator.show?
end

Private Instance Methods

default_row_id(record) click to toggle source
# File lib/greedo/grid_helper.rb, line 89
def default_row_id(record)
  snake_class = record.class.name.underscore.gsub("_", "-")
  "#{snake_class}-#{record.id}"
end
records() click to toggle source
# File lib/greedo/grid_helper.rb, line 85
def records
  paginator.records
end