module Tramway::Admin::Navbar
Public Instance Methods
navbar_items_for(project, role:)
click to toggle source
# File lib/tramway/admin/navbar.rb, line 9 def navbar_items_for(project, role:) project = project.underscore.to_sym unless project.is_a? Symbol @navbar_structure[project]&.map do |item| if item.is_a?(Class) || item.is_a?(String) should_be_in_navbar_as item, project, role elsif item.is_a? Hash sub_items = item.values.first.map do |sub_item| should_be_in_navbar_as sub_item, project, role end.compact { item.keys.first => sub_items } if sub_items.any? end end&.compact || [] end
navbar_structure(*links, project:)
click to toggle source
# File lib/tramway/admin/navbar.rb, line 4 def navbar_structure(*links, project:) @navbar_structure ||= {} @navbar_structure.merge! project => links end
Private Instance Methods
should_be_in_navbar_as(item, project, role)
click to toggle source
# File lib/tramway/admin/navbar.rb, line 25 def should_be_in_navbar_as(item, project, role) if singleton_models_for(project, role: role).map(&:to_s).include?(item.to_s) { item.to_s => :singleton } elsif available_models_for(project, role: role).map(&:to_s).include?(item.to_s) { item.to_s => :record } elsif item.is_a? Symbol :divider end end