134 lines
5.7 KiB
ERB
134 lines
5.7 KiB
ERB
<% content_for :body_class, "admin-body" %>
|
|
|
|
<div class="admin-page-head">
|
|
<h2 class="admin-page-title"><%= t("admin.sessions.index.title") %></h2>
|
|
<p class="muted admin-page-sub"><%= t("admin.sessions.index.lead") %></p>
|
|
</div>
|
|
|
|
<div class="panel admin-sessions-filters">
|
|
<%= form_with url: admin_sessions_path, method: :get, local: true, class: "admin-filter-form" do %>
|
|
<div class="admin-filter-grid">
|
|
<label class="admin-filter-field">
|
|
<span><%= t("admin.sessions.index.filters.q") %></span>
|
|
<%= text_field_tag :q, @filters[:q], placeholder: t("admin.sessions.index.filters.q_placeholder") %>
|
|
</label>
|
|
|
|
<label class="admin-filter-field">
|
|
<span><%= t("admin.sessions.index.filters.status") %></span>
|
|
<%= select_tag :status,
|
|
options_for_select(
|
|
[[t("admin.sessions.index.filters.any"), ""]] + StreamSession::STATUSES.map { |s| [s, s] },
|
|
@filters[:status]
|
|
) %>
|
|
</label>
|
|
|
|
<label class="admin-filter-field">
|
|
<span><%= t("admin.sessions.index.filters.platform") %></span>
|
|
<%= select_tag :platform,
|
|
options_for_select(
|
|
[[t("admin.sessions.index.filters.any"), ""]] + StreamSession::PLATFORMS.map { |p| [p, p] },
|
|
@filters[:platform]
|
|
) %>
|
|
</label>
|
|
|
|
<label class="admin-filter-field">
|
|
<span><%= t("admin.sessions.index.filters.club") %></span>
|
|
<%= select_tag :club_id,
|
|
options_for_select(
|
|
[[t("admin.sessions.index.filters.any"), ""]] + @clubs.map { |c| [c.name, c.id] },
|
|
@filters[:club_id]
|
|
) %>
|
|
</label>
|
|
|
|
<label class="admin-filter-field">
|
|
<span><%= t("admin.sessions.index.filters.node") %></span>
|
|
<%= select_tag :stream_node_id,
|
|
options_for_select(
|
|
[[t("admin.sessions.index.filters.any"), ""]] + @nodes.map { |n| ["#{n.slug} (#{n.role})", n.id] },
|
|
@filters[:stream_node_id]
|
|
) %>
|
|
</label>
|
|
|
|
<label class="admin-filter-field">
|
|
<span><%= t("admin.sessions.index.filters.from") %></span>
|
|
<%= date_field_tag :from, @filters[:from] %>
|
|
</label>
|
|
|
|
<label class="admin-filter-field">
|
|
<span><%= t("admin.sessions.index.filters.to") %></span>
|
|
<%= date_field_tag :to, @filters[:to] %>
|
|
</label>
|
|
</div>
|
|
|
|
<div class="admin-filter-actions">
|
|
<%= submit_tag t("admin.sessions.index.filters.apply"), class: "admin-btn admin-btn--primary admin-btn--sm" %>
|
|
<%= link_to t("admin.sessions.index.filters.reset"), admin_sessions_path, class: "admin-btn admin-btn--outline admin-btn--sm" %>
|
|
<span class="muted admin-filter-count">
|
|
<%= t("admin.sessions.index.results", shown: @sessions.size, total: @total_count) %>
|
|
</span>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
|
|
<div class="panel">
|
|
<% if @sessions.any? %>
|
|
<div class="admin-table-wrap">
|
|
<table class="admin-table admin-table--sessions">
|
|
<thead>
|
|
<tr>
|
|
<th><%= t("admin.sessions.index.table.club") %></th>
|
|
<th><%= t("admin.sessions.index.table.match") %></th>
|
|
<th><%= t("admin.sessions.index.table.status") %></th>
|
|
<th><%= t("admin.sessions.index.table.started") %></th>
|
|
<th><%= t("admin.sessions.index.table.ended") %></th>
|
|
<th><%= t("admin.sessions.index.table.duration") %></th>
|
|
<th><%= t("admin.sessions.index.table.ingest") %></th>
|
|
<th><%= t("admin.sessions.index.table.client") %></th>
|
|
<th><%= t("admin.sessions.index.table.disconnects") %></th>
|
|
<th><%= t("admin.sessions.index.table.link") %></th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<% @sessions.each do |s| %>
|
|
<% club = s.match.team.club %>
|
|
<tr>
|
|
<td>
|
|
<% if club %>
|
|
<%= link_to club.name, admin_club_path(club), class: "admin-table-strong" %>
|
|
<% else %>
|
|
<span class="muted"><%= t("admin.common.dash") %></span>
|
|
<% end %>
|
|
</td>
|
|
<td>
|
|
<div class="admin-table-strong"><%= s.match.team.name %> vs <%= s.match.opponent_name %></div>
|
|
<div class="muted admin-table-sub"><%= s.platform %></div>
|
|
</td>
|
|
<td>
|
|
<span class="badge <%= admin_session_status_badge_class(s.status) %>"><%= s.status %></span>
|
|
</td>
|
|
<td class="muted"><%= admin_datetime(s.started_at || s.created_at) %></td>
|
|
<td class="muted"><%= s.ended_at ? admin_datetime(s.ended_at) : t("admin.common.dash") %></td>
|
|
<td class="muted"><%= admin_session_duration_label(s) %></td>
|
|
<td><%= render "admin/sessions/ingest_cell", session: s %></td>
|
|
<td class="muted admin-table-sub"><%= admin_session_client_summary(s) %></td>
|
|
<td><%= s.disconnection_count %></td>
|
|
<td>
|
|
<div class="admin-link-compact">
|
|
<% admin_session_watch_links(s).each do |link| %>
|
|
<%= link_to link[:label], link[:url], target: "_blank", rel: "noopener", class: "admin-link-chip" %>
|
|
<% end %>
|
|
<%= link_to t("admin.sessions.index.regia"), admin_session_path(s), class: "admin-link-chip admin-link-chip--regia" %>
|
|
</div>
|
|
</td>
|
|
<td><%= link_to t("admin.sessions.index.detail"), admin_session_path(s) %></td>
|
|
</tr>
|
|
<% end %>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<% else %>
|
|
<p class="empty"><%= t("admin.sessions.index.none") %></p>
|
|
<% end %>
|
|
</div>
|