Sha256: 031fec3127463b48db30bba378175c940671a7e6b2a273ff52bf99b748b5e719

Contents?: true

Size: 1009 Bytes

Versions: 5

Compression:

Stored size: 1009 Bytes

Contents

module Listings
  class FilterView < BaseFieldView
    def initialize(listing, filter_description)
      super
    end

    def prepare_values
      values
    end

    def values
      @values ||= begin
        if method = @field_description.props[:values]
          listing.send(method)
        else
          listing.data_source.values_for_filter(field)
        end
      end
    end

    def value_for(value)
      if @field_description.proc
        listing.instance_exec value, &@field_description.proc
      else
        value
      end
    end

    def apply_filter(value)
      listing.data_source.filter(field, value)
    end

    def render?
      if render_option.is_a?(String)
        true
      else
        render_option
      end
    end

    def partial_name
      if render_option.is_a?(String)
        render_option
      else
        "#{listing.layout_options[:filters]}_filter"
      end
    end

    def render_option
      @field_description.props.fetch(:render, true)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
listings-0.1.15 lib/listings/filter_view.rb
listings-0.1.14 lib/listings/filter_view.rb
listings-0.1.13 lib/listings/filter_view.rb
listings-0.1.12 lib/listings/filter_view.rb
listings-0.1.11 lib/listings/filter_view.rb