Class: Avo::Menu::Builder
- Inherits:
-
Object
- Object
- Avo::Menu::Builder
- Defined in:
- lib/avo/menu/builder.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#all_dashboards(**args) ⇒ Object
Add all the dashboards.
-
#all_resources(**args) ⇒ Object
Add all the resources.
-
#all_tools(**args) ⇒ Object
Add all the tools.
-
#build ⇒ Object
Fetch the menu.
-
#dashboard(dashboard, **args) ⇒ Object
Adds a dashboard.
-
#group(name = nil, **args, &block) ⇒ Object
Adds a group.
-
#initialize(name: nil, items: []) ⇒ Builder
constructor
A new instance of Builder.
-
#link(name, **args) ⇒ Object
Adds a link.
-
#resource(name, **args) ⇒ Object
(also: #resources)
Validates and adds a resource.
-
#section(name = nil, **args, &block) ⇒ Object
Adds a section.
Constructor Details
Class Method Details
.parse_menu(&block) ⇒ Object
3 4 5 |
# File 'lib/avo/menu/builder.rb', line 3 def (&block) Docile.dsl_eval(Avo::Menu::Builder.new, &block).build end |
Instance Method Details
#all_dashboards(**args) ⇒ Object
Add all the dashboards
63 64 65 66 67 |
# File 'lib/avo/menu/builder.rb', line 63 def all_dashboards(**args) Avo::App..each do |dash| dashboard dash.id, **args end end |
#all_resources(**args) ⇒ Object
Add all the resources
56 57 58 59 60 |
# File 'lib/avo/menu/builder.rb', line 56 def all_resources(**args) Avo::App..each do |res| resource res.model_class, **args end end |
#all_tools(**args) ⇒ Object
Add all the tools
70 71 72 73 74 |
# File 'lib/avo/menu/builder.rb', line 70 def all_tools(**args) Avo::App..each do |tool| link tool.humanize, path: root_path(paths: [tool]) end end |
#build ⇒ Object
Fetch the menu
77 78 79 |
# File 'lib/avo/menu/builder.rb', line 77 def build @menu end |
#dashboard(dashboard, **args) ⇒ Object
Adds a dashboard
41 42 43 |
# File 'lib/avo/menu/builder.rb', line 41 def dashboard(dashboard, **args) @menu.items << Avo::Menu::Dashboard.new(dashboard: dashboard, **args) end |
#group(name = nil, **args, &block) ⇒ Object
Adds a group
51 52 53 |
# File 'lib/avo/menu/builder.rb', line 51 def group(name = nil, **args, &block) @menu.items << Avo::Menu::Group.new(name: name, **args, items: self.class.(&block).items) end |
#link(name, **args) ⇒ Object
Adds a link
25 26 27 |
# File 'lib/avo/menu/builder.rb', line 25 def link(name, **args) @menu.items << Avo::Menu::Link.new(name: name, **args) end |
#resource(name, **args) ⇒ Object Also known as: resources
Validates and adds a resource
30 31 32 33 34 35 36 37 |
# File 'lib/avo/menu/builder.rb', line 30 def resource(name, **args) name = name.to_s.singularize res = Avo::App.guess_resource(name) if res.present? @menu.items << Avo::Menu::Resource.new(resource: name, **args) end end |
#section(name = nil, **args, &block) ⇒ Object
Adds a section
46 47 48 |
# File 'lib/avo/menu/builder.rb', line 46 def section(name = nil, **args, &block) @menu.items << Avo::Menu::Section.new(name: name, **args, items: self.class.(&block).items) end |