From: yasushiito Date: Sun, 21 Dec 2014 23:43:59 +0000 (+0900) Subject: try editor event dispatching X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=ed6c8f3dd0ed56cc3f636e9c0cca25b785ad6027 try editor event dispatching --- diff --git a/app/assets/javascripts/controllers/panels.js.coffee b/app/assets/javascripts/controllers/panels.js.coffee index 6fc280bd..66c174f7 100644 --- a/app/assets/javascripts/controllers/panels.js.coffee +++ b/app/assets/javascripts/controllers/panels.js.coffee @@ -46,16 +46,31 @@ class Pettanr.PanelsController extends Pettanr.AppController new: () -> @redraw_title(@params) @set_new() - editor = new Editor.PanelEditor({root_item: @item, operators: @operators}) - $("#pettanr").html(editor.render().el) + @editor() edit: () -> @redraw_title(@params) @set_model() @item = new Pettanr.Panel({id: @params['id']}, {with_elements: true}) @item.fetch({cache: false}).done => - editor = new Editor.PanelEditor({root_item: @item, operators: @operators}) - $("#pettanr").html(editor.render().el) + @q = {} + _.each @item.my_class().child_models(), (element_model) => + name = @item.my_class().my_manifest().associations.child_element_name(element_model) + if e = @item.get(name) + elm = new element_model(e) + @q[name + elm.dom_id()] = elm + @qf( ) + + qf: ( ) -> + _.each @q, (e, name) => + e.fetch({cache: true}).done => + delete @q[name] + if _.isEmpty(@q) + @editor() + + editor: () -> + editor = new Editor.PanelEditor({root_item: @item, operators: @operators}) + $("#pettanr").html(editor.render().el) create: () -> diff --git a/app/assets/javascripts/locmare/form/field.js.coffee b/app/assets/javascripts/locmare/form/field.js.coffee index 0208bd8b..82586f53 100644 --- a/app/assets/javascripts/locmare/form/field.js.coffee +++ b/app/assets/javascripts/locmare/form/field.js.coffee @@ -12,8 +12,9 @@ class Locmare.FormModule.Field extends Backbone.View @rb = @row_break() @options = {'data-model': @field_manifest.form_name} @on('change', @change) - @listenTo(@item(), 'resize', @refresh) - @listenTo(@item(), 'move', @refresh) + item = @item() + @listenTo(item, 'resize', @refresh) + @listenTo(item, 'move', @refresh) render: () -> this.$el.html('') diff --git a/app/assets/javascripts/models/panel_picture.js.coffee b/app/assets/javascripts/models/panel_picture.js.coffee index 01a2c5bf..22465d24 100644 --- a/app/assets/javascripts/models/panel_picture.js.coffee +++ b/app/assets/javascripts/models/panel_picture.js.coffee @@ -61,4 +61,7 @@ class Pettanr.PanelPicture extends Peta.Element initialize: () -> if @id @url = @url + @id + @bind('change:width', () -> + console.log('cng') + ) diff --git a/app/assets/javascripts/views/panel_pictures/element.js.coffee b/app/assets/javascripts/views/panel_pictures/element.js.coffee index ea1a192b..7ab0fa79 100644 --- a/app/assets/javascripts/views/panel_pictures/element.js.coffee +++ b/app/assets/javascripts/views/panel_pictures/element.js.coffee @@ -8,15 +8,16 @@ class Pettanr.Views.PanelPicture.Element extends Backbone.View @spot = options.spot img_class = @img_class() @img = new img_class({ + wrapper: this, element: @element, - spot: @spot, - picture: @element.picture() + spot: @spot }) + @element.fetch({cache: false}) render: () -> @attr = {style: Pettanr.to_style(@style())} this.$el.attr(@attr) - this.$el.html(@img.render().el) + this.$el.html(@img.clear().el) this style: () -> @@ -37,13 +38,17 @@ class Pettanr.Views.PanelPicture.Element.Img extends Backbone.View tagName: 'img' initialize: (options) -> + @wrapper = options.wrapper @element = options.element - @picture = options.picture @spot = options.spot + @picture = @element.picture() @listenTo(this, 'ready', @render) @picture.fetch({cache: true}).done => @trigger('ready') + clear: () -> + this + render: () -> this.$el.attr(@attr(@spot)) this @@ -70,12 +75,15 @@ class Pettanr.Views.PanelPicture.Element.Edit extends Pettanr.Views.PanelPicture render: () -> super() + img = @img + wrapper = this + elm = @element this.$el.draggable { - stop: (event, ui) => - left = @img.$el.parent().position().left + this.$el.position().left - top = @img.$el.parent().position().top + this.$el.position().top - @element.set({left: parseInt(left), top: parseInt(top)}, {silent: true}) - @element.trigger('move') + stop: (event, ui) -> + left = img.$el.parent().position().left + wrapper.$el.position().left + top = img.$el.parent().position().top + wrapper.$el.position().top + elm.set({x: parseInt(left), y: parseInt(top)}, {silent: true}) + elm.trigger('move') } this @@ -92,41 +100,40 @@ class Pettanr.Views.PanelPicture.Element.Img.Edit extends Pettanr.Views.PanelPic render: () -> super() + wrapper = @wrapper + elm = @element this.$el.resizable { - stop: (event, ui) => - resize_div = $(@) - panel_picture_div = resize_div.parent() - trace = editor.element_tag_id(panel_picture_div) + stop: (event, ui) -> + resize_div = ui.element + panel_picture_div = wrapper.$el resize_div.css('top', '0px') resize_div.css('left', '0px') + top = panel_picture_div.position().top if ui.originalPosition.top != ui.position.top - top = panel_picture_div.position().top + ui.position.top + top += ui.position.top #@element.set({y: Math.floor(top)}, {silent: true}) panel_picture_div.css('top', top.toString() + 'px') + left = panel_picture_div.position().left if ui.originalPosition.left != ui.position.left - left = panel_picture_div.position().left + ui.position.left - #@element.set({y: Math.floor(leftp)}, {silent: true}) + left += ui.position.left + #@element.set({y: leftp)}, {silent: true}) panel_picture_div.css('left', left.toString() + 'px') - width = if @element.get('width') < 0 + width = if elm.get('width') < 0 -ui.size.width else ui.size.width - height = if @element.get('height') < 0 + height = if elm.get('height') < 0 -ui.size.height else ui.size.height - @element.set({ - left: parseInt(left), - top: parseInt(top), + elm.set({ + x: Math.floor(left), + y: Math.floor(top), width: width, height: height }, {silent: true}) - @element.trigger('move') - resize: (event, ui) => - resize_div = $(@) - panel_picture_div = resize_div.parent() - trace = editor.element_tag_id(panel_picture_div) + elm.trigger('move') handles: 'all', autoHide: true }