summaryrefslogtreecommitdiff
path: root/app/assets/javascripts
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2017-03-11 19:33:25 -0700
committermo khan <mo@mokhan.ca>2017-03-11 19:33:25 -0700
commit2522f4e3efb0092b64f30396efcf25f37ba866fa (patch)
treeab535d918f1077bb37786db205db5d5357bfec7f /app/assets/javascripts
parent93e0de131db5370d47a05fd32517b2147c787647 (diff)
connect the backbone automodel.
Diffstat (limited to 'app/assets/javascripts')
-rw-r--r--app/assets/javascripts/lib/auto_model.js.coffee10
-rw-r--r--app/assets/javascripts/lib/autoview.js.coffee10
-rw-r--r--app/assets/javascripts/lib/behaviours/autoview_setup.js.coffee (renamed from app/assets/javascripts/lib/behaviours/autoview.js.coffee)2
-rw-r--r--app/assets/javascripts/models/set.js.coffee3
-rw-r--r--app/assets/javascripts/views/workouts/edit.js.coffee34
5 files changed, 57 insertions, 2 deletions
diff --git a/app/assets/javascripts/lib/auto_model.js.coffee b/app/assets/javascripts/lib/auto_model.js.coffee
new file mode 100644
index 0000000..af4eb23
--- /dev/null
+++ b/app/assets/javascripts/lib/auto_model.js.coffee
@@ -0,0 +1,10 @@
+class Stronglifters.AutoModel extends Backbone.Model
+ @factories: {}
+ @modelName: (name) ->
+ @factories[name] = this
+
+ @createModel: (name, attributes) ->
+ if (factory = @factories[name])
+ new factory(attributes || {})
+ else
+ new Backbone.Model(attributes || {})
diff --git a/app/assets/javascripts/lib/autoview.js.coffee b/app/assets/javascripts/lib/autoview.js.coffee
index 91c79f6..7a70863 100644
--- a/app/assets/javascripts/lib/autoview.js.coffee
+++ b/app/assets/javascripts/lib/autoview.js.coffee
@@ -21,7 +21,17 @@ class Stronglifters.Autoview extends Backbone.View
@install: (element) ->
$element = $(element)
name = $element.data("autoview-name")
+
view = new @constructors[name]
el: element
$el: $element
+ model: @createModel($element.data('model'), $element.data('model-attributes'))
view.render()
+ @views[name] ?= []
+ @views[name].push(view)
+
+ @createModel: (name, attributes) ->
+ Stronglifters.AutoModel.createModel(name, attributes)
+
+ render: ->
+ console.log(@$el.html())
diff --git a/app/assets/javascripts/lib/behaviours/autoview.js.coffee b/app/assets/javascripts/lib/behaviours/autoview_setup.js.coffee
index 3f031de..f2546f6 100644
--- a/app/assets/javascripts/lib/behaviours/autoview.js.coffee
+++ b/app/assets/javascripts/lib/behaviours/autoview_setup.js.coffee
@@ -1,4 +1,4 @@
-class Autoview extends Stronglifters.Behaviour
+class Stronglifters.AutoviewSetup extends Stronglifters.Behaviour
@on "turbolinks:load"
execute: ->
diff --git a/app/assets/javascripts/models/set.js.coffee b/app/assets/javascripts/models/set.js.coffee
index 8cea7d4..1fc7b71 100644
--- a/app/assets/javascripts/models/set.js.coffee
+++ b/app/assets/javascripts/models/set.js.coffee
@@ -1,4 +1,5 @@
-class Stronglifters.Set extends Backbone.Model
+class Stronglifters.Set extends Stronglifters.AutoModel
+ @modelName "set"
urlRoot: '/sets'
started: ->
completed = @get("actual_repetitions")
diff --git a/app/assets/javascripts/views/workouts/edit.js.coffee b/app/assets/javascripts/views/workouts/edit.js.coffee
index 183b13e..f9eaa0f 100644
--- a/app/assets/javascripts/views/workouts/edit.js.coffee
+++ b/app/assets/javascripts/views/workouts/edit.js.coffee
@@ -1,2 +1,36 @@
Vue.component "exercise-set",
props: ['set']
+ methods:
+ updateProgress: ->
+ @actual_repetitions = 1
+ console.log(@set)
+ console.log('update')
+
+class ExerciseSetView extends Stronglifters.Autoview
+ @viewName "exercise-set-view"
+ events:
+ 'click button': 'updateProgress'
+
+ updateProgress: ->
+ if !@model.started()
+ @model.complete()
+ else
+ @model.decrement()
+ @model.save()
+ @$('button').html(@model.get('actual_repetitions'))
+
+ if @model.successful()
+ @$('button').addClass('is-success')
+ @$('button').removeClass('is-danger')
+ if @model.workSet()
+ message = "If it was easy break for 1:30, otherwise rest for 3:00."
+ else
+ message = "No rest for the wicked. Let's do this!"
+ @displayMessage message, 'is-success'
+ else
+ @$('button').removeClass('is-success')
+ @$('button').addClass('is-danger')
+ @displayMessage "Take a 5:00 break.", 'is-danger'
+
+ displayMessage: (message) ->
+ console.log(message)