Commit 1475d22
Changed files (9)
app
assets
javascripts
controllers
views
app/assets/javascripts/models/repository.js.coffee
@@ -0,0 +1,12 @@
+class Stronglifters.Repository
+ patch: (url, payload) ->
+ $.ajax
+ url: url,
+ dataType: 'json',
+ type: 'patch',
+ contentType: 'application/json',
+ data: JSON.stringify(payload),
+ success: (data, statux, xhr) ->
+ console.log("Saved: #{data}")
+ error: (xhr, status, error) ->
+ console.log(error)
app/assets/javascripts/models/set.js.coffee
@@ -0,0 +1,2 @@
+class Stronglifters.Set extends Backbone.Model
+ urlRoot: '/sets'
app/assets/javascripts/models/timer.js.coffee
@@ -0,0 +1,22 @@
+class Stronglifters.Timer
+ @ONE_SECOND=1000
+ constructor: (view) ->
+ @view = view
+
+ start: ->
+ @stop()
+
+ @view.set('timer', 0)
+ @intervalId = setInterval @refreshTimer, @ONE_SECOND
+
+ refreshTimer: =>
+ @view.add('timer', @ONE_SECOND)
+ @view.set('clock', moment.utc(@view.get('timer')).format('mm:ss'))
+
+ stop: =>
+ if @running()
+ clearTimeout @intervalId
+ @intervalId = null
+
+ running: ->
+ @intervalId?
app/assets/javascripts/views/workout_view.js.coffee
@@ -1,3 +1,5 @@
+#= require models/timer
+#= require models/set
class Stronglifters.WorkoutView extends Ractive
template: RactiveTemplates["templates/workout_view"]
@@ -6,9 +8,9 @@ class Stronglifters.WorkoutView extends Ractive
@observe 'workout.exercises.*.sets.*', (newValue, oldValue, keypath) ->
@refreshStatus(newValue, oldValue, keypath)
@set('message', "Let's do this!")
+ @clock = new Stronglifters.Timer(@)
updateProgress: (event) ->
- @stopTimer()
completed = @get("#{event.keypath}.actual_repetitions")
if completed == null || completed == 0
@set("#{event.keypath}.actual_repetitions", @get("#{event.keypath}.target_repetitions"))
@@ -22,35 +24,11 @@ class Stronglifters.WorkoutView extends Ractive
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
+ @clock.start()
saveSet: (set) ->
- @patch "/sets/#{set.id}",
- set:
- actual_repetitions: set.actual_repetitions
-
- patch: (url, payload) ->
- $.ajax
- url: url,
- dataType: 'json',
- type: 'patch',
- contentType: 'application/json',
- data: JSON.stringify(payload),
- success: (data, statux, xhr) ->
- console.log("Saved: #{data}")
- error: (xhr, status, error) ->
- console.log(error)
+ model = new Stronglifters.Set(set)
+ model.save
successful: (keypath) ->
@get("#{keypath}.target_repetitions") == @get("#{keypath}.actual_repetitions")
app/controllers/sets_controller.rb
@@ -1,8 +1,7 @@
class SetsController < ApplicationController
def update
- set = current_user.sets.find(params[:id])
- set.update!(secure_params)
- render json: {}
+ @set = current_user.sets.find(params[:id])
+ @set.update!(secure_params)
end
private
app/views/sets/_set.jbuilder
@@ -0,0 +1,4 @@
+json.id set.id
+json.target_weight set.target_weight
+json.target_repetitions set.target_repetitions
+json.actual_repetitions set.actual_repetitions
app/views/sets/update.json.jbuilder
@@ -0,0 +1,1 @@
+json.partial! 'set', set: @set
app/views/workouts/_workout.jbuilder
@@ -5,9 +5,6 @@ json.exercises workout.sets.order(:created_at).group_by(&:exercise) do |exercise
json.id exercise.id
json.name exercise.name
json.sets sets.sort_by(&:created_at) do |set|
- json.id set.id
- json.target_weight set.target_weight
- json.target_repetitions set.target_repetitions
- json.actual_repetitions set.actual_repetitions
+ json.partial! 'sets/set', set: set
end
end
app/views/workouts/update.json.jbuilder
@@ -1,3 +0,0 @@
-json.workout do
- json.partial! 'workout', workout: @workout
-end