Restano avviabili solo le gare in ritardo senza punteggio, non quelle già terminate dal portale. Co-authored-by: Cursor <cursoragent@cursor.com>
158 lines
9.2 KiB
ERB
158 lines
9.2 KiB
ERB
<div class="card">
|
||
<% if @writable && @tournament.uses_groups? %>
|
||
<p class="tournament-hub-hint"><%= t("tournaments.hub.generate_hint") %></p>
|
||
<%= button_to t("tournaments.hub.generate_group_matches"),
|
||
public_generate_group_matches_tournament_path(@tournament),
|
||
method: :post, class: "btn btn-secondary" %>
|
||
<% end %>
|
||
|
||
<% if @matches.any? %>
|
||
<p class="tournament-hub-hint" style="margin-top:16px"><%= t("tournaments.hub.calendar_edit_hint") %></p>
|
||
<div class="tournament-match-list tournament-match-table" data-swap-error="<%= t("flash.tournaments.sides_swap_failed") %>">
|
||
<% @matches.each do |match| %>
|
||
<% form_id = "match-edit-#{match.id}" %>
|
||
<% courts = (@tournament.court_list + [match.court]).compact_blank.uniq %>
|
||
<%= form_with url: public_tournament_match_path(@tournament, match), method: :patch, html: { id: form_id, class: "visually-hidden" } do %>
|
||
<%= hidden_field_tag :tab, @tab, form: form_id %>
|
||
<% end %>
|
||
<article class="tournament-match-row">
|
||
<% if @writable %>
|
||
<div class="tournament-match-row__field">
|
||
<label for="match_at_<%= match.id %>"><%= t("tournaments.hub.datetime") %></label>
|
||
<%= datetime_local_field_tag "match[scheduled_at]", tournament_datetime_local(match.scheduled_at),
|
||
id: "match_at_#{match.id}", form: form_id, required: true, class: "tournament-match-form__datetime" %>
|
||
</div>
|
||
<div class="tournament-match-row__field">
|
||
<label for="match_court_<%= match.id %>"><%= t("tournaments.hub.court") %></label>
|
||
<%= select_tag "match[court]", options_for_select(courts, match.court),
|
||
id: "match_court_#{match.id}", form: form_id, include_blank: true, class: "tournament-match-form__court" %>
|
||
</div>
|
||
<div class="tournament-match-row__field tournament-match-row__field--phase">
|
||
<span class="tournament-match-row__label"><%= t("tournaments.hub.round") %></span>
|
||
<p class="tournament-match-row__phase"><%= tournament_phase_label(match) %></p>
|
||
</div>
|
||
<div class="tournament-match-row__sides">
|
||
<div class="tournament-match-row__side">
|
||
<span class="tournament-match-row__label"><%= t("tournaments.hub.home") %></span>
|
||
<div data-swap-side="home"><%= render "public/tournaments/match_side_select", match: match, side: :home, form_id: form_id %></div>
|
||
</div>
|
||
<div class="tournament-match-swap-col">
|
||
<%= button_to public_swap_tournament_match_path(@tournament, match), method: :post,
|
||
class: "tournament-match-swap__btn",
|
||
title: t("tournaments.hub.swap_sides"),
|
||
form: { class: "tournament-match-swap__form", data: { turbo: false } } do %>
|
||
<i class="fa-solid fa-right-left" aria-hidden="true"></i>
|
||
<span class="visually-hidden"><%= t("tournaments.hub.swap_sides") %></span>
|
||
<% end %>
|
||
</div>
|
||
<div class="tournament-match-row__side">
|
||
<span class="tournament-match-row__label"><%= t("tournaments.hub.away") %></span>
|
||
<div data-swap-side="away"><%= render "public/tournaments/match_side_select", match: match, side: :away, form_id: form_id %></div>
|
||
</div>
|
||
<div class="tournament-match-row__score">
|
||
<span class="tournament-match-row__label"><%= t("tournaments.hub.result") %></span>
|
||
<% if match.result_recorded? %>
|
||
<p data-swap-played-score><%= match.home_score %>–<%= match.away_score %></p>
|
||
<% else %>
|
||
<span class="tournament-match-form__score">
|
||
<%= number_field_tag :home_score, match.home_score, id: "home_score_#{match.id}", form: form_id, data: { swap_score: "home" } %>
|
||
<span>–</span>
|
||
<%= number_field_tag :away_score, match.away_score, id: "away_score_#{match.id}", form: form_id, data: { swap_score: "away" } %>
|
||
</span>
|
||
<% end %>
|
||
</div>
|
||
</div>
|
||
<div class="tournament-match-form__actions tournament-match-row__actions">
|
||
<%= submit_tag t("tournaments.hub.save_match"), form: form_id, class: "btn btn-secondary tournament-match-form__save" %>
|
||
<% if match.deletable? %>
|
||
<%= button_to t("matches.index.delete"), public_tournament_match_path(@tournament, match),
|
||
method: :delete, class: "btn btn-secondary tournament-match-form__save",
|
||
form: { class: "tournament-match-delete-form", data: { turbo_confirm: match.matchup_label } } %>
|
||
<% end %>
|
||
</div>
|
||
<% else %>
|
||
<div class="tournament-match-row__field">
|
||
<span class="tournament-match-row__label"><%= t("tournaments.hub.datetime") %></span>
|
||
<p class="tournament-match-row__phase"><%= match.scheduled_at ? l(match.scheduled_at, format: :short) : "—" %></p>
|
||
</div>
|
||
<div class="tournament-match-row__field">
|
||
<span class="tournament-match-row__label"><%= t("tournaments.hub.court") %></span>
|
||
<p class="tournament-match-row__phase"><%= match.court || "—" %></p>
|
||
</div>
|
||
<div class="tournament-match-row__field tournament-match-row__field--phase">
|
||
<span class="tournament-match-row__label"><%= t("tournaments.hub.round") %></span>
|
||
<p class="tournament-match-row__phase"><%= tournament_phase_label(match) %></p>
|
||
</div>
|
||
<div class="tournament-match-row__sides">
|
||
<div class="tournament-match-row__side">
|
||
<span class="tournament-match-row__label"><%= t("tournaments.hub.home") %></span>
|
||
<%= tournament_team_chip(match.home_participant, name: match.home_display_name) %>
|
||
</div>
|
||
<div class="tournament-match-swap-col" aria-hidden="true"></div>
|
||
<div class="tournament-match-row__side">
|
||
<span class="tournament-match-row__label"><%= t("tournaments.hub.away") %></span>
|
||
<%= tournament_team_chip(match.away_participant, name: match.away_display_name) %>
|
||
</div>
|
||
<div class="tournament-match-row__score">
|
||
<span class="tournament-match-row__label"><%= t("tournaments.hub.result") %></span>
|
||
<p>
|
||
<% if match.home_score.present? %>
|
||
<%= match.home_score %>–<%= match.away_score %>
|
||
<% else %>
|
||
—
|
||
<% end %>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<% end %>
|
||
</article>
|
||
<% end %>
|
||
</div>
|
||
<% else %>
|
||
<p class="tournament-hub-hint" style="margin-top:16px"><%= t("tournaments.hub.no_matches") %></p>
|
||
<% end %>
|
||
|
||
<% if @writable %>
|
||
<details class="tournament-schedule-extra">
|
||
<summary><%= t("tournaments.hub.schedule_another") %></summary>
|
||
<%= form_with url: public_tournament_matches_path(@tournament), method: :post, html: { class: "tournament-form", style: "margin-top:16px" } do %>
|
||
<div class="tournament-form__field">
|
||
<%= label_tag "match[home_participant_id]", t("tournaments.hub.home") %>
|
||
<%= select_tag "match[home_participant_id]",
|
||
options_from_collection_for_select(@participants, :id, :name), include_blank: t("tournaments.tbd") %>
|
||
</div>
|
||
<div class="tournament-form__field">
|
||
<%= label_tag "match[away_participant_id]", t("tournaments.hub.away") %>
|
||
<%= select_tag "match[away_participant_id]",
|
||
options_from_collection_for_select(@participants, :id, :name), include_blank: t("tournaments.tbd") %>
|
||
</div>
|
||
<div class="tournament-form__field">
|
||
<%= label_tag "match[court]", t("tournaments.hub.court") %>
|
||
<%= select_tag "match[court]", options_for_select(@tournament.court_list) %>
|
||
</div>
|
||
<div class="tournament-form__field">
|
||
<%= label_tag "match[scheduled_at]", t("tournaments.hub.datetime") %>
|
||
<%= datetime_local_field_tag "match[scheduled_at]", nil, required: true %>
|
||
</div>
|
||
<% if @groups.any? %>
|
||
<div class="tournament-form__field">
|
||
<%= label_tag "match[tournament_group_id]", t("tournaments.hub.group") %>
|
||
<%= select_tag "match[tournament_group_id]",
|
||
options_from_collection_for_select(@groups, :id, :name), include_blank: true %>
|
||
</div>
|
||
<% end %>
|
||
<% if @rounds.any? %>
|
||
<div class="tournament-form__field">
|
||
<%= label_tag "match[tournament_round_id]", t("tournaments.hub.round") %>
|
||
<%= select_tag "match[tournament_round_id]",
|
||
options_from_collection_for_select(@rounds, :id, :name), include_blank: t("tournaments.hub.no_round") %>
|
||
</div>
|
||
<% end %>
|
||
<div class="tournament-form__actions">
|
||
<%= submit_tag t("tournaments.hub.schedule_match"), class: "btn btn-primary" %>
|
||
</div>
|
||
<% end %>
|
||
</details>
|
||
<% end %>
|
||
</div>
|