1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-04-10 07:48:29 +00:00

Fixed a number of N+1 issues on low traffic pages. I also added relevant html tests for these pages.

This commit is contained in:
2026-02-17 22:27:11 -05:00
parent d359be3ea1
commit 8670ce38c3
16 changed files with 330 additions and 103 deletions

View File

@@ -95,8 +95,6 @@ table.smallText tr td { font-size: 10px; }
<table class='smallText'>
<tr>
<td valign="top" style="padding: 10px;">
<% @matches = @tournament.matches.select{|m| m.weight_id == @weight.id} %>
<% @wrestlers = Wrestler.where(weight_id: @weight.id) %>
<% @pools = @weight.pool_rounds(@matches) %>
<%= render 'pool' %>
</td>

View File

@@ -119,16 +119,17 @@
<% @weights.sort_by{|w| w.max}.each do |weight| %>
<% if @tournament.tournament_type == "Pool to bracket" %>
<!-- Need to define what the tournaments#bracket controller defines -->
<% @matches = @tournament.matches.select{|m| m.weight_id == weight.id} %>
<% @wrestlers = Wrestler.where(weight_id: weight.id) %>
<% @matches = @matches_by_weight_id[weight.id] || [] %>
<% @wrestlers = @wrestlers_by_weight_id[weight.id] || [] %>
<% @pools = weight.pool_rounds(@matches) %>
<% @weight = weight %>
<%= render 'bracket_partial' %>
<% elsif @tournament.tournament_type.include? "Modified 16 Man Double Elimination" or @tournament.tournament_type.include? "Regular Double Elimination" %>
<!-- Need to define what the tournaments#bracket controller defines -->
<% @matches = weight.matches %>
<% @matches = @matches_by_weight_id[weight.id] || [] %>
<% @wrestlers = @wrestlers_by_weight_id[weight.id] || [] %>
<% @weight = weight %>
<%= render 'bracket_partial' %>
<% end %>
<% end %>
<% end %>
<% end %>

View File

@@ -54,28 +54,28 @@
}
</style>
<% @matches.each do |match| %>
<% if match.w1 && match.w2 %>
<% w1 = Wrestler.find(match.w1) %>
<% w2 = Wrestler.find(match.w2) %>
<% end %>
<div class="pagebreak">
<p><strong>Bout Number:</strong> <%= match.bout_number %> <strong>Weight Class:</strong> <%= match.weight.max %> <strong>Round:</strong> <%= match.round %> <strong>Bracket Position:</strong> <%= match.bracket_position %></p>
<p><strong>Key: </strong>Takedown: T3, Escape: E1, Reversal: R2, Nearfall: N2 or N3 or N4, Stalling: S, Caution: C, Penalty Point: P1</p>
<% @matches.each do |match| %>
<% w1 = @wrestlers_by_id[match.w1] %>
<% w2 = @wrestlers_by_id[match.w2] %>
<% w1_name = w1&.name || match.loser1_name %>
<% w2_name = w2&.name || match.loser2_name %>
<div class="pagebreak">
<p><strong>Bout Number:</strong> <%= match.bout_number %> <strong>Weight Class:</strong> <%= match.weight.max %> <strong>Round:</strong> <%= match.round %> <strong>Bracket Position:</strong> <%= match.bracket_position %></p>
<p><strong>Key: </strong>Takedown: T3, Escape: E1, Reversal: R2, Nearfall: N2 or N3 or N4, Stalling: S, Caution: C, Penalty Point: P1</p>
<table>
<thead>
<tr class="small-row">
<th class="fixed-width">Circle Winner</th>
<th>
<p><%= match.w1_name %>-<%= w1&.school&.name %></p>
</th>
<th>
<p><%= match.w2_name %>-<%= w2&.school&.name %></p>
</th>
</tr>
</thead>
<th class="fixed-width">Circle Winner</th>
<th>
<p><%= w1_name %>-<%= w1&.school&.name %></p>
</th>
<th>
<p><%= w2_name %>-<%= w2&.school&.name %></p>
</th>
</tr>
</thead>
<tbody>
<tr class="small-row">
<td class="fixed-width"></td>

View File

@@ -1,6 +1,12 @@
{
"tournament": {
"attributes": <%= @tournament.attributes.to_json %>,
<%
wrestlers_by_id = @tournament.wrestlers.index_by(&:id)
weights_by_id = @tournament.weights.index_by(&:id)
mats_by_id = @tournament.mats.index_by(&:id)
sorted_matches = @tournament.matches.sort_by(&:bout_number)
%>
{
"tournament": {
"attributes": <%= @tournament.attributes.to_json %>,
"schools": <%= @tournament.schools.map(&:attributes).to_json %>,
"weights": <%= @tournament.weights.map(&:attributes).to_json %>,
"mats": <%= @tournament.mats.map { |mat| mat.attributes.merge(
@@ -14,14 +20,14 @@
"weight": wrestler.weight&.attributes
}
) }.to_json %>,
"matches": <%= @tournament.matches.sort_by(&:bout_number).map { |match| match.attributes.merge(
{
"w1_name": Wrestler.find_by(id: match.w1)&.name,
"w2_name": Wrestler.find_by(id: match.w2)&.name,
"winner_name": Wrestler.find_by(id: match.winner_id)&.name,
"weight": Weight.find_by(id: match.weight_id)&.attributes,
"mat": Mat.find_by(id: match.mat_id)&.attributes
}
) }.to_json %>
}
"matches": <%= sorted_matches.map { |match| match.attributes.merge(
{
"w1_name": wrestlers_by_id[match.w1]&.name,
"w2_name": wrestlers_by_id[match.w2]&.name,
"winner_name": wrestlers_by_id[match.winner_id]&.name,
"weight": weights_by_id[match.weight_id]&.attributes,
"mat": mats_by_id[match.mat_id]&.attributes
}
) }.to_json %>
}
}

View File

@@ -12,9 +12,10 @@
height: 1in;
}
</style>
<% @tournament.schools.each do |school| %>
<% @schools.each do |school| %>
<table class="table table-striped table-bordered table-condensed pagebreak">
<h5><%= school.name %></h4>
<p><strong>Weigh In Ref:</strong> <%= @tournament.weigh_in_ref %></p>
<thead>
<tr>
<th>Name</th>
@@ -27,9 +28,9 @@
<tr>
<td><%= wrestler.name %></td>
<td><%= wrestler.weight.max %></td>
<td></td>
<td><%= wrestler.offical_weight %></td>
</tr>
<% end %>
</tbody>
</table>
<% end %>
<% end %>

View File

@@ -1,4 +1,4 @@
<table class="table table-striped table-bordered">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Name</th>
@@ -9,19 +9,19 @@
</tr>
</thead>
<tbody>
<%= form_tag @wrestlers_update_path do %>
<% @wrestlers.order("original_seed asc").each do |wrestler| %>
<% if wrestler.weight_id == @weight.id %>
<tr>
<%= form_tag "/tournaments/#{@tournament.id}/weigh_in/#{@weight.id}", method: :post do %>
<% @wrestlers.order("original_seed asc").each do |wrestler| %>
<% if wrestler.weight_id == @weight.id %>
<tr>
<td><%= wrestler.name %></td>
<td><%= wrestler.school.name %></td>
<td><%= wrestler.original_seed %></td>
<td><%= wrestler.weight.max %></td>
<td>
<% if user_signed_in? %>
<%= fields_for "wrestler[]", wrestler do |w| %>
<%= w.number_field :offical_weight, :step => 'any' %>
<% end %>
<% if user_signed_in? %>
<%= fields_for "wrestler[#{wrestler.id}]", wrestler do |w| %>
<%= w.number_field :offical_weight, :step => 'any' %>
<% end %>
<% else %>
<%= wrestler.offical_weight %>
<% end %>