Commit 9c79f5e
Changed files (8)
app
assets
javascripts
templates
views
training_sessions
app/assets/javascripts/templates/training_session_view.ractive
@@ -1,17 +1,7 @@
<div class="row">
{{#each training_session.exercises}}
<div class="panel small-12 columns">
- <div class="row">
- <div class="small-6 columns">
- {{name}}
- </div>
- <div class="small-6 columns">
- <p class="text-right">
- {{sets}}x{{repetitions}} {{target_weight}}lb
- </p>
- </div>
- </div>
-
+ {{name}}
{{#if completed}}
<div class="row">
<div class="small-12 columns">
@@ -23,7 +13,10 @@
<div class="small-12 columns">
<p class="text-center">
{{#each reps}}
- <button on-click="updateProgress" class="button small round {{status}}">{{completed}}</button>
+ <button on-click="updateProgress" class="button small round {{status}}">
+ {{completed}}
+ </button>
+ @ {{weight}} lb
{{/each}}
</p>
</div>
app/models/exercise_session.rb
@@ -2,4 +2,10 @@ class ExerciseSession < ActiveRecord::Base
belongs_to :training_session
belongs_to :exercise_workout
has_one :exercise, through: :exercise_workout
+ has_many :exercise_sets, dependent: :destroy
+ delegate :name, to: :exercise
+
+ def sets
+ exercise_sets
+ end
end
app/models/exercise_set.rb
@@ -0,0 +1,3 @@
+class ExerciseSet < ActiveRecord::Base
+ belongs_to :exercise_session
+end
app/models/training_session.rb
@@ -2,7 +2,7 @@ class TrainingSession < ActiveRecord::Base
belongs_to :user
belongs_to :workout
has_one :program, through: :workout
- has_many :exercise_sessions, dependent: :destroy
+ has_many :exercise_sessions, -> { order(:created_at) }, dependent: :destroy
has_many :exercises, through: :exercise_sessions
accepts_nested_attributes_for :exercise_sessions
app/views/training_sessions/_training_session.jbuilder
@@ -1,14 +1,13 @@
json.id training_session.id
json.body_weight training_session.body_weight
json.workout_name training_session.workout.name
-json.exercises training_session.workout.exercise_workouts do |exercise|
+json.exercises training_session.exercise_sessions do |exercise|
json.id exercise.exercise.id
json.name exercise.name
- json.sets exercise.sets
- json.repetitions exercise.repetitions
- json.reps training_session.progress_for(exercise.exercise).try(:sets) || exercise.sets.times.map { |x| 0 } do |completed_reps|
- json.target exercise.repetitions
- json.completed completed_reps.to_i
+ json.reps exercise.sets do |set|
+ json.weight set.target_weight
+ json.target set.target_repetitions
+ json.completed set.actual_repetitions
end
json.target_weight current_user.next_weight_for(exercise.exercise)
end
db/migrate/20160611165128_create_exercise_sets.rb
@@ -0,0 +1,12 @@
+class CreateExerciseSets < ActiveRecord::Migration
+ def change
+ create_table :exercise_sets, id: :uuid do |t|
+ t.uuid :exercise_session_id, null: false
+ t.integer :target_repetitions
+ t.integer :actual_repetitions
+ t.float :target_weight
+
+ t.timestamps null: false
+ end
+ end
+end
db/migrate/20160611165543_migrate_to_exercise_sets.rb
@@ -0,0 +1,19 @@
+class MigrateToExerciseSets < ActiveRecord::Migration
+ def up
+ ExerciseSession.find_each do |exercise_session|
+ target_reps = exercise_session.exercise_workout.repetitions
+ exercise_session.actual_sets.each do |n|
+ say "Creating set for: #{exercise_session.name}: set: #{n}"
+ exercise_session.exercise_sets.create!(
+ actual_repetitions: n,
+ target_repetitions: target_reps,
+ target_weight: exercise_session.target_weight,
+ )
+ end
+ end
+ end
+
+ def down
+ ExerciseSet.delete_all
+ end
+end
db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20160611152357) do
+ActiveRecord::Schema.define(version: 20160611165543) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -28,6 +28,15 @@ ActiveRecord::Schema.define(version: 20160611152357) do
t.integer "target_repetitions", default: 5, null: false
end
+ create_table "exercise_sets", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
+ t.uuid "exercise_session_id", null: false
+ t.integer "target_repetitions"
+ t.integer "actual_repetitions"
+ t.float "target_weight"
+ t.datetime "created_at", null: false
+ t.datetime "updated_at", null: false
+ end
+
create_table "exercise_workouts", id: :uuid, default: "uuid_generate_v4()", force: :cascade do |t|
t.uuid "exercise_id", null: false
t.uuid "workout_id", null: false