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, path = nil, **args) ⇒ Object
(also: #link_to)
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
65 66 67 68 69 |
# File 'lib/avo/menu/builder.rb', line 65 def all_dashboards(**args) Avo::App..each do |dash| dashboard dash.id, **args end end |
#all_resources(**args) ⇒ Object
Add all the resources
58 59 60 61 62 |
# File 'lib/avo/menu/builder.rb', line 58 def all_resources(**args) Avo::App..each do |res| resource res.route_key, **args end end |
#all_tools(**args) ⇒ Object
Add all the tools
72 73 74 75 76 |
# File 'lib/avo/menu/builder.rb', line 72 def all_tools(**args) Avo::App..each do |tool| link tool.humanize, path: root_path(paths: [tool]) end end |
#build ⇒ Object
Fetch the menu
79 80 81 |
# File 'lib/avo/menu/builder.rb', line 79 def build @menu end |
#dashboard(dashboard, **args) ⇒ Object
Adds a dashboard
43 44 45 |
# File 'lib/avo/menu/builder.rb', line 43 def dashboard(dashboard, **args) @menu.items << Avo::Menu::Dashboard.new(dashboard: dashboard, **args) end |
#group(name = nil, **args, &block) ⇒ Object
Adds a group
53 54 55 |
# File 'lib/avo/menu/builder.rb', line 53 def group(name = nil, **args, &block) @menu.items << Avo::Menu::Group.new(name: name, **args, items: self.class.(&block).items) end |
#link(name, path = nil, **args) ⇒ Object Also known as: link_to
Adds a link
25 26 27 28 |
# File 'lib/avo/menu/builder.rb', line 25 def link(name, path = nil, **args) path ||= args[:path] @menu.items << Avo::Menu::Link.new(name: name, path: path, **args) end |
#resource(name, **args) ⇒ Object Also known as: resources
Validates and adds a resource
32 33 34 35 36 37 38 39 |
# File 'lib/avo/menu/builder.rb', line 32 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
48 49 50 |
# File 'lib/avo/menu/builder.rb', line 48 def section(name = nil, **args, &block) @menu.items << Avo::Menu::Section.new(name: name, **args, items: self.class.(&block).items) end |