Commit b9daad6
Changed files (9)
app
assets
javascripts
controllers
models
views
training_sessions
app/assets/javascripts/templates/exercise_view.ractive
@@ -1,3 +1,4 @@
+<!--
<div class="panel small-12 columns">
<div class="row">
<div class="small-6 columns">
@@ -18,3 +19,4 @@
</div>
</div>
</div>
+-->
app/assets/javascripts/templates/training_session_view.ractive
@@ -12,7 +12,7 @@
<div class="row">
<div class="small-12 columns">
<p class="text-center">
- {{#each reps}}
+ {{#each sets}}
<button on-click="updateProgress" class="button small round {{status}}">
{{completed}}
</button>
app/assets/javascripts/views/exercise_view.js.coffee
@@ -2,9 +2,5 @@
class Stronglifters.ExerciseView extends Ractive
template: RactiveTemplates["templates/exercise_view"]
data:
- name: ''
- sets: 5
- repeitions: 5
- target_weight: 100
- reps: [ ]
+ workout_name: ''
app/assets/javascripts/views/training_session_view.js.coffee
@@ -4,11 +4,12 @@ class Stronglifters.TrainingSessionView extends Ractive
oninit: ->
@on 'updateProgress', (event) -> @updateProgress(event)
@on 'completeExercise', (event) -> @completeExercise(event.context)
- @observe 'training_session.exercises.*.reps.*', (newValue, oldValue, keypath) ->
+ @observe 'training_session.exercises.*.sets.*', (newValue, oldValue, keypath) ->
@refreshStatus(newValue, oldValue, keypath)
updateProgress: (event) ->
- if @get("#{event.keypath}.completed") == 0
+ completed = @get("#{event.keypath}.completed")
+ if completed == null || completed == 0
@set("#{event.keypath}.completed", @get("#{event.keypath}.target"))
else
@subtract("#{event.keypath}.completed")
@@ -27,9 +28,10 @@ class Stronglifters.TrainingSessionView extends Ractive
payload =
training_session:
exercise_id: exercise.id
- weight: exercise.target_weight
- sets: _.map exercise.reps, (rep) ->
- rep.completed
+ sets: _.map exercise.sets, (set) ->
+ completed: set.completed
+ weight: exercise.target_weight
+ console.log(payload)
$.ajax
url: "/training_sessions/#{@get('training_session.id')}",
app/controllers/training_sessions_controller.rb
@@ -14,21 +14,23 @@ class TrainingSessionsController < ApplicationController
@workout = current_user.next_workout
@training_session = current_user.training_sessions.build(workout: @workout)
@workout.exercise_workouts.each do |exercise|
- @training_session.exercise_sessions.build(
- exercise_workout: exercise,
- #target_sets: exercise.sets,
- #target_repetitions: exercise.repetitions,
- #target_weight: current_user.next_weight_for(exercise.exercise)
- )
+ exercise_session = @training_session.exercise_sessions.build(exercise_workout: exercise)
+ exercise.sets.times do
+ exercise_session.exercise_sets.build(
+ target_repetitions: exercise.repetitions,
+ target_weight: current_user.next_weight_for(exercise.exercise)
+ )
+ end
end
end
def create
secure_params = params.require(:training_session).permit(:workout_id, :body_weight, exercise_sessions_attributes: [
:exercise_workout_id,
- #:target_repetitions,
- #:target_sets,
- #:target_weight,
+ exercise_sets_attributes: [
+ :target_repetitions,
+ :target_weight,
+ ]
])
workout = Workout.find(secure_params[:workout_id])
training_session = current_user.begin_workout(
@@ -45,13 +47,18 @@ class TrainingSessionsController < ApplicationController
end
def update
- secure_params = params.require(:training_session).permit(:exercise_id, :weight, sets: [])
+ #render json: params and return
+ secure_params = params.require(:training_session).permit(:exercise_id, :weight, sets: [
+ :weight,
+ :completed
+ ])
@training_session = current_user.training_sessions.find(params[:id])
- secure_params[:sets].each do |reps|
+ secure_params[:sets].each_with_index do |set, index|
@training_session.train(
Exercise.find(secure_params[:exercise_id]),
- secure_params[:weight],
- repetitions: reps,
+ set[:weight],
+ repetitions: set[:completed],
+ set: index
)
end
end
app/models/exercise_session.rb
@@ -4,6 +4,7 @@ class ExerciseSession < ActiveRecord::Base
has_one :exercise, through: :exercise_workout
has_many :exercise_sets, dependent: :destroy
delegate :name, to: :exercise
+ accepts_nested_attributes_for :exercise_sets
def sets
exercise_sets
app/views/training_sessions/_training_session.jbuilder
@@ -4,7 +4,7 @@ json.workout_name training_session.workout.name
json.exercises training_session.exercise_sessions.order(:created_at) do |exercise|
json.id exercise.exercise.id
json.name exercise.name
- json.reps exercise.sets do |set|
+ json.sets exercise.sets.order(:created_at) do |set|
json.weight set.target_weight
json.target set.target_repetitions
json.completed set.actual_repetitions
app/views/training_sessions/edit.html.erb
@@ -1,5 +1,6 @@
<div class="row">
<div class="large-12 columns">
+<% render partial: 'edit.json.jbuilder', locals: { training_session: @training_session } %>;
<div id="training-session-view"></div>
<%= link_to t(:back_html), training_sessions_path %>
</div>
app/views/training_sessions/new.html.erb
@@ -5,19 +5,32 @@
<legend><%= TrainingSession.human_attribute_name(:body_weight) %></legend>
<%= f.number_field :body_weight %>
</fieldset>
- <%= f.fields_for :exercise_sessions do |e| %>
+ <% @training_session.exercise_sessions.each do |exercise_session| %>
+ <%= f.fields_for :exercise_sessions, exercise_session do |e| %>
<fieldset>
<legend><%= e.object.exercise.name %></legend>
- <%= e.label :target_sets %>
- <%= e.number_field :target_sets %>
+ <% exercise_session.exercise_sets.each.with_index(1) do |set, index| %>
+ <%= e.fields_for :exercise_sets, set do |s| %>
+ <fieldset>
+ <legend>Set <%= index %></legend>
+ <div class="row">
+ <div class="small-6 columns">
+ <%= s.label :target_repetitions %>
+ <%= s.number_field :target_repetitions %>
+ </div>
- <%= e.label :target_repetitions %>
- <%= e.number_field :target_repetitions %>
+ <div class="small-6 columns">
+ <%= s.label :target_weight %>
+ <%= s.number_field :target_weight %>
+ </div>
+ </div>
+ </fieldset>
+ <% end %>
+ <% end %>
- <%= e.label :target_weight %>
- <%= e.number_field :target_weight %>
<%= e.hidden_field :exercise_workout_id %>
</fieldset>
+ <% end %>
<% end %>
<%= f.hidden_field :workout_id %>
<%= f.submit "Start", class: "button round right" %>