X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Fmodels%2Fground_picture.js.coffee;h=276ffc36183a8e9e19531f36877b10d1a080582c;hb=68192c602eef406802ac79d72ab9612f184dda8d;hp=6817bb328af2be9a882dee7eb80721f57119fa3e;hpb=3b1bdc62cc8471efd44ced48e95a9aed7a5ee2ee;p=pettanr%2Fpettanr.git diff --git a/app/assets/javascripts/models/ground_picture.js.coffee b/app/assets/javascripts/models/ground_picture.js.coffee index 6817bb32..276ffc36 100644 --- a/app/assets/javascripts/models/ground_picture.js.coffee +++ b/app/assets/javascripts/models/ground_picture.js.coffee @@ -17,47 +17,87 @@ 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.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: () -> + @has_picture: () -> true - style: (spot = null, opacity = 20) -> - r = { - position: 'absolute', - top: '0px', - left: '0px', - 'z-index': @get('z'), - 'background-image': 'url(' + @picture().r_url() + ')', - 'background-repeat': @repeat_text(), - 'background-position': Pettanr.to_s(@get('x')) + 'px ' + Pettanr.to_s(@get('y')) + 'px' - } - @merge_opacity(r, opacity) if spot and spot != this - r - tmb_opt_img_tag: (picture) -> - new Pettanr.Picture.SymbolPicture({ + 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: () -> + element_face: () -> + new Pettanr.Views.GroundPicture.ElementFace({element: this}) + + initialize: (attr, options) -> + super(attr, options) if @id @url = @url + @id -class Pettanr.GroundPicture.Collection extends Backbone.Collection - model: Pettanr.GroundPicture - url: '/ground_pictures' +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) + + success: (resource_picture) -> + @trigger('trace', resource_picture) +