ozfortress/citadel

View on GitHub
app/views/leagues/_league_list.html.haml

Summary

Maintainability
Test Coverage
:ruby
  categories = leagues.group_by(&:category)
  categories.delete '' # Ignore empty categories

  category_id = lambda do |category|
    "#{game.name.parameterize}-#{category.parameterize}"
  end

.row
  .league-categories.tab-content.col-12.col-sm-10.order-2.order-sm-1
    - (['All'] + categories.keys).each_with_index do |category, index|
      - klass = "tab-pane #{index.zero? ? 'show active' : ''} "
      - categorised = index.zero? ? leagues : categories[category]

      .league-category{ id: category_id.call(category), class: klass }
        %ul.list-group
          - categorised.each do |league|
            - league_p = present(league)

            = link_to league_path(league), class: league_p.list_group_item_class do
              .d-flex.align-items-start
                %h4.mb-0.list-group-item-heading
                  = league.name

                .spacer

                .badge.badge-primary
                  Teams: #{league.rosters.size}


  .col-12.col-sm-2.order-1.order-sm-2.mb-2
    %ul.list-group
      - select = (['All'] + categories.keys).map { |category| [category, category_id.call(category)] }

      = select_tag game.name.parameterize, options_for_select(select, select[0][1]),
                   class: 'form-control', data: { toggle: 'tab' }