Module: LinkedRails::Collection::Filterable

Includes:
RDF::Serializers::DataTypeHelper
Included in:
LinkedRails::Collection
Defined in:
app/models/linked_rails/collection/filterable.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#default_filtersObject



10
11
12
13
# File 'app/models/linked_rails/collection/filterable.rb', line 10

def default_filters
  opts = @default_filters || association_class.try(:default_filters) || {}
  opts.respond_to?(:call) ? opts.call(parent) : opts
end

#filterObject



15
16
17
# File 'app/models/linked_rails/collection/filterable.rb', line 15

def filter
  default_filters.merge(@filter || {})
end

#unfiltered_collectionObject



46
47
48
# File 'app/models/linked_rails/collection/filterable.rb', line 46

def unfiltered_collection
  @unfiltered_collection ||= new_child(filter: {})
end

Instance Method Details

#filter_fieldsObject



21
22
23
# File 'app/models/linked_rails/collection/filterable.rb', line 21

def filter_fields
  @filter_fields ||= filter_options&.map { |key, options| filter_field(key, options) }
end

#filtered?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'app/models/linked_rails/collection/filterable.rb', line 25

def filtered?
  filter.present?
end

#filtersObject



29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/models/linked_rails/collection/filterable.rb', line 29

def filters
  @filters ||= filter.map do |key, values|
    predicate = key.is_a?(RDF::URI) ? key : association_class.predicate_for_key(key)

    LinkedRails.collection_filter_class.new(
      collection: self,
      default_filter: !@filter&.key?(predicate),
      key: predicate,
      value: values.map { |val| sanitized_filter_value(predicate, val) }
    )
  end
end

#unfilteredObject



42
43
44
# File 'app/models/linked_rails/collection/filterable.rb', line 42

def unfiltered
  filtered? ? unfiltered_collection : self
end