OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / app / assets / javascripts / models / panel_picture.js.coffee
index f8f9be3..d46c1ff 100644 (file)
@@ -11,8 +11,24 @@ class Pettanr.PanelPicture extends Peta.Element
     id: null\r
   } \r
   \r
+  @pick_item_name: () ->\r
+    'resource_picture'\r
+  \r
+  @traceable_item_names: () ->\r
+    ['ground_picture', 'picture']\r
+  \r
+  pick: (picked_item) ->\r
+    {\r
+      picture_id: picked_item.get('picture_id'),\r
+      width: picked_item.get('width'),\r
+      height: picked_item.get('height')\r
+    }\r
+  \r
   picture: () ->\r
-    new Pettanr.Picture({id: @get('picture_id')})\r
+    new Pettanr.Cache.Retriever(Pettanr.Picture, @get('picture_id'))\r
+  \r
+  panel: () ->\r
+    new Pettanr.Cache.Retriever(Pettanr.Panel, @get('panel_id'))\r
   \r
   @has_picture: () ->\r
     true\r
@@ -31,46 +47,76 @@ class Pettanr.PanelPicture extends Peta.Element
     # res += '/' unless res.empty? # format of /v/1.png\r
     res\r
   \r
-  filename: () ->\r
-    @picture().filename() + '?subdir=' + @flip()\r
-  \r
-  r_url: () ->\r
-    '/pictures/' + @filename()\r
+  filename: (picture) ->\r
+    q = if _.isEmpty(@flip())\r
+      ''\r
+    else\r
+      '?subdir=' + @flip()\r
+    picture.filename() + q\r
   \r
-  opt_div_style: () ->\r
-    "top:#{@get('y')}px; left:#{@get('x')}px; z-index:#{@get('z')}; position: absolute;"\r
+  r_url: (picture) ->\r
+    '/pictures/' + @filename(picture)\r
   \r
-  opt_img_tag: (spot = null, opacity = 20) ->\r
-    o = if spot and spot != this\r
-      "opacity: #{opacity.to_f/100}; filter:alpha(opacity=#{opacity});"\r
-    else\r
-      ''\r
-    @tag_attributes('img', {\r
-      class: "panel-picture", \r
-      vPicture: @get('id'), \r
-      src: @r_url(), \r
-      width: Math.abs(@get('width')), \r
-      height: Math.abs(@get('height')), \r
-      picture_id: @get('picture_id'), \r
-      ext: @picture.ext, \r
-      alt: @get('caption'), \r
-      style: "#{o}"\r
+  tmb_opt_img_tag: (picture) ->\r
+    new Pettanr.Image.SymbolPicture({\r
+      attr: {\r
+        src: picture.r_url(), \r
+        alt: @escape('caption')\r
+      },\r
+      picture: picture\r
     })\r
   \r
-  tmb_opt_img_tag: (picture) ->\r
-    wh = Pettanr.Imager.thumbnail_size(@get('width'), @get('height'))\r
-    new Pettanr.AppHelperImg({src: picture.r_url(), size: Math.abs(wh[0]), alt: @get('caption')})\r
+  symbol_option: () ->\r
+    retriever = @picture()\r
+    @listenTo(retriever, 'retrieve', @retrieve_symbol)\r
+    retriever.retrieve()\r
   \r
-  symbol_option: (cb) ->\r
-    i = @picture()\r
-    _this = this\r
-    i.fetch().done ->\r
-      cb(_this.tmb_opt_img_tag(i))\r
+  retrieve_symbol: (item) -> \r
+    @trigger('ready:symbol', item.tmb_opt_img_tag())\r
   \r
-  initialize: () ->\r
+  element_face: () ->\r
+    new Pettanr.Views.PanelPicture.ElementFace({element: this})\r
+  \r
+  initialize: (attr, options) ->\r
+    super(attr, options)\r
     if @id\r
       @url = @url + @id\r
   \r
-class Pettanr.PanelPicture.Collection extends Backbone.Collection\r
-  model: Pettanr.PanelPicture\r
-  url: '/panel_pictures'\r
+class Pettanr.PanelPicture.TraceFromPicture\r
+  \r
+  constructor: (options) ->\r
+    _.extend(this, Backbone.Events)\r
+  \r
+  trace: (picture) ->\r
+    @picture(picture)\r
+  \r
+  picture: (picture) ->\r
+    resource_picture_picture_list = picture.has_one('resource_picture_picture')\r
+    resource_picture_picture_list.open(() =>\r
+      resource_picture_picture = resource_picture_picture_list.items()[0]\r
+      retriever = new Pettanr.Cache.Retriever(Pettanr.ResourcePicture, resource_picture_picture.get('resource_picture_id'))\r
+      @listenTo(retriever, 'retrieve', @resource_picture)\r
+      retriever.retrieve()\r
+    )\r
+  \r
+  resource_picture: (resource_picture) ->\r
+    @trigger('trace', resource_picture)\r
+  \r
+class Pettanr.PanelPicture.TraceFromGroundPicture extends Pettanr.PanelPicture.TraceFromPicture\r
+  \r
+  trace: (ground_picture) ->\r
+    @ground_picture(ground_picture)\r
+  \r
+  ground_picture: (ground_picture) ->\r
+    retriever = new Pettanr.Cache.Retriever(Pettanr.Picture, ground_picture.get('picture_id'))\r
+    @listenTo(retriever, 'retrieve', @picture)\r
+    retriever.retrieve()\r
+  \r
+  picture: (picture) ->\r
+    tracer = new Pettanr.PanelPicture.TraceFromPicture()\r
+    @listenTo(tracer, 'trace', @success)\r
+    tracer.trace(picture)\r
+  \r
+  success: (resource_picture) ->\r
+    @trigger('trace', resource_picture)\r
+  \r