Class: LinkedRails::Collection::View

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model, Model
Defined in:
app/models/linked_rails/collection/view.rb

Constant Summary

Constants included from Model::Collections

Model::Collections::COLLECTION_CUSTOMIZABLE_OPTIONS, Model::Collections::COLLECTION_OPTIONS, Model::Collections::COLLECTION_STATIC_OPTIONS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Model

#build_child

Methods included from Model::Singularable

#root_relative_singular_iri, #singular_iri, #singular_iri?, #singular_iri_opts, #singular_iri_template, #singular_resource?

Methods included from Model::Serialization

#show_includes

Methods included from Model::Menuable

#menu, #menu_list, #menus

Methods included from Model::IRI

#anonymous_iri, #anonymous_iri?, #iri, #iri_elements, #iri_opts, #rdf_type, #reload, #route_fragment

Methods included from Model::Enhancements

#enhanced_with?

Methods included from Model::Dirty

#previously_changed_relations

Methods included from Model::Collections

#collection_for, #collection_iri, #collection_options_for, #collection_root_relative_iri, #parent_collections

Methods included from Model::Actionable

#action, #action_list, #action_triples, #actions, #collection_actions, #favorite_actions

Instance Attribute Details

#collectionObject

Returns the value of attribute collection.



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

def collection
  @collection
end

#filterObject

Returns the value of attribute filter.



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

def filter
  @filter
end

Class Method Details

.iriObject



105
106
107
# File 'app/models/linked_rails/collection/view.rb', line 105

def iri
  [super, Vocab.as.CollectionPage]
end

.new(**opts) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'app/models/linked_rails/collection/view.rb', line 109

def new(**opts)
  type = opts.delete(:type)&.to_sym
  return super if type.nil?

  case type
  when :paginated
    collection_paginated_view_class.new(**opts)
  when :infinite
    collection_infinite_view_class.new(**opts)
  else
    raise ActionController::BadRequest, "'#{type}' is not a valid collection type"
  end
end

.policy_classObject



123
124
125
# File 'app/models/linked_rails/collection/view.rb', line 123

def policy_class
  LinkedRails::Collection::ViewPolicy
end

Instance Method Details

#idObject



16
# File 'app/models/linked_rails/collection/view.rb', line 16

alias id iri

#member_sequenceObject



22
23
24
25
26
27
28
29
# File 'app/models/linked_rails/collection/view.rb', line 22

def member_sequence
  @member_sequence ||= LinkedRails::Sequence.new(
    members,
    id: members_iri,
    parent: self,
    scope: false
  )
end

#membersObject



31
32
33
# File 'app/models/linked_rails/collection/view.rb', line 31

def members
  @members ||= include_members ? members_array : iris_from_members
end

#members_iriObject



35
36
37
38
39
# File 'app/models/linked_rails/collection/view.rb', line 35

def members_iri
  uri = iri.dup
  uri.fragment = :members
  uri
end

#page_sizeObject



41
42
43
# File 'app/models/linked_rails/collection/view.rb', line 41

def page_size
  collection.page_size&.to_i || default_page_size
end

#preview_includesObject



45
46
47
# File 'app/models/linked_rails/collection/view.rb', line 45

def preview_includes
  include_members ? {member_sequence: :members} : %i[member_sequence]
end

#root_relative_iri(**opts) ⇒ Object



18
19
20
# File 'app/models/linked_rails/collection/view.rb', line 18

def root_relative_iri(**opts)
  collection.unfiltered.root_relative_iri(**iri_opts.merge(opts))
end

#titleObject



49
50
51
52
53
54
55
56
# File 'app/models/linked_rails/collection/view.rb', line 49

def title
  plural = association_class.name.tableize
  I18n.t(
    "#{plural}.collection.#{filter&.values&.join('.').presence || name}",
    count: ->(_opts) { total_count },
    default: association_class.plural_label
  )
end