Class: AtomicAdmin::Interaction::Manager
- Inherits:
-
Object
- Object
- AtomicAdmin::Interaction::Manager
- Includes:
- Enumerable
- Defined in:
- lib/atomic_admin/interaction/manager.rb
Constant Summary collapse
- INTERACTIONS =
{ analytics: AtomicAdmin::Interaction::Analytics, jsonform: AtomicAdmin::Interaction::JsonForm, resource: AtomicAdmin::Interaction::Resource, launch: AtomicAdmin::Interaction::Launch, readonly: AtomicAdmin::Interaction::Readonly, }.freeze
Instance Method Summary collapse
- #[](key) ⇒ Object
- #add(key, type:, **kwargs) ⇒ Object
- #each(&block) ⇒ Object
- #for_type(type) ⇒ Object
- #get(key) ⇒ Object
-
#initialize ⇒ Manager
constructor
A new instance of Manager.
- #resolve(**kwargs) ⇒ Object
- #tap {|_self| ... } ⇒ Object
Constructor Details
#initialize ⇒ Manager
Returns a new instance of Manager.
13 14 15 16 |
# File 'lib/atomic_admin/interaction/manager.rb', line 13 def initialize @interactions = {} @curr_index = 0 end |
Instance Method Details
#[](key) ⇒ Object
38 39 40 |
# File 'lib/atomic_admin/interaction/manager.rb', line 38 def [](key) @interactions[key] end |
#add(key, type:, **kwargs) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/atomic_admin/interaction/manager.rb', line 24 def add(key, type:, **kwargs) interaction_cls = INTERACTIONS[type] || AtomicAdmin::Interaction::Base interaction = interaction_cls.new(key:, type:, order: @curr_index, **kwargs) @interactions[key] = interaction @curr_index += 1 nil end |
#each(&block) ⇒ Object
18 19 20 21 22 |
# File 'lib/atomic_admin/interaction/manager.rb', line 18 def each(&block) @interactions.each do |key, interaction| block.call(key, interaction) end end |
#for_type(type) ⇒ Object
47 48 49 |
# File 'lib/atomic_admin/interaction/manager.rb', line 47 def for_type(type) @interactions.values.select { |interaction| interaction.type == type } end |
#get(key) ⇒ Object
34 35 36 |
# File 'lib/atomic_admin/interaction/manager.rb', line 34 def get(key) @interactions[key] end |
#resolve(**kwargs) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/atomic_admin/interaction/manager.rb', line 52 def resolve(**kwargs) sorted = @interactions.sort_by { |key, interaction| interaction.order } sorted.map do |key, interaction| interaction.resolve(**kwargs) end end |
#tap {|_self| ... } ⇒ Object
42 43 44 45 |
# File 'lib/atomic_admin/interaction/manager.rb', line 42 def tap yield self self end |