Module: Datagrid::Columns::InstanceMethods
- Defined in:
- lib/datagrid/columns.rb
Overview
ClassMethods
Instance Method Summary collapse
- #column_by_name(name) ⇒ Object
-
#columns(*args) ⇒ Object
Returns all columns selected in grid instance.
-
#data ⇒ Object
Returns Array of Arrays with data for each row in datagrid assets with header.
- #data_columns(*names) ⇒ Object
-
#data_hash ⇒ Object
Return Array of Hashes where keys are column names and values are column values for each row in datagrid
#assets. -
#hash_for(asset) ⇒ Object
Returns
Hashwhere keys are column names and values are column values for the given asset. -
#header(*column_names) ⇒ Object
Returns
Arrayof human readable column names. -
#row_for(asset, *column_names) ⇒ Object
Returns
Arraycolumn values for given asset. -
#rows(*column_names) ⇒ Object
Returns Array of Arrays with data for each row in datagrid assets without header.
-
#to_csv(*column_names) ⇒ Object
Returns a CSV representation of the data in the table You are able to specify which columns you want to see in CSV.
Instance Method Details
#column_by_name(name) ⇒ Object
155 156 157 |
# File 'lib/datagrid/columns.rb', line 155 def column_by_name(name) self.class.column_by_name(name) end |
#columns(*args) ⇒ Object
Returns all columns selected in grid instance
Examples:
MyGrid.new.columns # => all defined columns
grid = MyGrid.new(:column_names => [:id, :name])
grid.columns # => id and name columsn
grid.columns(:id, :category) # => id and category column
144 145 146 |
# File 'lib/datagrid/columns.rb', line 144 def columns(*args) self.class.columns(*args) end |
#data ⇒ Object
Returns Array of Arrays with data for each row in datagrid assets with header.
94 95 96 |
# File 'lib/datagrid/columns.rb', line 94 def data self.rows.unshift(self.header) end |
#data_columns(*names) ⇒ Object
148 149 150 151 152 153 |
# File 'lib/datagrid/columns.rb', line 148 def data_columns(*names) = names. [:data] = true names << self.columns(*names) end |
#data_hash ⇒ Object
Return Array of Hashes where keys are column names and values are column values for each row in datagrid #assets
100 101 102 103 104 |
# File 'lib/datagrid/columns.rb', line 100 def data_hash self.assets.map do |asset| hash_for(asset) end end |
#hash_for(asset) ⇒ Object
Returns Hash where keys are column names and values are column values for the given asset
77 78 79 80 81 82 83 |
# File 'lib/datagrid/columns.rb', line 77 def hash_for(asset) result = {} self.data_columns.each do |column| result[column.name] = column.value(asset, self) end result end |
#header(*column_names) ⇒ Object
Returns Array of human readable column names. See also “Localization” section
65 66 67 |
# File 'lib/datagrid/columns.rb', line 65 def header(*column_names) data_columns(*column_names).map(&:header) end |
#row_for(asset, *column_names) ⇒ Object
Returns Array column values for given asset
70 71 72 73 74 |
# File 'lib/datagrid/columns.rb', line 70 def row_for(asset, *column_names) data_columns(*column_names).map do |column| column.value(asset, self) end end |
#rows(*column_names) ⇒ Object
Returns Array of Arrays with data for each row in datagrid assets without header.
86 87 88 89 90 91 |
# File 'lib/datagrid/columns.rb', line 86 def rows(*column_names) #TODO: find in batches self.assets.map do |asset| self.row_for(asset, *column_names) end end |
#to_csv(*column_names) ⇒ Object
Returns a CSV representation of the data in the table You are able to specify which columns you want to see in CSV. All data columns are included by default Also you can specify options hash as last argument that is proxied to Ruby CSV library.
Example:
grid.to_csv
grid.to_csv(:id, :name)
grid.to_csv(:col_sep => ';')
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/datagrid/columns.rb', line 117 def to_csv(*column_names) = column_names. klass = if RUBY_VERSION >= "1.9" require 'csv' CSV else require "fastercsv" FasterCSV end klass.generate( {:headers => self.header(*column_names), :write_headers => true}.merge() ) do |csv| self.rows(*column_names).each do |row| csv << row end end end |