Sha256: b43f3df5fee8ef8a8cec007dc503ada174fc96ede1575225572361ad476442c9

Contents?: true

Size: 1014 Bytes

Versions: 6

Compression:

Stored size: 1014 Bytes

Contents

##
# Filter
#
module Outpost
  module List
    class Filter
      BOOLEAN_COLLECT = [["Yes", 1], ["No", 0]]

      attr_accessor :attribute, :collection, :title, :list

      def initialize(attribute, list, options={})
        @attribute  = attribute.to_s
        @list       = list
        @title      = options[:title] || @attribute.titleize

        collection = options[:collection]
        @collection = begin
          case collection
          when NilClass # No collection given. Find it ourselves.
            if list.model.column_names.include?(@attribute)
              -> {
                list.model.order(@attribute).pluck("distinct #{@attribute}")
              }
            else
              # TODO Handle association filtering
            end
          when Proc
            collection
          when Symbol
            send "_#{collection}_collection"
          end
        end
      end


      private

      def _boolean_collection
        -> { BOOLEAN_COLLECT }
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
outpost-cms-0.1.4 lib/outpost/list/filter.rb
outpost-cms-0.1.3 lib/outpost/list/filter.rb
outpost-cms-0.1.2 lib/outpost/list/filter.rb
outpost-cms-0.1.1 lib/outpost/list/filter.rb
outpost-cms-0.1.0 lib/outpost/list/filter.rb
outpost-cms-0.0.5 lib/outpost/list/filter.rb