OSDN Git Service

fix: fetch err
[pettanr/pettanr.git] / app / assets / javascripts / views / speech_balloons / element.js.coffee
index 4cdf06f..4e79625 100644 (file)
@@ -1,4 +1,4 @@
-class Pettanr.Views.SpeechBalloon.Element extends Backbone.View\r
+class Pettanr.Views.SpeechBalloon.Element extends Pettanr.View\r
   tagName: 'div'\r
   className: 'pettanr-comic-balloon'\r
   \r
@@ -7,26 +7,38 @@ class Pettanr.Views.SpeechBalloon.Element extends Backbone.View
     @root = options.root\r
     @spot = options.spot\r
     @balloon = @element.get('balloon')\r
-    @speech = @element.get('speech')\r
-  \r
-  render: () ->\r
-    @attr = {style: Pettanr.to_style(@style())}\r
-    @b = new Pettanr.Views.Balloon.Element({\r
+    klass = @balloon_class()\r
+    @balloon_view = new klass({\r
+      parent: this, \r
       element: @balloon, \r
       root: @root,\r
       spot: @spot\r
     })\r
-    @s = new Pettanr.Views.Speech.Element({\r
+    @speech = @element.get('speech')\r
+    klass = @speech_class()\r
+    @speech_view = new klass({\r
+      parent: this, \r
       element: @speech, \r
       root: @root,\r
       spot: @spot\r
     })\r
-    this.$el.attr(@attr)\r
+  \r
+  render: () ->\r
     this.$el.html('')\r
-    this.$el.append(@b.render().el)\r
-    this.$el.append(@s.render().el)\r
+    @balloon.get_parent('system_picture', this, {\r
+      success: (system_picture) =>\r
+        @balloon_view.system_picture = system_picture\r
+        this.$el.append(@balloon_view.render().el)\r
+        @balloon_view.init_picture()\r
+    })\r
+    this.$el.append(@speech_view.render().el)\r
+    @set_style()\r
     this\r
   \r
+  set_style: () ->\r
+    attr = {style: Pettanr.to_style(@style())}\r
+    this.$el.attr(attr)\r
+  \r
   style: () ->\r
     {\r
       width: Pettanr.to_s(@balloon.get('width')) + 'px', \r
@@ -36,5 +48,57 @@ class Pettanr.Views.SpeechBalloon.Element extends Backbone.View
       'z-index': @element.get('z')\r
     }\r
   \r
+  balloon_class: () ->\r
+    Pettanr.Views.Balloon.Element\r
+  \r
+  speech_class: () ->\r
+    Pettanr.Views.Speech.Element\r
+  \r
 class Pettanr.Views.SpeechBalloon.Element.Edit extends Pettanr.Views.SpeechBalloon.Element\r
   \r
+  initialize: (options) ->\r
+    super(options)\r
+    @listenTo(@element, 'sort', @set_style)\r
+    @listenTo(@element, 'active', @active)\r
+    @listenTo(@element, 'inactive', @inactive)\r
+    @listenTo(@balloon, 'input:r', @input_r)\r
+    @listenTo(@balloon, 'input:x', @set_style)\r
+    @listenTo(@balloon, 'input:y', @set_style)\r
+    @listenTo(@balloon, 'input:width', @set_style)\r
+    @listenTo(@balloon, 'input:height', @set_style)\r
+  \r
+  render: () ->\r
+    super()\r
+    bln = @balloon\r
+    this.$el.draggable {\r
+      stop: (event, ui) ->\r
+        left = Math.floor($(@).position().left)\r
+        top = Math.floor($(@).position().top)\r
+        bln.set({x: left, y: top}, {silent: true})\r
+        bln.trigger('move')\r
+    }\r
+    this\r
+  \r
+  set_style: () ->\r
+    super()\r
+  \r
+  input_r: () ->\r
+    @trigger('input:r')\r
+  \r
+  active: () ->\r
+    $('.ui-resizable-handle', this.el).map ->\r
+      $(@).css('display', 'block')\r
+  \r
+  inactive: () ->\r
+    $('.ui-resizable-handle', this.el).map ->\r
+      $(@).css('display', 'none')\r
+  \r
+  element_class: (element) ->\r
+    Pettanr.Views[element.singular()].Element.Edit\r
+  \r
+  balloon_class: () ->\r
+    Pettanr.Views.Balloon.Element.Edit\r
+  \r
+  speech_class: () ->\r
+    Pettanr.Views.Speech.Element.Edit\r
+  \r