Class: Datagrid::Renderer

Inherits:
Object
  • Object
show all
Defined in:
lib/datagrid/renderer.rb

Overview

:nodoc:

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(template) ⇒ Renderer

Returns a new instance of Renderer.



10
11
12
# File 'lib/datagrid/renderer.rb', line 10

def initialize(template)
  @template = template
end

Class Method Details

.for(template) ⇒ Object



6
7
8
# File 'lib/datagrid/renderer.rb', line 6

def self.for(template)
  new(template)
end

Instance Method Details

#_safe(string) ⇒ Object



71
72
73
# File 'lib/datagrid/renderer.rb', line 71

def _safe(string)
  string.respond_to?(:html_safe) ? string.html_safe : string
end

#form_for(grid, options = {}) ⇒ Object



29
30
31
32
33
34
# File 'lib/datagrid/renderer.rb', line 29

def form_for(grid, options = {})
  options[:method] ||= :get
  options[:html] ||= {}
  options[:html][:class] ||= "datagrid-form #{@template.dom_class(grid)}"
  @template.render :partial => "datagrid/form", :locals => {:grid => grid, :options => options}
end

#format_value(grid, column, asset) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/datagrid/renderer.rb', line 14

def format_value(grid, column, asset)
  if column.is_a?(String) || column.is_a?(Symbol)
    column = grid.column_by_name(column)
  end

  value = column.html_value(@template, asset, grid)

  url = column.options[:url] && column.options[:url].call(asset)
  if url
    @template.link_to(value, url)
  else
    _safe(value)
  end
end

#header(grid, options = {}) ⇒ Object



53
54
55
56
57
# File 'lib/datagrid/renderer.rb', line 53

def header(grid, options = {})
  options[:order] = true unless options.has_key?(:order)

  @template.render :partial => "datagrid/head", :locals => {:grid => grid, :options => options}
end

#order_for(grid, column) ⇒ Object



67
68
69
# File 'lib/datagrid/renderer.rb', line 67

def order_for(grid, column)
  @template.render :partial => "datagrid/order_for", :locals => { :grid => grid, :column => column }
end

#rows(grid, assets, options = {}) ⇒ Object



59
60
61
62
63
64
65
# File 'lib/datagrid/renderer.rb', line 59

def rows(grid, assets, options = {})
  result = assets.map do |asset|
    @template.render :partial => "datagrid/row", :locals => {:grid => grid, :options => options, :asset => asset}
  end.join

  _safe(result)
end

#table(grid, *args) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/datagrid/renderer.rb', line 36

def table(grid, *args)
  options = args.extract_options!
  options[:html] ||= {}
  options[:html][:class] ||= "datagrid #{@template.dom_class(grid)}"
  if options[:cycle]
    ::Datagrid::Utils.warn_once("datagrid_table cycle option is deprecated. Use css to style odd/even rows instead.")
  end
  assets = args.any? ? args.shift : grid.assets
  paginate = options[:paginate]
  if paginate
    ::Datagrid::Utils.warn_once(":paginate option is deprecated. Look to https://github.com/bogdan/datagrid/wiki/Frontend.")
    assets = assets.paginate(paginate)
  end

  @template.render :partial => "datagrid/table", :locals => {:grid => grid, :options => options, :assets => assets}
end