class Pettanr.GroundPicture extends Peta.Element @singular: () -> 'GroundPicture' @plural: () -> 'GroundPictures' defaults: { id: null, x: 0, y: 0, repeat: 0 } @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.Cache.Retriever(Pettanr.Picture, @get('picture_id')) @has_picture: () -> true tmb_opt_img_tag: (picture) -> new Pettanr.Image.SymbolPicture({ attr: { src: picture.r_url(), alt: @escape('caption') }, picture: picture }) 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')] 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) success: (resource_picture) -> @trigger('trace', resource_picture)