From 0a40d930732ee933c9bd6acd5aca21cae8e26717 Mon Sep 17 00:00:00 2001 From: mo Date: Sat, 7 Oct 2017 15:33:33 -0600 Subject: load all collections using backbone_collection_for helper. --- app/assets/javascripts/cakeside.js.coffee | 35 ++++------------------ .../controllers/my/cakes_controller.js.coffee | 2 +- app/assets/javascripts/models/cake.js.coffee | 5 +++- .../views/my/photos/new_modal_view.js.coffee | 2 +- app/controllers/my/kitchens_controller.rb | 3 +- app/views/application/json/_photos.jbuilder | 13 ++++++++ app/views/my/kitchens/show.html.erb | 2 ++ 7 files changed, 29 insertions(+), 33 deletions(-) create mode 100644 app/views/application/json/_photos.jbuilder diff --git a/app/assets/javascripts/cakeside.js.coffee b/app/assets/javascripts/cakeside.js.coffee index c4066663..dfaa97f2 100644 --- a/app/assets/javascripts/cakeside.js.coffee +++ b/app/assets/javascripts/cakeside.js.coffee @@ -21,36 +21,13 @@ window.csx = xhr.setRequestHeader "Authorization", "Token token=#{data.access_token}" csx.Application = new Marionette.Application() - csx.Application.addRegions - content_region: '#backbone-content' - + csx.Application.addRegions(content_region: '#backbone-content') csx.Application.addInitializer (options) -> - new csx.Routers.CakesRouter - controller: new csx.Controllers.My.CakesController() - new csx.Routers.TutorialsRouter - controller: new csx.Controllers.My.TutorialsController() - new csx.Routers.DashboardRouter - controller: new csx.Controllers.My.DashboardController() - new csx.Routers.ProfileRouter - controller: new csx.Controllers.My.ProfileController() - + new csx.Routers.CakesRouter(controller: new csx.Controllers.My.CakesController()) + new csx.Routers.TutorialsRouter(controller: new csx.Controllers.My.TutorialsController()) + new csx.Routers.DashboardRouter(controller: new csx.Controllers.My.DashboardController()) + new csx.Routers.ProfileRouter(controller: new csx.Controllers.My.ProfileController()) csx.Application.on 'start', -> if Backbone.history Backbone.history.start() - - @cakes = new csx.Collections.CakesCollection() - - csx.Application.reqres.setHandler 'CakesRepository', => - @cakes - @photos_cache = {} - csx.Application.reqres.setHandler 'PhotosRepository', (cake_id) => - if @photos_cache[cake_id] - @photos_cache[cake_id] - else - photos = new csx.Collections.PhotosCollection(cake_id: cake_id) - @photos_cache[cake_id] = photos - photos.fetch(reset: true) - photos - - @cakes.fetch(reset: true).done -> - csx.Application.start() + csx.Application.start() diff --git a/app/assets/javascripts/controllers/my/cakes_controller.js.coffee b/app/assets/javascripts/controllers/my/cakes_controller.js.coffee index 9e8ec495..009fe596 100644 --- a/app/assets/javascripts/controllers/my/cakes_controller.js.coffee +++ b/app/assets/javascripts/controllers/my/cakes_controller.js.coffee @@ -2,7 +2,7 @@ class csx.Controllers.My.CakesController extends Marionette.Controller views: csx.Views.My.Cakes initialize: (options) -> @content_region = csx.Application.content_region - @cakes = csx.Application.request('CakesRepository') + @cakes = csx.Collections.Creation index: -> @selectTab() diff --git a/app/assets/javascripts/models/cake.js.coffee b/app/assets/javascripts/models/cake.js.coffee index 7df33ee2..7712ac7b 100644 --- a/app/assets/javascripts/models/cake.js.coffee +++ b/app/assets/javascripts/models/cake.js.coffee @@ -14,7 +14,8 @@ class csx.Models.Cake extends Backbone.Model return "Category can't be blank" unless attributes.category_id photos: -> - csx.Application.request('PhotosRepository', @id) + cake_id = @id + new Backbone.Collection(csx.Collections.Photo.filter((photo) => photo.get("cake_id") == cake_id)) public_url: -> "#{window.location.origin}/creations/#{@get('slug')}" @@ -25,3 +26,5 @@ class csx.Models.Cake extends Backbone.Model class csx.Collections.CakesCollection extends Backbone.Collection model: csx.Models.Cake url: '/api/v1/cakes' + +csx.Models.Creation = csx.Models.Cake diff --git a/app/assets/javascripts/views/my/photos/new_modal_view.js.coffee b/app/assets/javascripts/views/my/photos/new_modal_view.js.coffee index 1218b2e9..5a016b89 100644 --- a/app/assets/javascripts/views/my/photos/new_modal_view.js.coffee +++ b/app/assets/javascripts/views/my/photos/new_modal_view.js.coffee @@ -11,7 +11,7 @@ class csx.Views.My.Photos.NewModalView extends Marionette.ItemView constructor: (options) -> super(options) - @collection = csx.Application.request('PhotosRepository', options.cake.id) + @collection = csx.Collections.Photo @cake = options.cake @model = new @collection.model(cake_id: @cake.id) diff --git a/app/controllers/my/kitchens_controller.rb b/app/controllers/my/kitchens_controller.rb index 54f36e1c..bb7a806a 100644 --- a/app/controllers/my/kitchens_controller.rb +++ b/app/controllers/my/kitchens_controller.rb @@ -2,8 +2,9 @@ module My class KitchensController < BaseController def show @tags = Tag.unique_tags - #@cakes = current_user.creations.includes(:category, :photos, :tags, :tag_taggings) + @cakes = current_user.creations.includes(:category, :photos, :tags, :tag_taggings) @tutorials = current_user.tutorials.includes(:tags, :tag_taggings) + @photos = Photo.where(imageable: @cakes) end end end diff --git a/app/views/application/json/_photos.jbuilder b/app/views/application/json/_photos.jbuilder new file mode 100644 index 00000000..f7b6be48 --- /dev/null +++ b/app/views/application/json/_photos.jbuilder @@ -0,0 +1,13 @@ +json.array! @photos do |photo| + json.cache! ['v1', photo] do + json.id photo.id + json.cake_id photo.imageable_id + json.content_type photo.content_type + json.original_filename photo.original_filename + json.thumb_url photo.url_for(:thumb) + json.large_url photo.url_for(:large) + json.original_url photo.url_for(:original) + json.created_at photo.created_at + json.updated_at photo.updated_at + end +end diff --git a/app/views/my/kitchens/show.html.erb b/app/views/my/kitchens/show.html.erb index 13d42a9f..263cd97c 100644 --- a/app/views/my/kitchens/show.html.erb +++ b/app/views/my/kitchens/show.html.erb @@ -10,7 +10,9 @@ <%= backbone_collection_for @categories %> <%= backbone_collection_for @tags %> +<%= backbone_collection_for @cakes %> <%= backbone_collection_for @tutorials %> +<%= backbone_collection_for @photos %> <%= javascript_tag do %> csx.initialize({ access_token: '<%= current_user.authentication_token %>' }); -- cgit v1.2.3