Commit 58acf6c7

mo <mo.khan@gmail.com>
2017-09-03 20:47:12
attach behaviours to document immediately.
1 parent 4d6fd17
app/assets/javascripts/infrastructure/auto_view_setup.js.coffee
@@ -1,7 +1,7 @@
 #= require ./behaviour
 
 class CakeSide.AutoViewSetup extends CakeSide.Behaviour
-  @on "load"
+  @on "ready"
 
   execute: ->
     for element in $('[data-autoview]')
app/assets/javascripts/infrastructure/behaviour.js.coffee
@@ -1,12 +1,5 @@
 class CakeSide.Behaviour
-  @events: {}
-
   @on: (event) ->
-    @events[event] ?= []
-    @events[event].push(@)
-
-  @install: ->
-    for event of @events
-      window.addEventListener event, () =>
-        for behaviour in @events[event]
-          new behaviour().execute()
+    behaviour = new this()
+    $(document).on event, () =>
+      behaviour.execute()
app/assets/javascripts/infrastructure/infinite_scroll.js.coffee
@@ -1,11 +1,14 @@
 #= require ./behaviour
 
 class CakeSide.InfiniteScroll extends CakeSide.Behaviour
+  PERCENTAGE=0.8
   @on "scroll"
 
   execute: ->
     $moreButton = $('[data-infinite-scroll]')
     return if $moreButton.length == 0
 
-    if $(window).scrollTop() >= ($(document).height() - $(window).height())*0.8
+    top = $(window).scrollTop()
+    height = ($(document).height() - $(window).height())
+    if top >= height * PERCENTAGE
       $moreButton.trigger('click')
app/assets/javascripts/views/cakes/show_page.js.coffee
@@ -1,4 +1,4 @@
-#= require infrastructure/auto_view
+#= require views/auto_view
 
 class CakeSide.Views.Cakes.ShowPage extends CakeSide.AutoView
   @viewName "cakes#show"
app/assets/javascripts/infrastructure/auto_view.js.coffee → app/assets/javascripts/views/auto_view.js.coffee
@@ -20,4 +20,5 @@ class CakeSide.AutoView extends Backbone.View
     @views[name] ?= []
     @views[name].push(view)
 
-  render: -> { }
+  render: ->
+    @
app/assets/javascripts/application.js
@@ -16,5 +16,3 @@
 //= require backbone-model-file-upload
 //= require cakeside
 //= require_self
-
-CakeSide.Behaviour.install();