class Trestle::Table::Row::Renderer

Public Class Methods

new(row, table:, template:) click to toggle source
# File lib/trestle/table/row.rb, line 16
def initialize(row, table:, template:)
  @row, @table, @template = row, table, template
end

Public Instance Methods

columns() click to toggle source
# File lib/trestle/table/row.rb, line 20
def columns
  @table.columns.map { |column|
    column.renderer(table: @table, template: @template)
  }.select(&:render?)
end
options(instance) click to toggle source
# File lib/trestle/table/row.rb, line 32
def options(instance)
  options = Trestle::Options.new

  if @table.admin && @table.autolink? && @table.admin.actions.include?(:show)
    options.merge!(data: { url: admin_url_for(instance) })
    options.merge!(data: { behavior: "dialog" }) if @table.admin.form.dialog?
  end

  options.merge!(@row.options)
  options.merge!(@template.instance_exec(instance, &@row.block)) if @row.block

  options
end
render(instance) click to toggle source
# File lib/trestle/table/row.rb, line 26
def render(instance)
  @template.content_tag(:tr, options(instance)) do
    @template.safe_join(columns.map { |column| column.render(instance) }, "\n")
  end
end

Protected Instance Methods

admin_url_for(instance) click to toggle source
# File lib/trestle/table/row.rb, line 47
def admin_url_for(instance)
  @template.admin_url_for(instance, admin: @table.admin)
end