Commit 6be51ee
Changed files (6)
app
controllers
views
profiles
workouts
app/controllers/profiles_controller.rb
@@ -3,6 +3,9 @@ class ProfilesController < ApplicationController
@user = User.find_by(username: params[:id])
@profile = @user.profile
@program = Program.stronglifts
+ @training_histories = @program.exercises.where(id: Exercise.primary).uniq.order(name: :asc).map do |exercise|
+ @user.history_for(exercise)
+ end
end
def edit
app/models/exercise.rb
@@ -1,4 +1,8 @@
class Exercise < ApplicationRecord
+ PRIMARY_LIFTS=["Squat", "Bench Press", "Barbell Row", "Overhead Press", "Deadlift"]
+
+ scope :primary, ->() { where(name: PRIMARY_LIFTS).order(name: :desc) }
+
def short_name
name.gsub(/[^A-Z]/, "")
end
app/models/program.rb
@@ -12,12 +12,6 @@ class Program < ApplicationRecord
slug
end
- def each_exercise(exercise_names: [])
- exercises.where(name: exercise_names).order(name: :asc).uniq.each do |exercise|
- yield exercise
- end
- end
-
def next_routine_after(routine)
routines.where.not(name: routine.name).first
end
app/models/training_history.rb
@@ -41,7 +41,7 @@ class TrainingHistory
end
def to_line_chart
- user.workouts.inject({}) do |memo, workout|
+ user.workouts.includes(:exercise_sets).inject({}) do |memo, workout|
memo[workout.occurred_at] =
workout.sets.for(exercise).maximum(:target_weight)
memo
app/views/profiles/show.html.erb
@@ -1,4 +1,3 @@
-<% names = ["Squat", "Bench Press", "Barbell Row", "Overhead Press", "Deadlift"] %>
<div class="container">
<div class="columns">
<div class="column is-6 is-offset-3 content">
@@ -23,11 +22,11 @@
<div class="columns">
<div class="column is-8 is-offset-2">
<div class="level">
- <% @program.each_exercise(exercise_names: names) do |exercise| %>
- <% personal_record = @user.personal_record_for(exercise) %>
+ <% @training_histories.each do |history| %>
+ <% personal_record = history.personal_record %>
<div class="level-item has-text-centered">
<div>
- <p class="heading"><%= exercise.name %></p>
+ <p class="heading"><%= history.exercise.name %></p>
<p class="title"><%= personal_record ? "#{personal_record} lbs" : t('.not_available') %></p>
</div>
</div>
@@ -38,9 +37,7 @@
<div class="columns">
<div class="column is-12 content">
- <% @program.each_exercise(exercise_names: names) do |exercise| %>
- <%= render @user.history_for(exercise) %>
- <% end %>
+ <%= render @training_histories %>
</div>
</div>
</div>
app/views/workouts/index.html.erb
@@ -2,13 +2,12 @@
<div class="container">
<div class="columns">
<div class="column is-12">
- <% exercises = ["Squat", "Bench Press", "Barbell Row", "Overhead Press", "Deadlift"] %>
<div class="tabs">
<ul>
<li class="<%= 'is-active' if @exercise.nil? %>">
<%= link_to 'All', workouts_path %>
</li>
- <% exercises.each do |name| %>
+ <% Exercise::PRIMARY_LIFTS.each do |name| %>
<li class="<%= 'is-active' if name == @exercise.try(:name) %>">
<%= link_to name, workouts_path(exercise: name) %>
</li>
@@ -24,7 +23,7 @@
<% if @exercise.present? %>
<th><abbr title="<%= @exercise.name %>"></abbr><%= @exercise.name %></th>
<% else %>
- <% exercises.each do |exercise_name| %>
+ <% Exercise::PRIMARY_LIFTS.each do |exercise_name| %>
<th><abbr title="<%= exercise_name %>"></abbr><%= exercise_name %></th>
<% end %>
<% end %>
@@ -42,11 +41,8 @@
<%= progress.status %>
</td>
<% else %>
- <% exercises.each do |exercise_name| %>
- <td>
- <% progress = workout.progress_for(Exercise.find_by(name: exercise_name)) %>
- <%= progress.status %>
- </td>
+ <% Exercise.primary.find_each do |exercise| %>
+ <td> <%= workout.progress_for(exercise).status %> </td>
<% end %>
<% end %>
</tr>