ozfortress/citadel

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

Summary

Maintainability
Test Coverage
.card.mb-3
  .card-header Info
  .card-body
    = f.select :format_id, format_options
    = f.text_field :name
    = f.markdown_editor :description, rows: 10, no_escape: true
    = f.text_field :category

.card.mb-3
  .card-header Players
  .card-body
    .form-group
      = f.number_field :min_players, min: 1, label: 'Minimum'
    .form-group
      = f.number_field :max_players, min: 0, label: 'Maximum (0 for unlimited)'

.card.mb-3
  .card-header State
  .card-body
    = f.check_box :signuppable, label_class: 'pl-1'
    = f.check_box :hide_rosters, label_class: 'pl-1'
    = f.check_box :roster_locked, label_class: 'pl-1'
    = f.check_box :matches_submittable, label_class: 'pl-1'
    = f.check_box :transfers_require_approval, label_class: 'pl-1'
    = f.check_box :allow_disbanding, label_class: 'pl-1'
    = f.check_box :forfeit_all_matches_when_roster_disbands, label_class: 'pl-1'

.card.mb-3
  .card-header Points
  .card-body
    = f.number_field :points_per_round_win,  label: 'Points per set won', step: :any
    = f.number_field :points_per_round_draw, label: 'Points per set drawn', step: :any
    = f.number_field :points_per_round_loss, label: 'Points per set lost', step: :any
    = f.number_field :points_per_match_win,  label: 'Points per match won', step: :any
    = f.number_field :points_per_match_draw, label: 'Points per match drawn', step: :any
    = f.number_field :points_per_match_loss, label: 'Points per match lost', step: :any
    = f.number_field :points_per_forfeit_win, label: 'Points per match won by forfeit', step: :any
    = f.number_field :points_per_forfeit_draw, label: 'Points per match drawn by forfeit', step: :any
    = f.number_field :points_per_forfeit_loss, label: 'Points per match lost by forfeit', step: :any

.card.mb-3
  .card-header
    .row.no-gutters.flex-nowrap.align-items-center
      .mr-2 Tiebreaking

      .spacer

      = link_to_add_association f, :tiebreakers, class: 'btn btn-sm btn-success',
                                'data-association-insertion-node' => '#tiebreakers' do
        = inline_svg_tag 'open_iconic/plus.svg', class: 'icon mr-2'
        Add Tiebreaker

  %ul.list-group.list-group-flush.list-dynamic-add.form-inline
    = f.fields_for :tiebreakers do |tiebreaker_f|
      = render 'tiebreaker_fields', f: tiebreaker_f

    #tiebreakers

.card.mb-3
  .card-header
    .row.no-gutters.flex-nowrap.align-items-center
      .mr-2 Divisions

      .spacer

      = link_to_add_association f, :divisions, class: 'btn btn-sm btn-success',
                                'data-association-insertion-node' => '#divisions' do
        = inline_svg_tag 'open_iconic/plus.svg', class: 'icon mr-2'
        Add Division

  %ul.list-group.list-group-flush.list-dynamic-add.form-inline
    = f.fields_for :divisions do |division_f|
      = render 'division_fields', f: division_f

    #divisions

.card.mb-3
  .card-header
    .row.no-gutters.flex-nowrap.align-items-center
      .mr-2 Map Pool (Leave empty for all maps)

      .spacer

      = link_to_add_association f, :pooled_maps, class: 'btn btn-sm btn-success',
                                'data-association-insertion-node' => '#pooled-maps' do
        = inline_svg_tag 'open_iconic/plus.svg', class: 'icon mr-2'
        Add Map

  %ul.list-group.list-group-flush.list-dynamic-add.form-inline
    = f.fields_for :pooled_maps do |pooled_map_f|
      = render 'pooled_map_fields', f: pooled_map_f

    #pooled-maps

.card.mb-3
  .card-header Scheduling
  .card-body
    = f.check_box :schedule_locked
    = f.select(:schedule, League.schedules.map { |name, _| [name.humanize, name] })

    #weeklies
      = f.fields_for :weekly_scheduler, weekly_scheduler do |scheduler_f|
        = render 'leagues/schedulers/weekly_form', f: scheduler_f