Class: CrudComponents::Admin::Registry
- Inherits:
-
Object
- Object
- CrudComponents::Admin::Registry
- 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
-
#[](model) ⇒ Object
The entry for a model class or model name, or nil when unregistered.
-
#entries ⇒ Object
Registered models, in sidebar/route order.
-
#group_rank(key) ⇒ Object
Where a group sits in the configured order; unlisted groups come last.
-
#groups(list = entries) ⇒ Object
Entries grouped for the sidebar: [heading (nil = ungrouped), entries].
-
#initialize(config) ⇒ Registry
constructor
A new instance of Registry.
- #registered?(model) ⇒ Boolean
- #reload! ⇒ Object
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 |
#entries ⇒ Object
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
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 |