Sha256: 74df6ba86c2d764c7e8311721713419e935d406073a45fd97a701af2547a3058

Contents?: true

Size: 1.05 KB

Versions: 35

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

module LinkedRails
  class Collection
    class FilterField < RDF::Node
      include ActiveModel::Serialization
      include ActiveModel::Model
      include LinkedRails::Model
      include LinkedRails::CallableVariable

      attr_accessor :key, :klass, :collection
      attr_writer :options_array, :options_in, :visible
      callable_variable(:options_array)
      callable_variable(:options_in)
      callable_variable(:visible)

      def iri(**_opts)
        self
      end

      def options
        @options ||= options_array&.map(&method(:filter_option)) || []
      end

      def filter_option(option)
        attrs = option.is_a?(Hash) ? option : {value: option}
        Collection::FilterOption.new(attrs.merge(collection: collection, key: key))
      end

      def visible?
        has_options? && condition_valid?
      end

      private

      def condition_valid?
        return true if visible.nil?

        visible
      end

      def has_options?
        !!(options_in || options_array)
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
linked_rails-0.0.4.pre.g3aeec2263 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.gacd5f04d4 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.gb0b6aea40 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g792a1b887 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g58af47992 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g0ec6e30ca app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g9e3bcac55 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g222bfeeca app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.gb254a2893 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g2c6c26e86 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.ge881247c3 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.gfabf7e9f5 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g8c045be3a app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g8d7195543 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.gfe77aae19 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.gc866c1806 app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g3e8f5731a app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g58e27be7f app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g96885856b app/models/linked_rails/collection/filter_field.rb
linked_rails-0.0.4.pre.g1faca9643 app/models/linked_rails/collection/filter_field.rb