Commit 7347c01

mo khan <mo@mokhan.ca>
2016-06-05 00:08:16
start a new workout.
1 parent e310031
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>