Module: Datagrid::Columns::InstanceMethods
- Defined in:
- lib/datagrid/columns.rb
Overview
ClassMethods
Instance Method Summary collapse
- #column_by_name(name) ⇒ Object
- #columns(*args) ⇒ Object
-
#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
Hash
where keys are column names and values are column values for the given asset. -
#header(*column_names) ⇒ Object
Returns
Array
of human readable column names. -
#row_for(asset, *column_names) ⇒ Object
Returns
Array
column 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
145 146 147 |
# File 'lib/datagrid/columns.rb', line 145 def column_by_name(name) self.class.column_by_name(name) end |
#columns(*args) ⇒ Object
136 137 138 |
# File 'lib/datagrid/columns.rb', line 136 def columns(*args) self.class.columns(*args) end |
#data ⇒ Object
Returns Array of Arrays with data for each row in datagrid assets with header.
95 96 97 |
# File 'lib/datagrid/columns.rb', line 95 def data self.rows.unshift(self.header) end |
#data_columns(*names) ⇒ Object
140 141 142 143 |
# File 'lib/datagrid/columns.rb', line 140 def data_columns(*names) names << {:data => true} 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
101 102 103 104 105 |
# File 'lib/datagrid/columns.rb', line 101 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
78 79 80 81 82 83 84 |
# File 'lib/datagrid/columns.rb', line 78 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
66 67 68 |
# File 'lib/datagrid/columns.rb', line 66 def header(*column_names) data_columns(*column_names).map(&:header) end |
#row_for(asset, *column_names) ⇒ Object
Returns Array
column values for given asset
71 72 73 74 75 |
# File 'lib/datagrid/columns.rb', line 71 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.
87 88 89 90 91 92 |
# File 'lib/datagrid/columns.rb', line 87 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 => ';')
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/datagrid/columns.rb', line 118 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 |