OSDN Git Service

try editor event dispatching
authoryasushiito <yas@pen-chan.jp>
Sun, 21 Dec 2014 23:43:59 +0000 (08:43 +0900)
committeryasushiito <yas@pen-chan.jp>
Sun, 21 Dec 2014 23:43:59 +0000 (08:43 +0900)
app/assets/javascripts/controllers/panels.js.coffee
app/assets/javascripts/locmare/form/field.js.coffee
app/assets/javascripts/models/panel_picture.js.coffee
app/assets/javascripts/views/panel_pictures/element.js.coffee

index 6fc280b..66c174f 100644 (file)
@@ -46,16 +46,31 @@ class Pettanr.PanelsController extends Pettanr.AppController
   new: () ->\r
     @redraw_title(@params)\r
     @set_new()\r
-    editor = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
-    $("#pettanr").html(editor.render().el)\r
+    @editor()\r
   \r
   edit: () ->\r
     @redraw_title(@params)\r
     @set_model()\r
     @item = new Pettanr.Panel({id: @params['id']}, {with_elements: true})\r
     @item.fetch({cache: false}).done =>\r
-      editor = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
-      $("#pettanr").html(editor.render().el)\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
+  \r
+  editor: () ->\r
+    editor = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
+    $("#pettanr").html(editor.render().el)\r
   \r
   create: () ->\r
   \r
index 0208bd8..82586f5 100644 (file)
@@ -12,8 +12,9 @@ class Locmare.FormModule.Field extends Backbone.View
     @rb = @row_break()\r
     @options = {'data-model': @field_manifest.form_name}\r
     @on('change', @change)\r
-    @listenTo(@item(), 'resize', @refresh)\r
-    @listenTo(@item(), 'move', @refresh)\r
+    item = @item()\r
+    @listenTo(item, 'resize', @refresh)\r
+    @listenTo(item, 'move', @refresh)\r
   \r
   render: () ->\r
     this.$el.html('')\r
index 01a2c5b..22465d2 100644 (file)
@@ -61,4 +61,7 @@ class Pettanr.PanelPicture extends Peta.Element
   initialize: () ->\r
     if @id\r
       @url = @url + @id\r
+    @bind('change:width', () ->\r
+      console.log('cng')\r
+    )\r
   \r
index ea1a192..7ab0fa7 100644 (file)
@@ -8,15 +8,16 @@ class Pettanr.Views.PanelPicture.Element extends Backbone.View
     @spot = options.spot\r
     img_class = @img_class()\r
     @img = new img_class({\r
+      wrapper: this,\r
       element: @element,\r
-      spot: @spot,\r
-      picture: @element.picture()\r
+      spot: @spot\r
     })\r
+    @element.fetch({cache: false})\r
   \r
   render: () ->\r
     @attr = {style: Pettanr.to_style(@style())}\r
     this.$el.attr(@attr)\r
-    this.$el.html(@img.render().el)\r
+    this.$el.html(@img.clear().el)\r
     this\r
   \r
   style: () ->\r
@@ -37,13 +38,17 @@ class Pettanr.Views.PanelPicture.Element.Img extends Backbone.View
   tagName: 'img'\r
   \r
   initialize: (options) ->\r
+    @wrapper = options.wrapper\r
     @element = options.element\r
-    @picture = options.picture\r
     @spot = options.spot\r
+    @picture = @element.picture()\r
     @listenTo(this, 'ready', @render)\r
     @picture.fetch({cache: true}).done =>\r
       @trigger('ready')\r
   \r
+  clear: () ->\r
+    this\r
+  \r
   render: () ->\r
     this.$el.attr(@attr(@spot))\r
     this\r
@@ -70,12 +75,15 @@ class Pettanr.Views.PanelPicture.Element.Edit extends Pettanr.Views.PanelPicture
   \r
   render: () ->\r
     super()\r
+    img = @img\r
+    wrapper = this\r
+    elm = @element\r
     this.$el.draggable {\r
-      stop: (event, ui) =>\r
-        left = @img.$el.parent().position().left + this.$el.position().left\r
-        top = @img.$el.parent().position().top + this.$el.position().top\r
-        @element.set({left: parseInt(left), top: parseInt(top)}, {silent: true})\r
-        @element.trigger('move')\r
+      stop: (event, ui) ->\r
+        left = img.$el.parent().position().left + wrapper.$el.position().left\r
+        top = img.$el.parent().position().top + wrapper.$el.position().top\r
+        elm.set({x: parseInt(left), y: parseInt(top)}, {silent: true})\r
+        elm.trigger('move')\r
     }\r
     this\r
   \r
@@ -92,41 +100,40 @@ class Pettanr.Views.PanelPicture.Element.Img.Edit extends Pettanr.Views.PanelPic
   \r
   render: () ->\r
     super()\r
+    wrapper = @wrapper\r
+    elm = @element\r
     this.$el.resizable {\r
-      stop: (event, ui) =>\r
-        resize_div = $(@)\r
-        panel_picture_div = resize_div.parent()\r
-        trace = editor.element_tag_id(panel_picture_div)\r
+      stop: (event, ui) ->\r
+        resize_div = ui.element\r
+        panel_picture_div = wrapper.$el\r
         \r
         resize_div.css('top', '0px')\r
         resize_div.css('left', '0px')\r
+        top = panel_picture_div.position().top\r
         if ui.originalPosition.top != ui.position.top\r
-          top = panel_picture_div.position().top + ui.position.top\r
+          top += ui.position.top\r
           #@element.set({y: Math.floor(top)}, {silent: true})\r
           panel_picture_div.css('top', top.toString() + 'px')\r
+        left = panel_picture_div.position().left\r
         if ui.originalPosition.left != ui.position.left\r
-          left = panel_picture_div.position().left + ui.position.left\r
-          #@element.set({y: Math.floor(leftp)}, {silent: true})\r
+          left += ui.position.left\r
+          #@element.set({y: leftp)}, {silent: true})\r
           panel_picture_div.css('left', left.toString() + 'px')\r
-        width = if @element.get('width') < 0\r
+        width = if elm.get('width') < 0\r
           -ui.size.width\r
         else\r
           ui.size.width\r
-        height = if @element.get('height') < 0\r
+        height = if elm.get('height') < 0\r
           -ui.size.height\r
         else\r
           ui.size.height\r
-        @element.set({\r
-          left: parseInt(left), \r
-          top: parseInt(top), \r
+        elm.set({\r
+          x: Math.floor(left), \r
+          y: Math.floor(top), \r
           width: width, \r
           height: height\r
         }, {silent: true})\r
-        @element.trigger('move')\r
-      resize: (event, ui) =>\r
-        resize_div = $(@)\r
-        panel_picture_div = resize_div.parent()\r
-        trace = editor.element_tag_id(panel_picture_div)\r
+        elm.trigger('move')\r
       handles: 'all',\r
       autoHide: true\r
     }\r