Module: Datagrid::Helper
- Defined in:
- lib/datagrid/helper.rb
Instance Method Summary collapse
- #datagrid_format_value(report, column, asset) ⇒ Object
- #datagrid_header(grid, options = {}) ⇒ Object
- #datagrid_order_for(grid, column) ⇒ Object
- #datagrid_rows(report, assets, options) ⇒ Object
- #datagrid_table(report, *args) ⇒ Object
Instance Method Details
#datagrid_format_value(report, column, asset) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/datagrid/helper.rb', line 6 def datagrid_format_value(report, column, asset) value = column.value(asset, report) if column.[:url] link_to(value, column.[:url].call(asset)) else case column.format when :url link_to(column.label ? asset.send(column.label) : I18n.t("datagrid.table.url_label", :default => "URL"), value) else _safe(value) end end end |
#datagrid_header(grid, options = {}) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/datagrid/helper.rb', line 32 def datagrid_header(grid, = {}) header = empty_string [:order] = true unless .has_key?(:order) grid.columns.each do |column| data = _safe(column.header) if [:order] && column.order data << datagrid_order_for(grid, column) end header << content_tag(:th, data) end header end |
#datagrid_order_for(grid, column) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/datagrid/helper.rb', line 56 def datagrid_order_for(grid, column) content_tag(:div, :class => "order") do link_to( I18n.t("datagrid.table.order.asc", :default => "ASC"), url_for(grid.param_name => grid.attributes.merge(:order => column.name, :descending => false)), :class => "order asc" ) + " " + link_to( I18n.t("datagrid.table.order.desc", :default => "DESC"), url_for(grid.param_name => grid.attributes.merge(:order => column.name, :descending => true )), :class => "order desc" ) end end |
#datagrid_rows(report, assets, options) ⇒ Object
45 46 47 48 49 50 51 52 53 54 |
# File 'lib/datagrid/helper.rb', line 45 def datagrid_rows(report, assets, ) columns = report.columns result = assets.map do |asset| content = columns.map do |column| content_tag(:td, datagrid_format_value(report, column, asset)) end.join(empty_string) content_tag(:tr, _safe(content), :class => [:cycle] && cycle(*[:cycle])) end.join(empty_string) _safe(result) end |
#datagrid_table(report, *args) ⇒ Object
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/datagrid/helper.rb', line 20 def datagrid_table(report, *args) = args. html = [:html] || {} html[:class] ||= "datagrid" assets = report.assets paginate = [:paginate] assets = assets.paginate(paginate) if paginate content = content_tag(:tr, datagrid_header(report, )) + datagrid_rows(report, assets, ) content_tag(:table, content, html) end |