lib/netzke/grid/configuration.rb
module Netzke
module Grid
# Overridable methods related to configuration of Grid. For example, to add a custom action to the end of the grid's
# bbar, you can do:
#
# def bbar
# super + [:my_action]
# end
module Configuration # WTF: naming it Config causes troubles in 1.9.3
extend ActiveSupport::Concern
module ClassMethods
def server_side_config_options
super + [:scope]
end
end
def bbar
config.has_key?(:bbar) ? config[:bbar] : default_bbar
end
def default_bbar
[:add, :add_in_form, :edit, :edit_in_form, :apply, :delete, :search]
end
def context_menu
config.has_key?(:context_menu) ? config.context_menu : default_context_menu
end
def default_context_menu
[].tap do |menu|
menu << :edit if has_edit_action?
menu << :delete if has_delete_action?
end
end
def tools
config.has_key?(:tools) ? config.tools : default_tools
end
def default_tools
[{ type: :refresh, handler: f(:netzke_on_refresh_tool) }]
end
def configure_client(c)
super
c.title ||= model.name.pluralize
c.columns = {items: js_columns}
c.columns_order = columns_order
c.pri = model_adapter.primary_key
if c.default_filters
populate_columns_with_filters(c)
end
end
def validate_config(c)
raise ArgumentError, "Grid requires a model" if model.nil?
c.editing = :in_form if c.editing.nil?
c.edits_in_form = [:both, :in_form].include?(c.editing)
c.edits_inline = [:both, :inline].include?(c.editing)
if c.paging.nil?
c.paging = c.edits_inline ? :pagination : :buffered
end
if c.paging == :buffered && c.edits_inline
raise ArgumentError, "Buffered grid cannot have inline editing"
end
c.tools = tools
c.bbar = bbar
c.context_menu = context_menu
super
end
end
end
end