OSDN Git Service

fix editor event
authoryasushiito <yas@pen-chan.jp>
Wed, 31 Dec 2014 00:36:20 +0000 (09:36 +0900)
committeryasushiito <yas@pen-chan.jp>
Wed, 31 Dec 2014 00:36:20 +0000 (09:36 +0900)
13 files changed:
app/assets/javascripts/controllers/panels.js.coffee
app/assets/javascripts/editor/panel_editor.js.coffee
app/assets/javascripts/editor/panel_editor/dock.js.coffee
app/assets/javascripts/locmare/form.js.coffee
app/assets/javascripts/peta/element_nestable_content.js.coffee
app/assets/javascripts/peta/root.js.coffee
app/assets/javascripts/views/balloons/element.js.coffee
app/assets/javascripts/views/ground_colors/element.js.coffee
app/assets/javascripts/views/ground_pictures/element.js.coffee
app/assets/javascripts/views/panel_pictures/element.js.coffee
app/assets/javascripts/views/panels/body.js.coffee
app/assets/javascripts/views/speech_balloons/element.js.coffee
app/assets/javascripts/views/speeches/element.js.coffee

index 66c174f..b23e65d 100644 (file)
@@ -53,20 +53,7 @@ class Pettanr.PanelsController extends Pettanr.AppController
     @set_model()\r
     @item = new Pettanr.Panel({id: @params['id']}, {with_elements: true})\r
     @item.fetch({cache: false}).done =>\r
-      @q = {}\r
-      _.each @item.my_class().child_models(), (element_model) =>\r
-        name = @item.my_class().my_manifest().associations.child_element_name(element_model)\r
-        if e = @item.get(name)\r
-          elm = new element_model(e)\r
-          @q[name + elm.dom_id()] = elm\r
-      @qf( )\r
-  \r
-  qf: ( ) ->\r
-    _.each @q, (e, name) =>\r
-      e.fetch({cache: true}).done =>\r
-        delete @q[name]\r
-        if _.isEmpty(@q)\r
-          @editor()\r
+      @editor()\r
   \r
   editor: () ->\r
     editor = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
index 4e52374..3df8fc5 100644 (file)
@@ -12,8 +12,24 @@ class Editor.PanelEditor extends Backbone.View
     })\r
     @dock = new Editor.PanelEditor.Dock({parent: this})\r
     @credits = new Pettanr.Views.Panel.Show.Credits({panel: @root_item()})\r
+    _.each @panel.zorderd_elements(), (element) =>\r
+      element.fetch({cache: true}).done =>\r
+        console.log(element)\r
+        panel_element_view = @body.add_element(element)\r
+        dock_element_view = @dock.add_element(element)\r
+        @dig(element, panel_element_view, dock_element_view)\r
+        #@body.render()\r
     @body.on('panel:resize', @panel_resize)\r
   \r
+  dig: (element, panel_element_view, dock_element_view) ->\r
+    console.log(element.elements_items())\r
+    _.each element.elements_items(), (child_element) =>\r
+      console.log(child_element)\r
+      child_element.fetch({cache: true}).done =>\r
+        child_panel_element_view = panel_element_view.add_element(child_element)\r
+        dock_element_view.add_element(child_element)\r
+        @dig(child_element, child_panel_element_view, dock_element_view)\r
+  \r
   render: () ->\r
     this.$el.html('')\r
     this.$el.append(@body.render().el)\r
index fcb0d3d..2430f69 100644 (file)
@@ -4,64 +4,40 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase
   \r
   initialize: (options) ->\r
     super(options)\r
-    tab = new Editor.EditorModule.DockModule.RootBay({\r
+    @root = new Editor.EditorModule.DockModule.RootBay({\r
       parent: this, index: 0, name: 'panel'\r
     })\r
     @add_tab(\r
-      tab\r
+      @root\r
       new Editor.EditorModule.DockModule.TabModule.RootBayLabel({\r
-        parent: tab, caption: 'panel'\r
+        parent: @root, caption: 'panel'\r
       }), \r
       new Editor.EditorModule.DockModule.TabModule.RootBayBody({\r
-        parent: tab\r
+        parent: @root\r
       })\r
     )\r
-    tab = new Editor.EditorModule.DockModule.ElementBay({\r
+    @element = new Editor.EditorModule.DockModule.ElementBay({\r
       parent: this, index: 1, name: 'elements'\r
     })\r
     @add_tab(\r
-      tab\r
+      @element\r
       new Editor.EditorModule.DockModule.TabModule.ElementBayLabel({\r
-        parent: tab, caption: 'elements'\r
+        parent: @element, caption: 'elements'\r
       }), \r
       new Editor.EditorModule.DockModule.TabModule.ElementBayBody({\r
-        parent: tab\r
+        parent: @element\r
       })\r
     )\r
-    tab = new Editor.EditorModule.DockModule.ScenarioBay({\r
+    @scenario = new Editor.EditorModule.DockModule.ScenarioBay({\r
       parent: this, index: 2, name: 'scenario'\r
     })\r
     @add_tab(\r
-      tab\r
+      @scenario\r
       new Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel({\r
-        parent: tab, caption: 'scenario'\r
+        parent: @scenario, caption: 'scenario'\r
       }), \r
       new Editor.EditorModule.DockModule.TabModule.ScenarioBayBody({\r
-        parent: tab\r
-      })\r
-    )\r
-    tab = new Editor.EditorModule.DockModule.PriorityBay({\r
-      parent: this, index: 3, name: 'priority'\r
-    })\r
-    @add_tab(\r
-      tab, \r
-      new Editor.EditorModule.DockModule.TabModule.PriorityBayLabel({\r
-        parent: tab, caption: 'priority'\r
-      }), \r
-      new Editor.EditorModule.DockModule.TabModule.PriorityBayBody({\r
-        parent: tab\r
-      })\r
-    )\r
-    tab = new Editor.EditorModule.DockModule.NewBay({\r
-      parent: this, index: 4, name: 'new'\r
-    })\r
-    @add_tab(\r
-      tab, \r
-      new Editor.EditorModule.DockModule.TabModule.NewBayLabel({\r
-        parent: tab, caption: 'new'\r
-      }), \r
-      new Editor.EditorModule.DockModule.TabModule.NewBayBody({\r
-        parent: tab\r
+        parent: @scenario\r
       })\r
     )\r
   \r
@@ -75,6 +51,9 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase
       this.$el.append(tab.render().el)\r
     this\r
   \r
+  add_element: (element) ->\r
+    @element.add_element(element)\r
+  \r
   editor: () ->\r
     @parent\r
   \r
@@ -128,21 +107,19 @@ class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.Dock
   \r
   initialize: (options) ->\r
     super(options)\r
-    i = 0\r
-    _.each @elements(), (element) =>\r
-      @add_element(element)\r
-      i++\r
   \r
-  add_element: (element, index) ->\r
+  add_element: (element) ->\r
+    index = element.get('z') - 1\r
     tab = new Editor.EditorModule.DockModule.ElementBoard({\r
       parent: this, index: index, name: element.item_name(), element: element\r
     })\r
+    bb = new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab})\r
     @add_tab(\r
       tab, \r
       new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({parent: tab, name: element.item_name()}), \r
-      new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab})\r
+      bb\r
     )\r
-    @panel_body().add_element(element)\r
+    bb\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -218,22 +195,23 @@ class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.E
   \r
   initialize: (options) ->\r
     super(options)\r
-    @form = Locmare.Bucket.factory(\r
-      @element().item_name(), \r
-      @element(), \r
-      @mounted(), \r
-      null, \r
-      @dock().editor().operators\r
-    )\r
-    @bucket = new Editor.EditorModule.DockModule.FormBucket({\r
-      parent: this, form: @form\r
+    @form = Locmare.Form.factory({\r
+      form_name: @element().item_name(), \r
+      item: @element(), \r
+      mounted: @mounted(), \r
+      submit: null, \r
+      operators: @dock().editor().operators,\r
+      action: '/' + @element().table_name() + '/' + Pettanr.to_s(@element().get('id'))\r
     })\r
   \r
   render: () ->\r
     this.$el.attr('id', @dom_id())\r
-    this.$el.html(@bucket.render().el)\r
+    this.$el.html(@form.render().el)\r
     this\r
   \r
+  add_element: (element) ->\r
+    @form.add_element(element)\r
+  \r
   mounted: () ->\r
     true\r
   \r
index f9ec80f..cd2a8e1 100644 (file)
@@ -81,6 +81,17 @@ class Locmare.Form extends Locmare.FormBase
       @delegateEvents({'submit': method_type})\r
     this\r
   \r
+  add_element: (element) ->\r
+    form = new Locmare.Form(\r
+      element.item_name(), \r
+      element, \r
+      @mounted, \r
+      null, \r
+      @operators\r
+    )\r
+    this.$el.append( form.render().el)\r
+    form\r
+  \r
   init_fields: () ->\r
     _.each @manifest.field_names, (field_name) =>\r
       field_manifest = @manifest.fields[field_name]\r
index b9e4d1f..8ffd52d 100644 (file)
@@ -4,7 +4,7 @@ class Peta.ElementNestableContent extends Peta.Content
     @get(n)\r
   \r
   elements_items: () ->\r
-    r = _.map @my_class().child_models, (element_model) =>\r
+    r = _.map @my_class().child_models(), (element_model) =>\r
       @element_items(element_model)\r
     _.flatten(r)\r
   \r
index 6e44a60..ebc5522 100644 (file)
@@ -9,7 +9,7 @@ class Peta.Root extends Peta.ElementNestableContent
   \r
   zorderd_elements: () ->\r
     res = []\r
-    _.each @parts_element, (e) =>\r
+    _.each @parts_element(), (e) =>\r
       res[e.get('z')-1] = e\r
     res\r
   \r
index bf63c6d..ffab95e 100644 (file)
@@ -17,11 +17,20 @@ class Pettanr.Views.Balloon.Element extends Backbone.View
   render: () ->\r
     attr = {\r
       src: @system_picture.r_url(), \r
-      alt: @element.get('caption')\r
+      alt: @element.get('caption'),\r
+      style: Pettanr.to_style(@style())\r
     }\r
     this.$el.attr(attr)\r
     this\r
   \r
+  style: () ->\r
+    {\r
+      'z-index': 2\r
+    }\r
+  \r
+  add_element: (element) ->\r
+    null\r
+  \r
 class Pettanr.Views.Balloon.Element.Edit extends Pettanr.Views.Balloon.Element\r
   \r
   initialize: (options) ->\r
index b56de6a..89d0be2 100644 (file)
@@ -7,6 +7,9 @@ class Pettanr.Views.GroundColor.Element extends Backbone.View
     @root = options.root\r
     @spot = options.spot\r
   \r
+  clear: () ->\r
+    this\r
+  \r
   render: () ->\r
     attr = {\r
       style: Pettanr.to_style(@style(@spot))\r
@@ -14,6 +17,9 @@ class Pettanr.Views.GroundColor.Element extends Backbone.View
     this.$el.attr(attr)\r
     this\r
   \r
+  add_element: (element) ->\r
+    null\r
+  \r
   div_offset: () ->\r
     if @element.get('xy')\r
       @element.get('xy')\r
index fbec768..fb4223d 100644 (file)
@@ -7,6 +7,9 @@ class Pettanr.Views.GroundPicture.Element extends Backbone.View
     @root = options.root\r
     @spot = options.spot\r
   \r
+  clear: () ->\r
+    this\r
+  \r
   render: () ->\r
     s = @style(@spot)\r
     _.extend(s, @style_wh())\r
@@ -16,6 +19,9 @@ class Pettanr.Views.GroundPicture.Element extends Backbone.View
     this.$el.attr(attr)\r
     this\r
   \r
+  add_element: (element) ->\r
+    null\r
+  \r
   style: (spot = null, opacity = 20) ->\r
     r = {\r
       position: 'absolute', \r
index 81a8b74..a8e56cf 100644 (file)
@@ -12,7 +12,9 @@ class Pettanr.Views.PanelPicture.Element extends Backbone.View
       element: @element,\r
       spot: @spot\r
     })\r
-    @element.fetch({cache: false})\r
+  \r
+  clear: () ->\r
+    this\r
   \r
   render: () ->\r
     @attr = {style: Pettanr.to_style(@style())}\r
@@ -20,6 +22,9 @@ class Pettanr.Views.PanelPicture.Element extends Backbone.View
     this.$el.html(@img.clear().el)\r
     this\r
   \r
+  add_element: (element) ->\r
+    null\r
+  \r
   style: () ->\r
     {\r
       'top': Pettanr.to_s(@element.get('y')) + 'px',\r
index 3694c8b..32681bd 100644 (file)
@@ -13,10 +13,10 @@ class Pettanr.Views.Panel.Body extends Backbone.View
   \r
   render: () ->\r
     @restyle()\r
-    this.$el.html('')\r
+    #this.$el.html('')\r
     if @is_visible()\r
-      _.each @views, (view) =>\r
-        this.$el.append(view.render().el)\r
+      #_.each @views, (view) =>\r
+       #this.$el.append(view.render().el)\r
     else\r
       tag = new Tag.Div({\r
         content: I18n.t('panels.hidden'), \r
@@ -40,8 +40,13 @@ class Pettanr.Views.Panel.Body extends Backbone.View
   render_element: (index) ->\r
   \r
   add_element: (element) ->\r
+    index = element.get('z') - 1\r
     c = @element_class(element)\r
-    @views[element.get('z')-1] = new c({element: element, root: @panel, spot: @spot})\r
+    view = new c({element: element, root: @panel, spot: @spot})\r
+    @views[index] = view\r
+    if @is_visible()\r
+      this.$el.append(view.render().el)\r
+    view\r
   \r
   element_class: (element) ->\r
     Pettanr.Views[element.singular()].Element\r
index 1d480dd..f0329e4 100644 (file)
@@ -6,31 +6,49 @@ class Pettanr.Views.SpeechBalloon.Element extends Backbone.View
     @element = options.element\r
     @root = options.root\r
     @spot = options.spot\r
-    @balloon = @element.get('balloon')\r
-    @speech = @element.get('speech')\r
-    balloon_class = @balloon_class()\r
-    @balloon_view = new balloon_class({\r
-      parent: this, \r
-      element: @balloon, \r
-      root: @root,\r
-      spot: @spot\r
-    })\r
-    speech_class = @speech_class()\r
-    @speech_view = new speech_class({\r
-      parent: this, \r
-      element: @speech, \r
-      root: @root,\r
-      spot: @spot\r
-    })\r
+    @collect_views()\r
+  \r
+  collect_views: () ->\r
+    @views = []\r
+    @add_element(@element.get('balloon'))\r
+    @add_element(@element.get('speech'))\r
+  \r
+  add_element: (element) ->\r
+    switch element.item_name()\r
+      when 'balloon'\r
+        @balloon = element\r
+        @set_style()\r
+        klass = @balloon_class()\r
+        view = new klass({\r
+          parent: this, \r
+          element: element, \r
+          root: @root,\r
+          spot: @spot\r
+        })\r
+        this.$el.append(view.clear().el)\r
+      when 'speech'\r
+        @speech = element\r
+        klass = @speech_class()\r
+        view = new klass({\r
+          parent: this, \r
+          element: element, \r
+          root: @root,\r
+          spot: @spot\r
+        })\r
+        this.$el.append(view.render().el)\r
+    view\r
   \r
   render: () ->\r
-    @attr = {style: Pettanr.to_style(@style())}\r
-    this.$el.attr(@attr)\r
+    @set_style()\r
     this.$el.html('')\r
-    this.$el.append(@balloon_view.clear().el)\r
-    this.$el.append(@speech_view.render().el)\r
+    _.each @views, (view) =>\r
+      this.$el.append(view.clear().el)\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
@@ -50,6 +68,8 @@ class Pettanr.Views.SpeechBalloon.Element.Edit extends Pettanr.Views.SpeechBallo
   \r
   initialize: (options) ->\r
     super(options)\r
+    @listenTo(this, 'active', @active)\r
+    @listenTo(this, 'inactive', @inactive)\r
   \r
   render: () ->\r
     super()\r
@@ -63,6 +83,21 @@ class Pettanr.Views.SpeechBalloon.Element.Edit extends Pettanr.Views.SpeechBallo
     }\r
     this\r
   \r
+  collect_views: () ->\r
+    @views = []  # elements collect by dock\r
+  \r
+  set_style: () ->\r
+    if @balloon\r
+      super()\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
index 7ccb099..f7d9fe8 100644 (file)
@@ -15,18 +15,25 @@ class Pettanr.Views.Speech.Element extends Backbone.View
       class_name: 'pettanr-comic-speech-inner'\r
     })\r
   \r
+  clear: () ->\r
+    @render()\r
+  \r
   render: () ->\r
     @outer_attr = {style: Pettanr.to_style(@outer_style())}\r
     this.$el.attr(@outer_attr)\r
     this.$el.html(@div.render().el)\r
     this\r
   \r
+  add_element: (element) ->\r
+    null\r
+  \r
   outer_style: () ->\r
     {\r
       top: @element.get('y'), \r
       left: @element.get('x'), \r
       width: @element.get('width'), \r
-      height: @element.get('height')\r
+      height: @element.get('height'),\r
+      'z-index': 1\r
     }\r
   \r
   inner_style: () ->\r
@@ -43,12 +50,10 @@ class Pettanr.Views.Speech.Element.Edit extends Pettanr.Views.Speech.Element
   \r
   render: () ->\r
     super()\r
-    img = @speech_balloon.balloon_view.$el\r
+    sb = @speech_balloon\r
     @div.$el.mouseover -> \r
-      $('.ui-resizable-handle', img.parent()).map ->\r
-        $(@).css('display', 'block')\r
+      sb.trigger('active')\r
     @div.$el.mouseout -> \r
-      $('.ui-resizable-handle', img.parent()).map ->\r
-        $(@).css('display', 'none')\r
+      sb.trigger('inactive')\r
     this\r
   \r