Commit 281f834
Changed files (5)
app
assets
javascripts
app/assets/javascripts/templates/workout_view.ractive
@@ -1,12 +1,33 @@
+{{#if clock}}
+ <div data-alert="" class="alert-box {{alertStatus}}">
+ <p> {{message}} </p>
+ <p> Rest Clock: {{clock}} </p>
+ </div>
+{{/if}}
+
<ul class="accordion" data-accordion>
{{#each workout.exercises}}
<li class="accordion-navigation">
<a href="#panel-{{id}}">{{name}}</a>
<div id="panel-{{id}}" class="content">
{{#each sets}}
- <button on-click="updateProgress" class="button expand {{status}}">
- {{actual_repetitions}} x {{target_repetitions}} @ {{target_weight}} lbs
- </button>
+ <div class="row">
+ <div class="columns small-3">
+ <button on-click="updateProgress" class="button round {{status}}">
+ {{actual_repetitions}}
+ </button>
+ </div>
+ <div class="columns small-5">
+ <p class="text-center">
+ {{target_repetitions}} x {{target_weight}} lbs
+ </p>
+ </div>
+ <div class="columns small-4">
+ <p class="text-center">
+ 110 lb/side
+ </p>
+ </div>
+ </div>
{{/each}}
</div>
</li>
app/assets/javascripts/views/workout_view.js.coffee
@@ -5,8 +5,10 @@ class Stronglifters.WorkoutView extends Ractive
@on 'updateProgress', (event) -> @updateProgress(event)
@observe 'workout.exercises.*.sets.*', (newValue, oldValue, keypath) ->
@refreshStatus(newValue, oldValue, keypath)
+ @set('message', "Let's do this!")
updateProgress: (event) ->
+ @stopTimer()
completed = @get("#{event.keypath}.actual_repetitions")
if completed == null || completed == 0
@set("#{event.keypath}.actual_repetitions", @get("#{event.keypath}.target_repetitions"))
@@ -14,6 +16,25 @@ class Stronglifters.WorkoutView extends Ractive
@subtract("#{event.keypath}.actual_repetitions")
@saveSet(@get(event.keypath))
+ if @successful(event.keypath)
+ @set('message', "If it was easy break for 1:30, otherwise rest for 3:00.")
+ @set('alertStatus', 'radius')
+ else
+ @set('alertStatus', 'alert')
+ @set('message', "Take a 5:00 break.")
+ @startTimer()
+
+ startTimer: ->
+ @set('timer', 0)
+ @intervalId = setInterval @refreshTimer, 1000
+
+ refreshTimer: =>
+ @add('timer', 1000)
+ @set('clock', moment.utc(@get('timer')).format('mm:ss'))
+
+ stopTimer: =>
+ clearTimeout @intervalId
+
saveSet: (set) ->
@patch "/sets/#{set.id}",
set:
@@ -31,12 +52,15 @@ class Stronglifters.WorkoutView extends Ractive
error: (xhr, status, error) ->
console.log(error)
+ successful: (keypath) ->
+ @get("#{keypath}.target_repetitions") == @get("#{keypath}.actual_repetitions")
+
refreshStatus: (newValue, oldValue, keypath) ->
if @get("#{keypath}.actual_repetitions") == null
@set("#{keypath}.status", "secondary")
return
- if @get("#{keypath}.target_repetitions") == @get("#{keypath}.actual_repetitions")
+ if @successful(keypath)
@set("#{keypath}.status", "success")
else
@set("#{keypath}.status", "alert")
app/assets/javascripts/application.js
@@ -12,6 +12,7 @@
//
//= require clipboard
//= require lodash
+//= require moment
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
Gemfile
@@ -74,6 +74,7 @@ source "https://rails-assets.org" do
gem "rails-assets-backbone"
gem "rails-assets-clipboard"
gem "rails-assets-lodash"
+ gem "rails-assets-moment"
gem "rails-assets-ractive"
gem "rails-assets-ractive-backbone"
end
Gemfile.lock
@@ -280,6 +280,7 @@ GEM
rails-assets-underscore (>= 1.8.3)
rails-assets-clipboard (1.5.10)
rails-assets-lodash (4.13.1)
+ rails-assets-moment (2.13.0)
rails-assets-ractive (0.7.3)
rails-assets-ractive-backbone (0.3.0)
rails-assets-underscore (1.8.3)
@@ -485,6 +486,7 @@ DEPENDENCIES
rails-assets-backbone!
rails-assets-clipboard!
rails-assets-lodash!
+ rails-assets-moment!
rails-assets-ractive!
rails-assets-ractive-backbone!
rails-erd!