Sha256: ff3f8e34afdeba5149564e549daeb6aac9f0836614854470729f17300d5277b0

Contents?: true

Size: 876 Bytes

Versions: 8

Compression:

Stored size: 876 Bytes

Contents

module Listings
  class CustomFilterView
    attr_reader :listing
    attr_reader :descriptor

    def initialize(listing, descriptor)
      @listing = listing
      @descriptor = descriptor
    end

    def prepare_values
      # custom filters do not perform lookup
    end

    def key
      @descriptor.key
    end

    def apply_filter(value)
      listing.data_source.transform_items do |items|
        listing.instance_exec items, value, &@descriptor.proc
      end
    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
        raise "custom filters can only be rendered when a partial is specified"
      end
    end

    def render_option
      @descriptor.props.fetch(:render, false)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
listings-0.1.15 lib/listings/custom_filter_view.rb
listings-0.1.14 lib/listings/custom_filter_view.rb
listings-0.1.13 lib/listings/custom_filter_view.rb
listings-0.1.12 lib/listings/custom_filter_view.rb
listings-0.1.11 lib/listings/custom_filter_view.rb
listings-0.1.10 lib/listings/custom_filter_view.rb
listings-0.1.8 lib/listings/custom_filter_view.rb
listings-0.1.7 lib/listings/custom_filter_view.rb