Class: CrudComponents::Admin::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/crud_components/admin/registry.rb

Overview

Which models the admin administers, resolved once and memoized. The route drawer, the sidebar and the controller all read from here.

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ Registry

Returns a new instance of Registry.



6
7
8
# File 'lib/crud_components/admin/registry.rb', line 6

def initialize(config)
  @config = config
end

Instance Method Details

#[](model) ⇒ Object

The entry for a model class or model name, or nil when unregistered.



16
17
18
19
# File 'lib/crud_components/admin/registry.rb', line 16

def [](model)
  key = model.is_a?(Class) ? model.name : model.to_s
  index[key]
end

#entriesObject

Registered models, in sidebar/route order.



11
12
13
# File 'lib/crud_components/admin/registry.rb', line 11

def entries
  @entries ||= build
end

#group_rank(key) ⇒ Object

Where a group sits in the configured order; unlisted groups come last. Ordered by the declared name, so a translated heading keeps its place.



31
32
33
34
# File 'lib/crud_components/admin/registry.rb', line 31

def group_rank(key)
  position = Array(config.groups).index { |name| Entry.group_key(name) == key }
  position || Array(config.groups).size
end

#groups(list = entries) ⇒ Object

Entries grouped for the sidebar: [heading (nil = ungrouped), entries].



24
25
26
27
# File 'lib/crud_components/admin/registry.rb', line 24

def groups(list = entries)
  list.group_by(&:group_label)
      .sort_by { |heading, grouped| [group_rank(grouped.first.group_key), heading.to_s] }
end

#registered?(model) ⇒ Boolean

Returns:

  • (Boolean)


21
# File 'lib/crud_components/admin/registry.rb', line 21

def registered?(model) = !self[model].nil?

#reload!Object



36
37
38
39
40
41
42
# File 'lib/crud_components/admin/registry.rb', line 36

def reload!
  @entries = nil
  @index = nil
  @except_names = nil
  @admin_options = nil
  self
end