Commit 7347c01
Changed files (6)
app
controllers
views
training_sessions
app/controllers/training_sessions_controller.rb
@@ -12,17 +12,18 @@ class TrainingSessionsController < ApplicationController
def new
@workout = current_user.next_workout
+ @training_session = current_user.training_sessions.build(workout: @workout)
end
def create
secure_params = params.require(:training_session).permit(:workout_id, :body_weight)
workout = Workout.find(secure_params[:workout_id])
- @training_session = current_user.begin_workout(
+ training_session = current_user.begin_workout(
workout,
DateTime.now,
secure_params[:body_weight]
)
- render nothing: true
+ redirect_to edit_training_session_path(training_session)
end
def edit
app/models/exercise_workout.rb
@@ -1,4 +1,5 @@
class ExerciseWorkout < ActiveRecord::Base
belongs_to :exercise
belongs_to :workout
+ delegate :name, to: :exercise
end
app/models/training_history.rb
@@ -22,6 +22,16 @@ class TrainingHistory
any?
end
+ def next_weight
+ user.
+ exercise_sessions.
+ joins(:exercise).
+ joins(:training_session).
+ where(exercises: { id: exercise.id }).
+ order('training_sessions.occurred_at').
+ last.target_weight + 5
+ end
+
def to_line_chart
user.
exercise_sessions.
app/models/user.rb
@@ -59,6 +59,10 @@ class User < ActiveRecord::Base
TrainingHistory.new(self, exercise)
end
+ def next_weight_for(exercise)
+ history_for(exercise).next_weight
+ end
+
def begin_workout(workout, date, body_weight)
matching_workouts = training_sessions.where(occurred_at: date)
if matching_workouts.any?
app/views/training_sessions/edit.html.erb
@@ -0,0 +1,14 @@
+<div class="row">
+ <div class="large-12 columns">
+ <div id="training-session-view">
+ </div>
+ </div>
+</div>
+
+
+<script type="text/javascript" charset="utf-8">
+new Stronglifters.TrainingSessionView({
+ el: 'training-session-view',
+ data: { }
+})
+</script>
app/views/training_sessions/new.html.erb
@@ -1,14 +1,28 @@
-<div class="row">
- <div class="large-12 columns">
- <div id="training-session-view">
+<% @workout.exercise_workouts.each do |exercise| %>
+ <div class="row">
+ <div class="panel small-12 columns">
+ <div class="row">
+ <div class="small-6 columns">
+ <%= exercise.name %>
+ </div>
+ <div class="small-6 columns">
+ <%= exercise.sets %>x<%= exercise.repetitions %>
+ <%= current_user.next_weight_for(exercise.exercise) %>lb
+ </div>
+ </div>
</div>
</div>
-</div>
-
+<% end %>
-<script type="text/javascript" charset="utf-8">
-new Stronglifters.TrainingSessionView({
- el: 'training-session-view',
- data: { }
-})
-</script>
+<div class="row">
+ <div class="small-12 columns">
+ <%= form_for @training_session do |f| %>
+ <fieldset>
+ <legend><%= TrainingSession.human_attribute_name(:body_weight) %></legend>
+ <%= f.number_field :body_weight %>
+ </fieldset>
+ <%= f.hidden_field :workout_id %>
+ <%= f.submit "Start", class: "button round right" %>
+ <% end %>
+ </div>
+</div>