OSDN Git Service

add load icon
authoryasushiito <yas@pen-chan.jp>
Tue, 9 Dec 2014 02:57:08 +0000 (11:57 +0900)
committeryasushiito <yas@pen-chan.jp>
Tue, 9 Dec 2014 02:57:08 +0000 (11:57 +0900)
52 files changed:
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/column.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/action.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/link/url_column.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/summary/template.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/image.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/face/picture.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/action.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/base.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/symbol/default/link/url_column.js.coffee
app/assets/javascripts/models/balloon.js.coffee
app/assets/javascripts/models/folder.js.coffee
app/assets/javascripts/models/ground_picture.js.coffee
app/assets/javascripts/models/license.js.coffee
app/assets/javascripts/models/original_picture.js.coffee
app/assets/javascripts/models/panel_picture.js.coffee
app/assets/javascripts/models/picture.js.coffee
app/assets/javascripts/models/resource_picture.js.coffee
app/assets/javascripts/models/speech.js.coffee
app/assets/javascripts/models/speech_balloon.js.coffee
app/assets/javascripts/models/speech_balloon_template.js.coffee
app/assets/javascripts/models/system_picture.js.coffee
app/assets/javascripts/models/writing_format.js.coffee
app/assets/javascripts/views/artists/summary.js.coffee
app/assets/javascripts/views/authors/summary.js.coffee
app/assets/javascripts/views/balloons/summary.js.coffee
app/assets/javascripts/views/common.js.coffee
app/assets/javascripts/views/folders/summary.js.coffee
app/assets/javascripts/views/ground_colors/summary.js.coffee
app/assets/javascripts/views/ground_pictures/summary.js.coffee
app/assets/javascripts/views/license_groups/summary.js.coffee
app/assets/javascripts/views/licenses/summary.js.coffee
app/assets/javascripts/views/original_pictures/summary.js.coffee
app/assets/javascripts/views/panel_pictures/summary.js.coffee
app/assets/javascripts/views/panels/summary.js.coffee
app/assets/javascripts/views/pictures/credit.js.coffee
app/assets/javascripts/views/pictures/summary.js.coffee
app/assets/javascripts/views/resource_pictures/summary.js.coffee
app/assets/javascripts/views/sheet_panels/summary.js.coffee
app/assets/javascripts/views/speech_balloon_templates/summary.js.coffee
app/assets/javascripts/views/speech_balloons/summary.js.coffee
app/assets/javascripts/views/speeches/summary.js.coffee
app/assets/javascripts/views/system_pictures/summary.js.coffee
app/assets/javascripts/views/writing_formats/summary.js.coffee
app/assets/javascripts/work/filers.js.coffee.erb
public/images/loading.gif [new file with mode: 0644]
public/local_manifest.json

index e122aac..60cce29 100644 (file)
@@ -6,13 +6,16 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
     @link = m.LinkFactory.factory this, @my_manifest.link, @item\r
   \r
   render: () ->\r
-    if @my_manifest.link.type == 'none'\r
-      this.$el.html(@face.render().el)\r
-    else\r
+    if @has_link()\r
       this.$el.html(@link.render().el)\r
       @delegateEvents({'click .face': 'show'}) \r
+    else\r
+      this.$el.html(@face.el)\r
     this\r
   \r
+  has_link: () ->\r
+    @my_manifest.link.type != 'none'\r
+  \r
   show: () ->\r
     window.router.navigate(@link.url(), true);\r
     return false\r
index 14d2c2b..d7d0f50 100644 (file)
@@ -6,6 +6,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
     @default_caption = options.default_caption\r
     @my_manifest = options.my_manifest\r
     @item = options.item\r
+    @clear()\r
+    @listenTo(@item, 'ready:caption', @render)\r
+  \r
+  clear: () ->\r
+    icon = new Pettanr.Views.Common.LoadIcon()\r
+    this.$el.html(icon.render().el)\r
+    this\r
   \r
   render: () ->\r
     this\r
index fa1975a..9e98f82 100644 (file)
@@ -2,6 +2,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
   \r
   initialize: (options) ->\r
     super(options)\r
+    @render()\r
   \r
   render: () ->\r
     if Pettanr.is_blank(@face())\r
index 6a955ef..612544d 100644 (file)
@@ -2,25 +2,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
   \r
   initialize: (options) ->\r
     super(options)\r
+    if @item[@method_name()]\r
+      @item[@method_name()]()\r
   \r
   render: () ->\r
-    if Pettanr.is_a_string(@face())\r
-      if Pettanr.is_blank(@face())\r
-        'empty'\r
-      else\r
-        this.$el.html(@face())\r
-    else\r
-      # render view when method return related model\r
-      this.$el.html(@face().render().el)\r
-    \r
+    this.$el.html(@item.caption_text)\r
     this\r
   \r
-  @template_file_name: () ->\r
-    if @face().is_blank()\r
-      'empty'\r
-    else\r
-      'column'\r
-  \r
-  face: () ->\r
-    @item[@my_manifest.method_name]()\r
+  method_name: () ->\r
+    @my_manifest.method_name\r
   \r
index 618a8a1..cc3e104 100644 (file)
@@ -5,8 +5,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
   \r
   render: () ->\r
     this.$el.attr('href', @url())\r
-    # embed face everytime\r
-    this.$el.html(@default_caption.face.render().el)\r
+    this.$el.html(@face.el)\r
     this\r
   \r
   url: () ->\r
index b462051..ac08b10 100644 (file)
@@ -5,6 +5,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
     @default_caption = options.default_caption\r
     @my_manifest = options.my_manifest\r
     @item = options.item\r
+    @face = @default_caption.face\r
   \r
   url: () ->\r
     raise "undefined url\n"\r
index da57715..4abd7f3 100644 (file)
@@ -5,8 +5,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
   \r
   render: () ->\r
     this.$el.attr('href', @url())\r
-    # embed face everytime\r
-    this.$el.html(@default_caption.face.render().el)\r
+    this.$el.html(@face.el)\r
     this\r
   \r
   js_url: () ->\r
index 96a1e00..54a5347 100644 (file)
@@ -6,6 +6,6 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SummaryItemCo
   render: () ->\r
     view = Pettanr.Views[@item.singular()]\r
     summary = new view[view.summary()]({item: @item})\r
-    this.$el.html(summary.render().el)\r
+    this.$el.html(summary.el)\r
     this\r
  \r
index 1a5504e..4e6534e 100644 (file)
@@ -6,13 +6,16 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol
     @link = m.LinkFactory.factory this, @my_manifest.link, @item\r
   \r
   render: () ->\r
-    if @my_manifest.link.type == 'none'\r
-      this.$el.html(@face.render().el)\r
-    else\r
+    if @has_link()\r
       this.$el.html(@link.render().el)\r
       @delegateEvents({'click .face': 'show'}) \r
+    else\r
+      this.$el.html(@face.el)\r
     this\r
   \r
+  has_link: () ->\r
+    @my_manifest.link.type != 'none'\r
+  \r
   show: () ->\r
     window.router.navigate(@link.url(), true)\r
     return false\r
index 2fd3441..a7ece41 100644 (file)
@@ -6,6 +6,13 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol
     @default_symbol = options.default_symbol\r
     @my_manifest = options.my_manifest\r
     @item = options.item\r
+    @clear()\r
+    @listenTo(@item, 'ready:symbol', @render)\r
+  \r
+  clear: () ->\r
+    icon = new Pettanr.Views.Common.LoadIcon()\r
+    this.$el.html(icon.render().el)\r
+    this\r
   \r
   render: () ->\r
     this\r
index 12c5e01..a366943 100644 (file)
@@ -2,16 +2,15 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol
   \r
   initialize: (options) ->\r
     super(options)\r
-    attr =\r
     @picture = new Pettanr.Image.SymbolImg({\r
       attr: {\r
         src: @url()\r
       }\r
     })\r
+    @render()\r
   \r
   render: () ->\r
-    if @picture\r
-      this.$el.html(@picture.render().el)\r
+    this.$el.html(@picture.render().el)\r
     this\r
   \r
   url: () ->\r
index 34642f9..bb611db 100644 (file)
@@ -3,21 +3,18 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol
   initialize: (options) ->\r
     super(options)\r
     if @item[@method_name()]\r
-      @item[@method_name()]((pic) =>\r
-        @picture = pic\r
-        @render()\r
-      )\r
+      @item[@method_name()]()\r
+  \r
+  render: () ->\r
+    if @item.symbol_picture\r
+      this.$el.html(@item.symbol_picture.render().el)\r
     else\r
-      @picture = new Pettanr.Image.SymbolImg({\r
+      picture = new Pettanr.Image.SymbolImg({\r
         attr: {\r
           src: '/images/error.png'\r
         }\r
       })\r
-      @render()\r
-  \r
-  render: () ->\r
-    if @picture\r
-      this.$el.html(@picture.render().el)\r
+      this.$el.html(picture.render().el)\r
     this\r
   \r
   method_name: () ->\r
index 81e42b3..fa9a13e 100644 (file)
@@ -5,8 +5,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol
   \r
   render: () ->\r
     this.$el.attr('href', @url())\r
-    # embed face everytime\r
-    this.$el.html(@default_symbol.face.render().el)\r
+    this.$el.html(@face.el)\r
     this\r
   \r
   url: () ->\r
index 6a30be1..54ec7df 100644 (file)
@@ -5,6 +5,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol
     @default_symbol = options.default_symbol\r
     @my_manifest = options.my_manifest\r
     @item = options.item\r
+    @face = @default_symbol.face\r
   \r
   url: () ->\r
     raise "undefined url\n"\r
index c6e7410..8ebf318 100644 (file)
@@ -5,8 +5,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.SymbolItemCol
   \r
   render: () ->\r
     this.$el.attr('href', @url())\r
-    # embed face everytime\r
-    this.$el.html(@default_symbol.face.render().el)\r
+    this.$el.html(@face.el)\r
     this\r
   \r
   js_url: () ->\r
index 9ac7cb2..1089233 100644 (file)
@@ -25,14 +25,15 @@ class Pettanr.Balloon extends Peta.Element
   r_url: () ->\r
     '/system_pictures/' + @system_picture().filename()\r
   \r
-  symbol_option: (cb) ->\r
+  symbol_option: () ->\r
     sb = @speech_balloon()\r
     sb.fetch({cache: true}).done =>\r
       sbt = sb.speech_balloon_template()\r
       sbt.fetch({cache: true}).done =>\r
         sp = sbt.system_picture()\r
         sp.fetch({cache: true}).done =>\r
-          cb(sp.tmb_opt_img_tag())\r
+          @symbol_picture = sp.tmb_opt_img_tag()\r
+          @trigger('ready:symbol')\r
   \r
   initialize: () ->\r
     if @id\r
index fe91006..dafdf52 100644 (file)
@@ -15,6 +15,10 @@ class Pettanr.Folder extends Peta.Owner
   caption: () ->\r
     @get('name').replace(/\/$/, '').split('/').pop()\r
   \r
+  filer_caption: () ->\r
+    @caption_text = @caption()\r
+    @trigger('ready:caption')\r
+  \r
   is_remote: () ->\r
     if @get('category_id') == 10\r
       true\r
index 698ceb0..0682e06 100644 (file)
@@ -35,10 +35,11 @@ class Pettanr.GroundPicture extends Peta.Element
       picture: picture\r
     })\r
   \r
-  symbol_option: (cb) ->\r
+  symbol_option: () ->\r
     i = @picture()\r
     i.fetch({cache: true}).done =>\r
-      cb(@tmb_opt_img_tag(i))\r
+      @symbol_picture = i.tmb_opt_img_tag()\r
+      @trigger('ready:symbol')\r
   \r
   repeat_text: () ->\r
     Pettanr.GroundPicture.repeat_texts()[@get('repeat')]\r
index b1901bf..466b841 100644 (file)
@@ -17,26 +17,19 @@ class Pettanr.License extends Peta.SystemResource
   system_picture: () ->\r
     new Pettanr.SystemPicture({id: @get('system_picture_id')})\r
   \r
-  symbol_option: (cb) ->\r
+  symbol_option: () ->\r
     i = @system_picture()\r
     i.fetch({cache: true}).done =>\r
-      cb(i.tmb_opt_img_tag())\r
+      @symbol_picture = i.tmb_opt_img_tag()\r
+      @trigger('ready:symbol')\r
   \r
   caption_with_group: () ->\r
-    new Pettanr.License.Caption({license: this, license_group: @license_group()})\r
+    i = @license_group()\r
+    i.fetch({cache: true}).done =>\r
+      @caption_text = i.get('caption') + '/' + @get('caption')\r
+      @trigger('ready:caption')\r
   \r
   initialize: () ->\r
     if @id\r
       @url = @url + @id\r
   \r
-class Pettanr.License.Caption extends Backbone.View\r
-  tagName: 'span'\r
-  initialize: (options) ->\r
-    @license = options.license\r
-    @license_group = options.license_group\r
-    \r
-  render: () ->\r
-    @license_group.fetch({cache: true}).done =>\r
-      this.$el.html(@license_group.get('caption') + '/' + @license.get('caption'))\r
-    this\r
-  \r
index 96d16d9..6eafde9 100644 (file)
@@ -39,8 +39,9 @@ class Pettanr.OriginalPicture extends Peta.Content
     })\r
   \r
   symbol_option: (cb) ->\r
-    this.fetch({cache: true}).done =>\r
-      cb(@tmb_opt_img_tag())\r
+    @fetch({cache: true}).done =>\r
+      @symbol_picture = @tmb_opt_img_tag()\r
+      @trigger('ready:symbol')\r
   \r
   revision: () ->\r
     new Pettanr.OriginalPicture.Head({original_picture: this})\r
index 8547958..01a2c5b 100644 (file)
@@ -49,10 +49,11 @@ class Pettanr.PanelPicture extends Peta.Element
       picture: picture\r
     })\r
   \r
-  symbol_option: (cb) ->\r
+  symbol_option: () ->\r
     i = @picture()\r
     i.fetch({cache: true}).done =>\r
-      cb(@tmb_opt_img_tag(i))\r
+      @symbol_picture = i.tmb_opt_img_tag()\r
+      @trigger('ready:symbol')\r
   \r
   element_face: () ->\r
     new Pettanr.Views.PanelPicture.ElementFace({element: this})\r
index 2747127..45924e5 100644 (file)
@@ -49,9 +49,8 @@ class Pettanr.Picture extends Peta.Content
     ln = Pettanr.to_s(@license().get('caption'))\r
     lgn + '[' + ln + ']'\r
   \r
-  symbol_option: (cb) ->\r
-    @fetch({cache: true}).done =>\r
-      cb(@tmb_opt_img_tag())\r
+  symbol_option: () ->\r
+    @tmb_opt_img_tag()\r
   \r
   is_enable: () ->\r
     if @head().resource_picture()\r
@@ -85,6 +84,16 @@ class Pettanr.Picture extends Peta.Content
   credit_view: (with_icon = true) ->\r
     new Pettanr.Views.Picture.Credit({item: this, with_icon: with_icon})\r
   \r
+  fetch: (options) ->\r
+    if @id\r
+      @credit_icon = @credit_icon_view()\r
+      @credit = null\r
+      f = (data, status) =>\r
+        @credit = data\r
+        @trigger('ready')\r
+      $.get(@url + '/credit', null, f, 'html')\r
+    super(options)\r
+  \r
   initialize: () ->\r
     if @id\r
       @url = @url + @id\r
index 54a27bc..141b66c 100644 (file)
@@ -49,9 +49,10 @@ class Pettanr.ResourcePicture extends Peta.Content
     ln = Pettanr.to_s(@license().get('caption'))\r
     lgn + '[' + ln + ']'\r
   \r
-  symbol_option: (cb) ->\r
+  symbol_option: () ->\r
     @fetch({cache: true}).done =>\r
-      cb(@tmb_opt_img_tag())\r
+      @symbol_picture = @tmb_opt_img_tag()\r
+      @trigger('ready:symbol')\r
   \r
   credit_icon_view: () ->\r
     new Pettanr.Views.ResourcePicture.CreditIcon({item: this})\r
index 50207cc..97e5a62 100644 (file)
@@ -28,7 +28,8 @@ class Pettanr.Speech extends Peta.Element
       sbt.fetch({cache: true}).done =>\r
         sp = sbt.system_picture()\r
         sp.fetch({cache: true}).done =>\r
-          cb(sp.tmb_opt_img_tag())\r
+          @symbol_picture = sp.tmb_opt_img_tag()\r
+          @trigger('ready:symbol')\r
   \r
   text_align_text: () ->\r
     Pettanr.Speech.text_align_texts()[@get('text_align')]\r
index 643a8df..a330668 100644 (file)
@@ -22,12 +22,13 @@ class Pettanr.SpeechBalloon extends Peta.Element
   @has_picture: () ->\r
     false\r
   \r
-  symbol_option: (cb) ->\r
+  symbol_option: () ->\r
     sbt = @speech_balloon_template()\r
     sbt.fetch({cache: true}).done =>\r
       sp = sbt.system_picture()\r
       sp.fetch({cache: true}).done =>\r
-        cb(sp.tmb_opt_img_tag())\r
+        @symbol_picture = sp.tmb_opt_img_tag()\r
+        @trigger('ready:symbol')\r
   \r
   plain_scenario: () ->\r
     @get('caption')\r
index 91431f7..3698254 100644 (file)
@@ -14,10 +14,11 @@ class Pettanr.SpeechBalloonTemplate extends Peta.Template
   system_picture: () ->\r
     new Pettanr.SystemPicture({id: @get('system_picture_id')})\r
   \r
-  symbol_option: (cb) ->\r
+  symbol_option: () ->\r
     i = @system_picture()\r
     i.fetch({cache: true}).done =>\r
-      cb(i.tmb_opt_img_tag())\r
+      @symbol_picture = i.tmb_opt_img_tag()\r
+      @trigger('ready:symbol')\r
   \r
   parsed_settings: () ->\r
     JSON.parse(@get('settings'))\r
index 52f514b..36db60a 100644 (file)
@@ -34,9 +34,10 @@ class Pettanr.SystemPicture extends Peta.SystemResource
       picture: this\r
     })\r
   \r
-  symbol_option: (cb) ->\r
+  symbol_option: () ->\r
     @fetch({cache: true}).done =>\r
-      cb(@tmb_opt_img_tag())\r
+      @symbol_picture = @tmb_opt_img_tag()\r
+      @trigger('ready:symbol')\r
   \r
   initialize: () ->\r
     if @id\r
index 92d189b..61e08fc 100644 (file)
@@ -14,10 +14,11 @@ class Pettanr.WritingFormat extends Peta.Template
   system_picture: () ->\r
     new Pettanr.SystemPicture({id: @get('system_picture_id')})\r
   \r
-  symbol_option: (cb) ->\r
+  symbol_option: () ->\r
     i = @system_picture()\r
     i.fetch({cache: true}).done =>\r
-      cb(i.tmb_opt_img_tag())\r
+      @symbol_picture = i.tmb_opt_img_tag()\r
+      @trigger('ready:symbol')\r
   \r
   initialize: () ->\r
     if @id\r
index 5dac2fe..371fb42 100644 (file)
@@ -1,7 +1,8 @@
-class Pettanr.Views.Artist.Summary extends Backbone.View\r
+class Pettanr.Views.Artist.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     super(options)\r
+    @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
index 944de30..ed9a3ef 100644 (file)
@@ -1,7 +1,8 @@
-class Pettanr.Views.Author.Summary extends Backbone.View\r
+class Pettanr.Views.Author.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     super(options)\r
+    @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
index ad0930e..087fff9 100644 (file)
@@ -1,15 +1,20 @@
-class Pettanr.Views.Balloon.Summary extends Backbone.View\r
+class Pettanr.Views.Balloon.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
+    super(options)\r
     @item = options.item\r
+    @load()\r
+  \r
+  load: () ->\r
     @speech_balloon = @item.speech_balloon()\r
+    @speech_balloon.fetch({cache: true}).done =>\r
+      @panel = @speech_balloon.panel()\r
+      @panel.fetch({cache: true}).done =>\r
+        @panel_icon = new Pettanr.Views.Common.Icon({item: @panel, half: true})\r
+        @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
-    @speech_balloon.fetch({cache: true}).done =>\r
-      panel = @speech_balloon.panel()\r
-      panel.fetch({cache: true}).done =>\r
-        panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
-        this.$el.append(panel_icon.render().el)\r
+    this.$el.append(@panel_icon.render().el)\r
     this\r
   \r
index bec019a..e958bde 100644 (file)
@@ -1,4 +1,22 @@
 class Pettanr.Views.Common\r
+class Pettanr.Views.Common.LoadIcon extends Tag.Img\r
+  \r
+  initialize: () ->\r
+    @attr = {}\r
+    @width = Manifest.manifest().magic_numbers['thumbnail_width']\r
+    @height = Manifest.manifest().magic_numbers['thumbnail_height']\r
+    @width = Pettanr.to_i(@width/2)\r
+    @height = Pettanr.to_i(@height/2)\r
+    @attr['src'] = '/images/loading.gif'\r
+    @attr['width'] = @width\r
+    @attr['height'] = @height\r
+    @attr['alt'] = 'Loading'\r
+    @attr['title'] = 'Loading'\r
+    opt = {\r
+      attr: @attr,\r
+    }\r
+    super(opt)\r
+\r
 class Pettanr.Views.Common.Icon extends Backbone.View\r
   tagName: 'span'\r
   \r
@@ -54,55 +72,78 @@ class Pettanr.Views.Common.IconWithCaption extends Backbone.View
     this.$el.append(@caption.render().el)\r
     this\r
   \r
+class Pettanr.Views.Common.Summary extends Backbone.View\r
+  \r
+  initialize: (options) ->\r
+    @clear()\r
+    @listenTo(this, 'ready', @render)\r
+  \r
+  clear: () ->\r
+    icon = new Pettanr.Views.Common.LoadIcon()\r
+    this.$el.html(icon.render().el)\r
+    this\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this\r
+  \r
 class Pettanr.Views.Common.Binder\r
-class Pettanr.Views.Common.Binder.Summary extends Backbone.View\r
+class Pettanr.Views.Common.Binder.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
+    super(options)\r
     @item = options.item\r
     @visible_t = options.visible_t\r
     @visible_column_name = options.visible_column_name\r
+    @load()\r
+  \r
+  load: () ->\r
     @visible = new Tag.Div({\r
       content: Pettanr.AppHelper.t_selected_item(@visible_t, @item.get(@visible_column_name))\r
     })\r
     @author = @item.author()\r
     @author.fetch({cache: true}).done =>\r
       @author_icon_with_caption = @author.icon_with_caption_view(true, 'name', 12)\r
-      @render()\r
+      @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
     this.$el.append(@visible.render().el)\r
-    if @author_icon_with_caption\r
-      this.$el.append(@author_icon_with_caption.render().el)\r
+    this.$el.append(@author_icon_with_caption.render().el)\r
     this\r
   \r
 class Pettanr.Views.Common.Leaf\r
-class Pettanr.Views.Common.Leaf.Summary extends Backbone.View\r
+class Pettanr.Views.Common.Leaf.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
+    super(options)\r
     @item = options.item\r
     @binder_item_name = options.binder_item_name\r
     @destination_item_name = options.destination_item_name\r
+    @load()\r
+  \r
+  load: () ->\r
     @binder = @item[@binder_item_name]()\r
     @binder.fetch({cache: true}).done =>\r
       @binder_icon = @binder.icon_view(true)\r
       @binder_author = @binder.author()\r
       @binder_author.fetch({cache: true}).done =>\r
         @binder_author_icon_with_caption = @binder_author.icon_with_caption_view(true, 'name', 12)\r
-        @render()\r
+        @trigger('ready')\r
     @destination = @item[@destination_item_name]()\r
     @destination.fetch({cache: true}).done =>\r
       @destination_icon = @destination.icon_view(true)\r
       @destination_author = @destination.author()\r
       @destination_author.fetch({cache: true}).done =>\r
         @destination_author_icon_with_caption = @destination_author.icon_with_caption_view(true, 'name', 12)\r
-        @render()\r
+        @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
-    if @binder_author_icon_with_caption and @destination_author_icon_with_caption\r
+    if @binder_author_icon_with_caption\r
       this.$el.append(@binder_icon.render().el)\r
       this.$el.append(@binder_author_icon_with_caption.render().el)\r
+    if @destination_author_icon_with_caption\r
       this.$el.append(@destination_icon.render().el)\r
       this.$el.append(@destination_author_icon_with_caption.render().el)\r
     this\r
index 602650b..f12739f 100644 (file)
@@ -1,7 +1,8 @@
-class Pettanr.Views.Folder.Summary extends Backbone.View\r
+class Pettanr.Views.Folder.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     super(options)\r
+    @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
index 8b38aaa..e0632e2 100644 (file)
@@ -1,13 +1,18 @@
-class Pettanr.Views.GroundColor.Summary extends Backbone.View\r
+class Pettanr.Views.GroundColor.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
+    super(options)\r
     @item = options.item\r
+    @load()\r
   \r
-  render: () ->\r
-    this.$el.html('')\r
+  load: () ->\r
     panel = @item.panel()\r
     panel.fetch({cache: true}).done =>\r
-      panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
-      this.$el.append(panel_icon.render().el)\r
+      @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
+      @trigger('ready')\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this.$el.append(@panel_icon.render().el)\r
     this\r
   \r
index f04667a..cbecb18 100644 (file)
@@ -1,17 +1,22 @@
-class Pettanr.Views.GroundPicture.Summary extends Backbone.View\r
+class Pettanr.Views.GroundPicture.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
+    super(options)\r
     @item = options.item\r
-    @picture = @item.picture()\r
+    @load()\r
   \r
-  render: () ->\r
-    this.$el.html('')\r
+  load: () ->\r
+    @picture = @item.picture()\r
     @picture.fetch({cache: true}).done =>\r
-      credit = @picture.credit_view(false)\r
-      this.$el.append(credit.render().el)\r
+      @credit = @picture.credit_view(false)\r
       panel = @item.panel()\r
       panel.fetch({cache: true}).done =>\r
-        panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
-        this.$el.append(panel_icon.render().el)\r
+        @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
+        @trigger('ready')\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this.$el.append(@credit.render().el)\r
+    this.$el.append(@panel_icon.render().el)\r
     this\r
   \r
index 01a65cf..0ccbfda 100644 (file)
@@ -1,7 +1,8 @@
-class Pettanr.Views.LicenseGroup.Summary extends Backbone.View\r
+class Pettanr.Views.LicenseGroup.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     super(options)\r
+    @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
index 37c8301..09c718a 100644 (file)
@@ -1,17 +1,21 @@
-class Pettanr.Views.License.Summary extends Backbone.View\r
+class Pettanr.Views.License.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     @item = options.item\r
+    @load()\r
   \r
-  render: () ->\r
-    this.$el.html('')\r
+  load: () ->\r
     @system_picture = @item.system_picture()\r
     @system_picture.fetch({cache: true}).done =>\r
-      img = new Tag.Img({\r
+      @img = new Tag.Img({\r
         attr: {\r
           src: @system_picture.r_url()\r
         }\r
       })\r
-      this.$el.html(img.render().el)\r
+      @trigger('ready')\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this.$el.html(@img.render().el)\r
     this\r
   \r
index 2d05a1f..5c8cf7c 100644 (file)
@@ -1,23 +1,29 @@
-class Pettanr.Views.OriginalPicture.Summary extends Backbone.View\r
+class Pettanr.Views.OriginalPicture.Summary extends Pettanr.Views.Common.Summary\r
   className: 'op-smy'\r
   \r
   initialize: (options) ->\r
+    super(options)\r
     @item = options.item\r
     #@item = new Pettanr.OriginalPicture({id: options.item.get('id')}) # with resource_picture\r
+    @load()\r
   \r
-  render: () ->\r
+  load: () ->\r
     @item.fetch({cache: false}).done =>\r
-      this.$el.html('')\r
-      visible = new Tag.Span({\r
+      @visible = new Tag.Span({\r
         class_name: 'state',\r
         content: I18n.t('original_pictures.' + @item.state())\r
       })\r
-      this.$el.append(visible.render().el)\r
       if ra = @item.get('resource_picture')\r
         resource_picture = new Pettanr.ResourcePicture(ra)\r
-        credit = resource_picture.credit_view(true)\r
-        this.$el.append(credit.render().el)\r
-      rb = new Tag.RowBreak()\r
-      this.$el.append(rb.render().el)\r
+        @credit = resource_picture.credit_view(true)\r
+      @trigger('ready')\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this.$el.append(@visible.render().el)\r
+    if @credit\r
+      this.$el.append(@credit.render().el)\r
+    rb = new Tag.RowBreak()\r
+    this.$el.append(rb.render().el)\r
     this\r
   \r
index fff5289..89adb65 100644 (file)
@@ -1,17 +1,22 @@
-class Pettanr.Views.PanelPicture.Summary extends Backbone.View\r
+class Pettanr.Views.PanelPicture.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
+    super(options)\r
     @item = options.item\r
-    @picture = @item.picture()\r
+    @load()\r
   \r
-  render: () ->\r
-    this.$el.html('')\r
+  load: () ->\r
+    @picture = @item.picture()\r
     @picture.fetch({cache: true}).done =>\r
-      credit = @picture.credit_view(false)\r
-      this.$el.append(credit.render().el)\r
+      @credit = @picture.credit_view(false)\r
       panel = @item.panel()\r
       panel.fetch({cache: true}).done =>\r
-        panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
-        this.$el.append(panel_icon.render().el)\r
+        @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
+        @trigger('ready')\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this.$el.append(@credit.render().el)\r
+    this.$el.append(@panel_icon.render().el)\r
     this\r
   \r
index 30a7f13..f89b242 100644 (file)
@@ -1,23 +1,26 @@
-class Pettanr.Views.Panel.Summary extends Backbone.View\r
+class Pettanr.Views.Panel.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
+    super(options)\r
     @item = options.item\r
     options['visible_t'] = 'panel_publish_items'\r
     options['visible_column_name'] = 'publish'\r
     @visible_t = options.visible_t\r
     @visible_column_name = options.visible_column_name\r
+    @load()\r
+  \r
+  load: () ->\r
     @visible = new Tag.Div({\r
       content: Pettanr.AppHelper.t_selected_item(@visible_t, @item.get(@visible_column_name))\r
     })\r
     @author = @item.author()\r
     @author.fetch({cache: true}).done =>\r
       @author_icon_with_caption = @author.icon_with_caption_view(true, 'name', 12)\r
-      @render()\r
+      @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
     this.$el.append(@visible.render().el)\r
-    if @author_icon_with_caption\r
-      this.$el.append(@author_icon_with_caption.render().el)\r
+    this.$el.append(@author_icon_with_caption.render().el)\r
     this\r
   \r
index 4f6f21e..d8cf4df 100644 (file)
@@ -6,21 +6,13 @@ class Pettanr.Views.Picture.Credit extends Backbone.View
     @item = options.item\r
     @with_icon = options.with_icon\r
     @url = @item.url + '/credit'\r
+    @listenTo(@item, 'ready', @render)\r
   \r
   render: () ->\r
     this.$el.html('')\r
     if @with_icon\r
-      p = @item.credit_icon_view()\r
-      this.$el.append(p.render().el)\r
-    if Pettanr.credits[@url]\r
-      this.$el.append(Pettanr.credits[@url])\r
-      this.$el.append((new Tag.RowBreak()).render().el)\r
-    else\r
-      f = (data, status) =>\r
-        Pettanr.credits[@url] = data\r
-        this.$el.append(data)\r
-        rb = new Tag.RowBreak()\r
-        this.$el.append(rb.render().el)\r
-      $.get(@url, null, f, 'html')\r
+      this.$el.append(@item.credit_icon.render().el)\r
+    this.$el.append(@item.credit)\r
+    this.$el.append((new Tag.RowBreak()).render().el)\r
     this\r
   \r
index 341c019..4780539 100644 (file)
@@ -1,7 +1,8 @@
-class Pettanr.Views.Picture.Summary extends Backbone.View\r
+class Pettanr.Views.Picture.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     super(options)\r
+    @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
index 8acbdeb..b941770 100644 (file)
@@ -1,13 +1,18 @@
-class Pettanr.Views.ResourcePicture.Summary extends Backbone.View\r
+class Pettanr.Views.ResourcePicture.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
+    super(options)\r
     @item = options.item\r
+    @load()\r
+  \r
+  load: () ->\r
     @picture = @item.picture()\r
+    @picture.fetch({cache: true}).done =>\r
+      @credit = @picture.credit_view(false)\r
+      @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
-    @picture.fetch({cache: true}).done =>\r
-      credit = @picture.credit_view(false)\r
-      this.$el.append(credit.render().el)\r
+    this.$el.append(@credit.render().el)\r
     this\r
   \r
index 59ecc1a..461d0c3 100644 (file)
@@ -1,7 +1,8 @@
-class Pettanr.Views.SheetPanel.Summary extends Backbone.View\r
+class Pettanr.Views.SheetPanel.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     super(options)\r
+    @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
index 333ef0f..740483a 100644 (file)
@@ -1,7 +1,8 @@
-class Pettanr.Views.SpeechBalloonTemplate.Summary extends Backbone.View\r
+class Pettanr.Views.SpeechBalloonTemplate.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     super(options)\r
+    @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
index ef310ab..3891082 100644 (file)
@@ -1,13 +1,17 @@
-class Pettanr.Views.SpeechBalloon.Summary extends Backbone.View\r
+class Pettanr.Views.SpeechBalloon.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     @item = options.item\r
+    @load()\r
   \r
-  render: () ->\r
-    this.$el.html('')\r
+  load: () ->\r
     panel = @item.panel()\r
     panel.fetch({cache: true}).done =>\r
-      panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
-      this.$el.append(panel_icon.render().el)\r
+      @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
+      @trigger('ready')\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this.$el.append(@panel_icon.render().el)\r
     this\r
   \r
index 0b10eef..8c1eccd 100644 (file)
@@ -1,15 +1,20 @@
-class Pettanr.Views.Speech.Summary extends Backbone.View\r
+class Pettanr.Views.Speech.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
+    super(options)\r
     @item = options.item\r
-    @speech_balloon = @item.speech_balloon()\r
+    @load()\r
   \r
-  render: () ->\r
-    this.$el.html('')\r
+  load: () ->\r
+    @speech_balloon = @item.speech_balloon()\r
     @speech_balloon.fetch({cache: true}).done =>\r
       panel = @speech_balloon.panel()\r
       panel.fetch({cache: true}).done =>\r
-        panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
-        this.$el.append(panel_icon.render().el)\r
+        @panel_icon = new Pettanr.Views.Common.Icon({item: panel, half: true})\r
+        @trigger('ready')\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this.$el.append(@panel_icon.render().el)\r
     this\r
   \r
index 703d488..9a4f910 100644 (file)
@@ -1,7 +1,8 @@
-class Pettanr.Views.SystemPicture.Summary extends Backbone.View\r
+class Pettanr.Views.SystemPicture.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     super(options)\r
+    @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
index 8d45d37..9728722 100644 (file)
@@ -1,7 +1,8 @@
-class Pettanr.Views.WritingFormat.Summary extends Backbone.View\r
+class Pettanr.Views.WritingFormat.Summary extends Pettanr.Views.Common.Summary\r
   \r
   initialize: (options) ->\r
     super(options)\r
+    @trigger('ready')\r
   \r
   render: () ->\r
     this.$el.html('')\r
index b7be47e..1556523 100644 (file)
@@ -9,7 +9,7 @@
         face: {\r
           type: 'method',\r
           args: {\r
-            method_name: 'caption',\r
+            method_name: 'filer_caption',\r
           },\r
         },\r
       },\r
diff --git a/public/images/loading.gif b/public/images/loading.gif
new file mode 100644 (file)
index 0000000..f864d5f
Binary files /dev/null and b/public/images/loading.gif differ
index b8ffbf8..c466554 100644 (file)
           "face": {\r
             "type": "method",\r
             "args": {\r
-              "method_name": "caption"\r
+              "method_name": "filer_caption"\r
             }\r
           }\r
         }\r