diff options
| author | mo khan <mo@mokhan.ca> | 2017-03-11 19:33:25 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2017-03-11 19:33:25 -0700 |
| commit | 2522f4e3efb0092b64f30396efcf25f37ba866fa (patch) | |
| tree | ab535d918f1077bb37786db205db5d5357bfec7f /app/assets/javascripts | |
| parent | 93e0de131db5370d47a05fd32517b2147c787647 (diff) | |
connect the backbone automodel.
Diffstat (limited to 'app/assets/javascripts')
| -rw-r--r-- | app/assets/javascripts/lib/auto_model.js.coffee | 10 | ||||
| -rw-r--r-- | app/assets/javascripts/lib/autoview.js.coffee | 10 | ||||
| -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.coffee | 3 | ||||
| -rw-r--r-- | app/assets/javascripts/views/workouts/edit.js.coffee | 34 |
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) |
