Class: Jquard::Resource

Inherits:
Object
  • Object
show all
Defined in:
lib/jquard/resource.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.modelObject



11
12
13
# File 'lib/jquard/resource.rb', line 11

def model
  @model or raise Jquard::Error, "#{name} does not declare a model. Add `self.model = YourModel`."
end


60
61
62
# File 'lib/jquard/resource.rb', line 60

def navigation_group
  @navigation_group
end


52
53
54
# File 'lib/jquard/resource.rb', line 52

def navigation_icon
  @navigation_icon || "rectangle-stack"
end


56
57
58
# File 'lib/jquard/resource.rb', line 56

def navigation_label
  @navigation_label || slug.titleize
end


64
65
66
# File 'lib/jquard/resource.rb', line 64

def navigation_sort
  @navigation_sort || 0
end

Class Method Details

.build_formObject



31
32
33
# File 'lib/jquard/resource.rb', line 31

def build_form
  form(Jquard::Schemas::Schema.new).apply_default_fields(model)
end

.build_tableObject



23
24
25
# File 'lib/jquard/resource.rb', line 23

def build_table
  table(Jquard::Tables::Table.new).apply_default_columns(model)
end

.form(schema) ⇒ Object



27
28
29
# File 'lib/jquard/resource.rb', line 27

def form(schema)
  schema
end

.inherited(subclass) ⇒ Object



6
7
8
9
# File 'lib/jquard/resource.rb', line 6

def inherited(subclass)
  super
  Jquard.registry.register(subclass) if subclass.name
end

.page_for(action) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/jquard/resource.rb', line 39

def page_for(action)
  defaults = {
    index: Jquard::Resources::Pages::ListRecords,
    create: Jquard::Resources::Pages::CreateRecord,
    edit: Jquard::Resources::Pages::EditRecord
  }
  (pages[action] || defaults.fetch(action)).new(resource: self)
end

.pagesObject



35
36
37
# File 'lib/jquard/resource.rb', line 35

def pages
  {}
end

.singular_labelObject



48
49
50
# File 'lib/jquard/resource.rb', line 48

def singular_label
  slug.singularize.titleize
end

.slugObject



15
16
17
# File 'lib/jquard/resource.rb', line 15

def slug
  name.demodulize.delete_suffix("Resource").underscore.pluralize
end

.table(table) ⇒ Object



19
20
21
# File 'lib/jquard/resource.rb', line 19

def table(table)
  table
end