X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Fmodels%2Fground_picture.js.coffee;h=77d074fe6620d8e75d0cead3c5a1a09a94d0f090;hp=5092b04a2d8eed41864f316e634f7efbfcae5650;hb=aa9eca25671c772ffec8f2f65aecc8a978a2f375;hpb=b5b8c38cc3c593a6e8622332296ccdfc24ae641d diff --git a/app/assets/javascripts/models/ground_picture.js.coffee b/app/assets/javascripts/models/ground_picture.js.coffee index 5092b04a..77d074fe 100644 --- a/app/assets/javascripts/models/ground_picture.js.coffee +++ b/app/assets/javascripts/models/ground_picture.js.coffee @@ -1,5 +1,4 @@ class Pettanr.GroundPicture extends Peta.Element - url: '/ground_pictures/' @singular: () -> 'GroundPicture' @@ -17,11 +16,20 @@ class Pettanr.GroundPicture extends Peta.Element @repeat_texts: () -> ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'] + @pick_item_name: () -> + 'resource_picture' + + @traceable_item_names: () -> + ['panel_picture', 'picture'] + + pick: (picked_item) -> + {picture_id: picked_item.get('picture_id')} + panel: () -> - new Pettanr.Panel({id: @get('panel_id')}) + new Pettanr.Cache.Retriever(Pettanr.Panel, @get('panel_id')) picture: () -> - new Pettanr.Picture({id: @get('picture_id')}) + new Pettanr.Cache.Retriever(Pettanr.Picture, @get('picture_id')) @has_picture: () -> true @@ -30,25 +38,63 @@ class Pettanr.GroundPicture extends Peta.Element new Pettanr.Image.SymbolPicture({ attr: { src: picture.r_url(), - alt: @get('caption') + alt: @escape('caption') }, picture: picture }) - symbol_option: (cb) -> - i = @picture() - _this = this - i.fetch().done -> - cb(_this.tmb_opt_img_tag(i)) + symbol_option: () -> + retriever = @picture() + @listenTo(retriever, 'retrieve', @retrieve_symbol) + retriever.retrieve() + + retrieve_symbol: (picture) -> + @trigger('ready:symbol', picture.tmb_opt_img_tag()) repeat_text: () -> Pettanr.GroundPicture.repeat_texts()[@get('repeat')] - initialize: () -> - if @id - @url = @url + @id + element_face: () -> + new Pettanr.Views.GroundPicture.ElementFace({element: this}) + + initialize: (attr, options) -> + super(attr, options) + +class Pettanr.GroundPicture.TraceFromPicture + + constructor: (options) -> + _.extend(this, Backbone.Events) + + trace: (picture) -> + @picture(picture) + + picture: (picture) -> + resource_picture_picture_list = picture.has_one('resource_picture_picture') + resource_picture_picture_list.open(() => + resource_picture_picture = resource_picture_picture_list.items()[0] + retriever = new Pettanr.Cache.Retriever(Pettanr.ResourcePicture, resource_picture_picture.get('resource_picture_id')) + @listenTo(retriever, 'retrieve', @resource_picture) + retriever.retrieve() + ) + + resource_picture: (resource_picture) -> + @trigger('trace', resource_picture) + +class Pettanr.GroundPicture.TraceFromPanelPicture extends Pettanr.GroundPicture.TraceFromPicture + + trace: (panel_picture) -> + @panel_picture(panel_picture) + + panel_picture: (panel_picture) -> + retriever = new Pettanr.Cache.Retriever(Pettanr.Picture, panel_picture.get('picture_id')) + @listenTo(retriever, 'retrieve', @picture) + retriever.retrieve() + + picture: (picture) -> + tracer = new Pettanr.GroundPicture.TraceFromPicture() + @listenTo(tracer, 'trace', @success) + tracer.trace(picture) -class Pettanr.GroundPicture.Collection extends Backbone.Collection - model: Pettanr.GroundPicture - url: '/ground_pictures/' + success: (resource_picture) -> + @trigger('trace', resource_picture)