class MagicGrid::Definition
Constants
- DEFAULTS
Attributes
columns[R]
options[R]
params[R]
Public Class Methods
new(cols_or_opts, collection = nil, controller = nil, opts = {})
click to toggle source
# File lib/magic_grid/definition.rb, line 63 def initialize(cols_or_opts, collection = nil, controller = nil, opts = {}) @options, @columns = *self.class.normalize_columns_options(cols_or_opts, opts) @params = controller && controller.params || {} @collection = Collection.create_or_reuse collection, options @columns = Column.columns_for_collection(magic_collection, columns, options[:searchable]) columns.each do |col| if col.sortable? if col.id == current_sort_col col.order = current_order else col.order = Order::Unordered end else col.order = Order::Unsortable end end apply_collection_params end
normalize_columns_options(cols_or_opts, opts)
click to toggle source
# File lib/magic_grid/definition.rb, line 49 def self.normalize_columns_options(cols_or_opts, opts) case cols_or_opts when Hash options = runtime_defaults.merge(cols_or_opts.reject {|k| k == :cols}) columns = cols_or_opts.fetch(:cols, []) when Array options = runtime_defaults.merge opts columns = cols_or_opts else raise "I have no idea what that is, but it's not a columns list or options hash" end [options, columns] end
runtime_defaults()
click to toggle source
# File lib/magic_grid/definition.rb, line 39 def self.runtime_defaults # run these lazily to catch any late I18n path changes DEFAULTS.merge(Collection::DEFAULTS).merge( :if_empty => I18n.t("magic_grid.no_results").capitalize, # "No results found." :searcher_label => I18n.t("magic_grid.search.label").capitalize + ': ', # "Search: " :searcher_tooltip => I18n.t("magic_grid.search.tooltip"), # "type.. + <return>" :searcher_button => I18n.t("magic_grid.search.button").capitalize # "Search" ) end
Public Instance Methods
apply_collection_params()
click to toggle source
# File lib/magic_grid/definition.rb, line 87 def apply_collection_params magic_collection.apply_sort(columns[current_sort_col], current_order.to_sql) magic_collection.apply_filter filters magic_collection.apply_pagination(current_page) magic_collection.apply_search current_search magic_collection.per_page = options[:per_page] magic_collection.apply_filter_callback options[:listener_handler] magic_collection.enable_post_filter options[:collection_post_filter] magic_collection.add_post_filter_callback options[:post_filter] end
base_params()
click to toggle source
# File lib/magic_grid/definition.rb, line 166 def base_params params.merge :magic_grid_id => magic_id end
collection()
click to toggle source
# File lib/magic_grid/definition.rb, line 15 def collection @collection.collection end
current_order()
click to toggle source
# File lib/magic_grid/definition.rb, line 122 def current_order @current_order ||= Order.from_param(param(:order, default_order.to_param)) end
current_page()
click to toggle source
# File lib/magic_grid/definition.rb, line 170 def current_page [param(:page, 1).to_i, 1].max end
current_search()
click to toggle source
# File lib/magic_grid/definition.rb, line 126 def current_search param(:q, "") end
current_sort_col()
click to toggle source
# File lib/magic_grid/definition.rb, line 107 def current_sort_col @current_sort_col ||= begin given = param(:col, -1).to_i if given >= 0 and given <= columns.count given else options[:default_col].to_i end end end
default_order()
click to toggle source
# File lib/magic_grid/definition.rb, line 118 def default_order @default_order ||= Order.from_param(options[:default_order]) end
filters()
click to toggle source
# File lib/magic_grid/definition.rb, line 100 def filters @filters ||= begin filter_keys = options[:listeners].values params.slice(*filter_keys).reject {|k,v| v.to_s.empty? } end end
has_title?()
click to toggle source
# File lib/magic_grid/definition.rb, line 150 def has_title? options[:title] || false end
magic_collection()
click to toggle source
# File lib/magic_grid/definition.rb, line 11 def magic_collection @collection end
magic_id()
click to toggle source
# File lib/magic_grid/definition.rb, line 130 def magic_id options[:id] || (Column.hash_string(columns) + magic_collection.hash_string) end
needs_searcher?()
click to toggle source
# File lib/magic_grid/definition.rb, line 138 def needs_searcher? options[:needs_searcher] or (searchable? and not options[:searcher]) end
param(key, default=nil)
click to toggle source
# File lib/magic_grid/definition.rb, line 162 def param(key, default=nil) params.fetch(param_key(key), default) end
param_key(key)
click to toggle source
# File lib/magic_grid/definition.rb, line 158 def param_key(key) "#{magic_id}_#{key}".to_sym end
searchable?()
click to toggle source
# File lib/magic_grid/definition.rb, line 134 def searchable? magic_collection.searchable? end
searcher()
click to toggle source
# File lib/magic_grid/definition.rb, line 142 def searcher if needs_searcher? param_key(:searcher) else options[:searcher] end end
title()
click to toggle source
# File lib/magic_grid/definition.rb, line 154 def title options[:title] end