class Tablets::Renderer
Prepares markup. Renders table without any data
Attributes
initialize_instantly[R]
params[R]
tablet[R]
Public Class Methods
new(tablet, params, opts = {})
click to toggle source
Initializes renderer with tablet and params
# File lib/tablets/renderer.rb, line 9 def initialize(tablet, params, opts = {}) @tablet = tablet @params = params @initialize_instantly = opts.fetch(:initialize_instantly, false) end
Public Instance Methods
render(view_context)
click to toggle source
Renders table in view_context
# File lib/tablets/renderer.rb, line 16 def render(view_context) view_context.render(partial: 'tablets/tablet', locals: locals) end
Private Instance Methods
columns_definitions()
click to toggle source
Calculates column options and applies options on top
... columns do [{ title: 'Title', order: 'posts.title', data: :title, options: { className: 'post-title' } }] end ... renderer.columns_definitions #=> [{ targets: 0, searchable: false, orderable: true, className: 'post-title' }]
# File lib/tablets/renderer.rb, line 72 def columns_definitions tablet.columns.map.with_index do |column, index| { targets: index, searchable: column[:search].present?, orderable: column[:order].present? }.merge!(column[:options] || {}) end end
data_path()
click to toggle source
Returns path to data
# File lib/tablets/renderer.rb, line 83 def data_path Tablets::Engine.routes.url_helpers.data_path(tablet.name) end
id()
click to toggle source
Id for HTML container. Includes name and params with values
renderer = Tablets::Renderer.new(:posts, user_id: 1) renderer.id #=> 'posts_user_id_1'
# File lib/tablets/renderer.rb, line 41 def id [tablet.name, params.to_a, 'tablet'].flatten.map(&:to_s).join('_') end
locals()
click to toggle source
Prepares locals for tablet partial
# File lib/tablets/renderer.rb, line 25 def locals { id: id, name: tablet.name, columns: tablet.columns, options: resulting_options, params: params, initialize_instantly: initialize_instantly } end
resulting_options()
click to toggle source
Calculates resulting options.
# File lib/tablets/renderer.rb, line 46 def resulting_options {}.merge(Tablets.options) .merge(columnDefs: columns_definitions, ajax: data_path) .merge(tablet.options) end