Sha256: a0616ce322bdebc63f1a38c168d0227226075219397cccf9a1f4b3d291379d80

Contents?: true

Size: 901 Bytes

Versions: 2

Compression:

Stored size: 901 Bytes

Contents

module Tramway::Admin::Navbar
  def navbar_structure(*links)
    @navbar_structure ||= links
  end

  def navbar_items_for(project, role:)
    @singleton_models_for ||= singleton_models_for(project, role: role)
    @available_models_for ||= available_models_for(project, role: role)
    @navbar_structure ||= {}
    @navbar_structure.map do |item|
      if item.is_a? Class
        should_be_in_navbar_as item
      elsif item.is_a? Hash
        sub_items = item.values.first.map do |sub_item|
          should_be_in_navbar_as sub_item
        end.compact
        { item.keys.first => sub_items } if sub_items.any?
      end
    end.compact
  end

  private

  def should_be_in_navbar_as(item)
    if @singleton_models_for.include?(item)
      { item => :singleton }
    elsif @available_models_for.include?(item)
      { item => :record }
    elsif item.is_a? Symbol
      :divider
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tramway-admin-1.26.1 lib/tramway/admin/navbar.rb
tramway-admin-1.26 lib/tramway/admin/navbar.rb