Sha256: 5990690e1f34a513b3744a250b25c0fc13ef08d7715bd92196eed506631bebfa

Contents?: true

Size: 1.85 KB

Versions: 3

Compression:

Stored size: 1.85 KB

Contents

require "action_view"

module Datagrid
  module FormBuilder

    def datagrid_filter(filter_or_attribute, options = {})
      filter = get_filter(filter_or_attribute)
      options[:class] ||= ""
      options[:class] += " " unless options[:class].blank?
      options[:class] += "#{filter.name} #{datagrid_filter_class(filter.class)}"
      self.send(:"datagrid_#{filter.class.to_s.underscore.split('/').last}", filter, options)
    end

    protected
    def datagrid_boolean_enum_filter(attribute_or_filter, options = {})
      datagrid_enum_filter(attribute_or_filter, options)
    end

    def datagrid_boolean_filter(attribute_or_filter, options = {})
      check_box(get_attribute(attribute_or_filter), options)
    end

    def datagrid_date_filter(attribute_or_filter, options = {})
      attribute = get_attribute(attribute_or_filter)
      text_field(attribute, options)
    end

    def datagrid_default_filter(attribute_or_filter, options = {})
      text_field get_attribute(attribute_or_filter), options
    end

    def datagrid_enum_filter(attribute_or_filter, options = {})
      filter = get_filter(attribute_or_filter)
      select filter.name, filter.select || [], {:include_blank => filter.include_blank}, {:multiple => filter.multiple}.merge(options)
    end

    def datagrid_integer_filter(attribute_or_filter, options = {})
      text_field get_attribute(attribute_or_filter), options
    end

    def get_attribute(attribute_or_filter)
      attribute_or_filter.is_a?(Symbol) ?  attribute_or_filter : attribute_or_filter.name 
    end

    def get_filter(attribute_or_filter)
      attribute_or_filter.is_a?(Symbol) ? object.class.filter_by_name(attribute_or_filter) : attribute_or_filter
    end

    def datagrid_filter_class(klass)
      klass.to_s.split("::").last.underscore
    end
  end
end

ActionView::Helpers::FormBuilder.send(:include, Datagrid::FormBuilder)

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
datagrid-0.1.1 lib/datagrid/form_builder.rb
datagrid-0.1.0 lib/datagrid/form_builder.rb
datagrid-0.0.3 lib/datagrid/form_builder.rb