Class: LinkedRails::Form

Inherits:
Object
  • Object
show all
Includes:
Model
Defined in:
app/models/linked_rails/form.rb,
app/models/linked_rails/form/page.rb,
app/models/linked_rails/form/field.rb,
app/models/linked_rails/form/group.rb,
app/models/linked_rails/form/field_factory.rb,
app/models/linked_rails/form/field/date_input.rb,
app/models/linked_rails/form/field/file_input.rb,
app/models/linked_rails/form/field/text_input.rb,
app/models/linked_rails/form/field/color_input.rb,
app/models/linked_rails/form/field/email_input.rb,
app/models/linked_rails/form/field/radio_group.rb,
app/models/linked_rails/form/field/number_input.rb,
app/models/linked_rails/form/field/select_input.rb,
app/models/linked_rails/form/field/slider_input.rb,
app/models/linked_rails/form/field/checkbox_group.rb,
app/models/linked_rails/form/field/checkbox_input.rb,
app/models/linked_rails/form/field/location_input.rb,
app/models/linked_rails/form/field/markdown_input.rb,
app/models/linked_rails/form/field/password_input.rb,
app/models/linked_rails/form/field/resource_field.rb,
app/serializers/linked_rails/form/page_serializer.rb,
app/models/linked_rails/form/field/date_time_input.rb,
app/models/linked_rails/form/field/text_area_input.rb,
app/serializers/linked_rails/form/field_serializer.rb,
app/serializers/linked_rails/form/group_serializer.rb,
app/models/linked_rails/form/field/association_input.rb,
app/models/linked_rails/form/field/postal_range_input.rb,
app/models/linked_rails/form/field/toggle_button_group.rb,
app/serializers/linked_rails/form/field/select_input_serializer.rb,
app/serializers/linked_rails/form/field/resource_field_serializer.rb,
app/serializers/linked_rails/form/field/association_input_serializer.rb

Overview

rubocop:disable Metrics/ClassLength

Direct Known Subclasses

ApplicationForm

Defined Under Namespace

Classes: Field, FieldFactory, FieldSerializer, Group, GroupSerializer, Page, PageSerializer

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Model

#build_child, #singular_resource?

Methods included from Model::Serialization

#preview_includes, #show_includes

Methods included from Model::Iri

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

Methods included from Model::Enhancements

#enhanced_with?

Methods included from Model::Dirty

#previous_changes_by_predicate, #previously_changed_relations

Methods included from Model::Collections

#collection_for, #parent_collections

Class Method Details

.form_iriObject



20
21
22
# File 'app/models/linked_rails/form.rb', line 20

def form_iri
  LinkedRails.iri(path: form_iri_path)
end

.form_iri_pathObject



24
25
26
# File 'app/models/linked_rails/form.rb', line 24

def form_iri_path
  RDF::URI("/forms/#{to_s.sub(/Form$/, '').tableize}")
end

.form_options_iri(attr) ⇒ Object



28
29
30
# File 'app/models/linked_rails/form.rb', line 28

def form_options_iri(attr)
  LinkedRails.iri(path: "/enums/#{model_class.to_s.tableize}/#{attr}")
end

.inherited(target) ⇒ Object



16
17
18
# File 'app/models/linked_rails/form.rb', line 16

def inherited(target)
  target.pages = []
end

.iriObject



32
33
34
# File 'app/models/linked_rails/form.rb', line 32

def iri
  Vocab.form[:Form]
end

.model_classObject



36
37
38
39
40
# File 'app/models/linked_rails/form.rb', line 36

def model_class
  @model_class ||=
    name.sub(/Form$/, '').safe_constantize ||
    name.deconstantize.classify.sub(/Form$/, '').safe_constantize
end

.model_policyObject



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

def model_policy
  @model_policy ||= Pundit::PolicyFinder.new(model_class).policy
end

.model_policy!Object



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

def model_policy!
  model_policy || raise("No policy found for #{model_class}")
end

.preview_includesObject



66
67
68
# File 'app/models/linked_rails/form.rb', line 66

def preview_includes
  [pages: {groups: [fields: [:fail, :pass, shape: [:property, nested_shapes: :property]]]}]
end

.requested_single_resource(params, _user_context) ⇒ Object



50
51
52
# File 'app/models/linked_rails/form.rb', line 50

def requested_single_resource(params, _user_context)
  find_form_class(params)&.new
end

.serializer_attributesObject



54
55
56
# File 'app/models/linked_rails/form.rb', line 54

def serializer_attributes
  @serializer_attributes ||= serializer_class&.attributes_to_serialize || {}
end

.serializer_classObject



58
59
60
# File 'app/models/linked_rails/form.rb', line 58

def serializer_class
  @serializer_class ||= RDF::Serializers.serializer_for(model_class)
end

.serializer_reflectionsObject



62
63
64
# File 'app/models/linked_rails/form.rb', line 62

def serializer_reflections
  @serializer_reflections ||= serializer_class&.relationships_to_serialize || {}
end

Instance Method Details

#root_relative_iri(_opts = {}) ⇒ Object



11
12
13
# File 'app/models/linked_rails/form.rb', line 11

def root_relative_iri(_opts = {})
  self.class.form_iri_path
end