From 424aeb2e2ad7838c783575a2d634e94082f2aed1 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Wed, 31 Dec 2014 09:36:20 +0900 Subject: [PATCH] fix editor event --- .../javascripts/controllers/panels.js.coffee | 15 +--- .../javascripts/editor/panel_editor.js.coffee | 16 +++++ .../javascripts/editor/panel_editor/dock.js.coffee | 84 ++++++++-------------- app/assets/javascripts/locmare/form.js.coffee | 11 +++ .../peta/element_nestable_content.js.coffee | 2 +- app/assets/javascripts/peta/root.js.coffee | 2 +- .../javascripts/views/balloons/element.js.coffee | 11 ++- .../views/ground_colors/element.js.coffee | 6 ++ .../views/ground_pictures/element.js.coffee | 6 ++ .../views/panel_pictures/element.js.coffee | 7 +- app/assets/javascripts/views/panels/body.js.coffee | 13 ++-- .../views/speech_balloons/element.js.coffee | 75 +++++++++++++------ .../javascripts/views/speeches/element.js.coffee | 17 +++-- 13 files changed, 164 insertions(+), 101 deletions(-) diff --git a/app/assets/javascripts/controllers/panels.js.coffee b/app/assets/javascripts/controllers/panels.js.coffee index 66c174f7..b23e65d1 100644 --- a/app/assets/javascripts/controllers/panels.js.coffee +++ b/app/assets/javascripts/controllers/panels.js.coffee @@ -53,20 +53,7 @@ class Pettanr.PanelsController extends Pettanr.AppController @set_model() @item = new Pettanr.Panel({id: @params['id']}, {with_elements: true}) @item.fetch({cache: false}).done => - @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: () -> editor = new Editor.PanelEditor({root_item: @item, operators: @operators}) diff --git a/app/assets/javascripts/editor/panel_editor.js.coffee b/app/assets/javascripts/editor/panel_editor.js.coffee index 4e52374a..3df8fc54 100644 --- a/app/assets/javascripts/editor/panel_editor.js.coffee +++ b/app/assets/javascripts/editor/panel_editor.js.coffee @@ -12,8 +12,24 @@ class Editor.PanelEditor extends Backbone.View }) @dock = new Editor.PanelEditor.Dock({parent: this}) @credits = new Pettanr.Views.Panel.Show.Credits({panel: @root_item()}) + _.each @panel.zorderd_elements(), (element) => + element.fetch({cache: true}).done => + console.log(element) + panel_element_view = @body.add_element(element) + dock_element_view = @dock.add_element(element) + @dig(element, panel_element_view, dock_element_view) + #@body.render() @body.on('panel:resize', @panel_resize) + dig: (element, panel_element_view, dock_element_view) -> + console.log(element.elements_items()) + _.each element.elements_items(), (child_element) => + console.log(child_element) + child_element.fetch({cache: true}).done => + child_panel_element_view = panel_element_view.add_element(child_element) + dock_element_view.add_element(child_element) + @dig(child_element, child_panel_element_view, dock_element_view) + render: () -> this.$el.html('') this.$el.append(@body.render().el) diff --git a/app/assets/javascripts/editor/panel_editor/dock.js.coffee b/app/assets/javascripts/editor/panel_editor/dock.js.coffee index fcb0d3df..2430f694 100644 --- a/app/assets/javascripts/editor/panel_editor/dock.js.coffee +++ b/app/assets/javascripts/editor/panel_editor/dock.js.coffee @@ -4,64 +4,40 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase initialize: (options) -> super(options) - tab = new Editor.EditorModule.DockModule.RootBay({ + @root = new Editor.EditorModule.DockModule.RootBay({ parent: this, index: 0, name: 'panel' }) @add_tab( - tab, + @root, new Editor.EditorModule.DockModule.TabModule.RootBayLabel({ - parent: tab, caption: 'panel' + parent: @root, caption: 'panel' }), new Editor.EditorModule.DockModule.TabModule.RootBayBody({ - parent: tab + parent: @root }) ) - tab = new Editor.EditorModule.DockModule.ElementBay({ + @element = new Editor.EditorModule.DockModule.ElementBay({ parent: this, index: 1, name: 'elements' }) @add_tab( - tab, + @element, new Editor.EditorModule.DockModule.TabModule.ElementBayLabel({ - parent: tab, caption: 'elements' + parent: @element, caption: 'elements' }), new Editor.EditorModule.DockModule.TabModule.ElementBayBody({ - parent: tab + parent: @element }) ) - tab = new Editor.EditorModule.DockModule.ScenarioBay({ + @scenario = new Editor.EditorModule.DockModule.ScenarioBay({ parent: this, index: 2, name: 'scenario' }) @add_tab( - tab, + @scenario, new Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel({ - parent: tab, caption: 'scenario' + parent: @scenario, caption: 'scenario' }), new Editor.EditorModule.DockModule.TabModule.ScenarioBayBody({ - parent: tab - }) - ) - tab = new Editor.EditorModule.DockModule.PriorityBay({ - parent: this, index: 3, name: 'priority' - }) - @add_tab( - tab, - new Editor.EditorModule.DockModule.TabModule.PriorityBayLabel({ - parent: tab, caption: 'priority' - }), - new Editor.EditorModule.DockModule.TabModule.PriorityBayBody({ - parent: tab - }) - ) - tab = new Editor.EditorModule.DockModule.NewBay({ - parent: this, index: 4, name: 'new' - }) - @add_tab( - tab, - new Editor.EditorModule.DockModule.TabModule.NewBayLabel({ - parent: tab, caption: 'new' - }), - new Editor.EditorModule.DockModule.TabModule.NewBayBody({ - parent: tab + parent: @scenario }) ) @@ -75,6 +51,9 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase this.$el.append(tab.render().el) this + add_element: (element) -> + @element.add_element(element) + editor: () -> @parent @@ -128,21 +107,19 @@ class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.Dock initialize: (options) -> super(options) - i = 0 - _.each @elements(), (element) => - @add_element(element) - i++ - add_element: (element, index) -> + add_element: (element) -> + index = element.get('z') - 1 tab = new Editor.EditorModule.DockModule.ElementBoard({ parent: this, index: index, name: element.item_name(), element: element }) + bb = new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab}) @add_tab( tab, new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({parent: tab, name: element.item_name()}), - new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab}) + bb ) - @panel_body().add_element(element) + bb render: () -> this.$el.html('') @@ -218,22 +195,23 @@ class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.E initialize: (options) -> super(options) - @form = Locmare.Bucket.factory( - @element().item_name(), - @element(), - @mounted(), - null, - @dock().editor().operators - ) - @bucket = new Editor.EditorModule.DockModule.FormBucket({ - parent: this, form: @form + @form = Locmare.Form.factory({ + form_name: @element().item_name(), + item: @element(), + mounted: @mounted(), + submit: null, + operators: @dock().editor().operators, + action: '/' + @element().table_name() + '/' + Pettanr.to_s(@element().get('id')) }) render: () -> this.$el.attr('id', @dom_id()) - this.$el.html(@bucket.render().el) + this.$el.html(@form.render().el) this + add_element: (element) -> + @form.add_element(element) + mounted: () -> true diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee index f9ec80f3..cd2a8e12 100644 --- a/app/assets/javascripts/locmare/form.js.coffee +++ b/app/assets/javascripts/locmare/form.js.coffee @@ -81,6 +81,17 @@ class Locmare.Form extends Locmare.FormBase @delegateEvents({'submit': method_type}) this + add_element: (element) -> + form = new Locmare.Form( + element.item_name(), + element, + @mounted, + null, + @operators + ) + this.$el.append( form.render().el) + form + init_fields: () -> _.each @manifest.field_names, (field_name) => field_manifest = @manifest.fields[field_name] diff --git a/app/assets/javascripts/peta/element_nestable_content.js.coffee b/app/assets/javascripts/peta/element_nestable_content.js.coffee index b9e4d1fe..8ffd52db 100644 --- a/app/assets/javascripts/peta/element_nestable_content.js.coffee +++ b/app/assets/javascripts/peta/element_nestable_content.js.coffee @@ -4,7 +4,7 @@ class Peta.ElementNestableContent extends Peta.Content @get(n) elements_items: () -> - r = _.map @my_class().child_models, (element_model) => + r = _.map @my_class().child_models(), (element_model) => @element_items(element_model) _.flatten(r) diff --git a/app/assets/javascripts/peta/root.js.coffee b/app/assets/javascripts/peta/root.js.coffee index 6e44a60e..ebc55226 100644 --- a/app/assets/javascripts/peta/root.js.coffee +++ b/app/assets/javascripts/peta/root.js.coffee @@ -9,7 +9,7 @@ class Peta.Root extends Peta.ElementNestableContent zorderd_elements: () -> res = [] - _.each @parts_element, (e) => + _.each @parts_element(), (e) => res[e.get('z')-1] = e res diff --git a/app/assets/javascripts/views/balloons/element.js.coffee b/app/assets/javascripts/views/balloons/element.js.coffee index bf63c6df..ffab95e1 100644 --- a/app/assets/javascripts/views/balloons/element.js.coffee +++ b/app/assets/javascripts/views/balloons/element.js.coffee @@ -17,11 +17,20 @@ class Pettanr.Views.Balloon.Element extends Backbone.View render: () -> attr = { src: @system_picture.r_url(), - alt: @element.get('caption') + alt: @element.get('caption'), + style: Pettanr.to_style(@style()) } this.$el.attr(attr) this + style: () -> + { + 'z-index': 2 + } + + add_element: (element) -> + null + class Pettanr.Views.Balloon.Element.Edit extends Pettanr.Views.Balloon.Element initialize: (options) -> diff --git a/app/assets/javascripts/views/ground_colors/element.js.coffee b/app/assets/javascripts/views/ground_colors/element.js.coffee index b56de6ab..89d0be29 100644 --- a/app/assets/javascripts/views/ground_colors/element.js.coffee +++ b/app/assets/javascripts/views/ground_colors/element.js.coffee @@ -7,6 +7,9 @@ class Pettanr.Views.GroundColor.Element extends Backbone.View @root = options.root @spot = options.spot + clear: () -> + this + render: () -> attr = { style: Pettanr.to_style(@style(@spot)) @@ -14,6 +17,9 @@ class Pettanr.Views.GroundColor.Element extends Backbone.View this.$el.attr(attr) this + add_element: (element) -> + null + div_offset: () -> if @element.get('xy') @element.get('xy') diff --git a/app/assets/javascripts/views/ground_pictures/element.js.coffee b/app/assets/javascripts/views/ground_pictures/element.js.coffee index fbec7687..fb4223dc 100644 --- a/app/assets/javascripts/views/ground_pictures/element.js.coffee +++ b/app/assets/javascripts/views/ground_pictures/element.js.coffee @@ -7,6 +7,9 @@ class Pettanr.Views.GroundPicture.Element extends Backbone.View @root = options.root @spot = options.spot + clear: () -> + this + render: () -> s = @style(@spot) _.extend(s, @style_wh()) @@ -16,6 +19,9 @@ class Pettanr.Views.GroundPicture.Element extends Backbone.View this.$el.attr(attr) this + add_element: (element) -> + null + style: (spot = null, opacity = 20) -> r = { position: 'absolute', diff --git a/app/assets/javascripts/views/panel_pictures/element.js.coffee b/app/assets/javascripts/views/panel_pictures/element.js.coffee index 81a8b743..a8e56cf8 100644 --- a/app/assets/javascripts/views/panel_pictures/element.js.coffee +++ b/app/assets/javascripts/views/panel_pictures/element.js.coffee @@ -12,7 +12,9 @@ class Pettanr.Views.PanelPicture.Element extends Backbone.View element: @element, spot: @spot }) - @element.fetch({cache: false}) + + clear: () -> + this render: () -> @attr = {style: Pettanr.to_style(@style())} @@ -20,6 +22,9 @@ class Pettanr.Views.PanelPicture.Element extends Backbone.View this.$el.html(@img.clear().el) this + add_element: (element) -> + null + style: () -> { 'top': Pettanr.to_s(@element.get('y')) + 'px', diff --git a/app/assets/javascripts/views/panels/body.js.coffee b/app/assets/javascripts/views/panels/body.js.coffee index 3694c8ba..32681bd8 100644 --- a/app/assets/javascripts/views/panels/body.js.coffee +++ b/app/assets/javascripts/views/panels/body.js.coffee @@ -13,10 +13,10 @@ class Pettanr.Views.Panel.Body extends Backbone.View render: () -> @restyle() - this.$el.html('') + #this.$el.html('') if @is_visible() - _.each @views, (view) => - this.$el.append(view.render().el) + #_.each @views, (view) => + #this.$el.append(view.render().el) else tag = new Tag.Div({ content: I18n.t('panels.hidden'), @@ -40,8 +40,13 @@ class Pettanr.Views.Panel.Body extends Backbone.View render_element: (index) -> add_element: (element) -> + index = element.get('z') - 1 c = @element_class(element) - @views[element.get('z')-1] = new c({element: element, root: @panel, spot: @spot}) + view = new c({element: element, root: @panel, spot: @spot}) + @views[index] = view + if @is_visible() + this.$el.append(view.render().el) + view element_class: (element) -> Pettanr.Views[element.singular()].Element diff --git a/app/assets/javascripts/views/speech_balloons/element.js.coffee b/app/assets/javascripts/views/speech_balloons/element.js.coffee index 1d480dd0..f0329e43 100644 --- a/app/assets/javascripts/views/speech_balloons/element.js.coffee +++ b/app/assets/javascripts/views/speech_balloons/element.js.coffee @@ -6,31 +6,49 @@ class Pettanr.Views.SpeechBalloon.Element extends Backbone.View @element = options.element @root = options.root @spot = options.spot - @balloon = @element.get('balloon') - @speech = @element.get('speech') - balloon_class = @balloon_class() - @balloon_view = new balloon_class({ - parent: this, - element: @balloon, - root: @root, - spot: @spot - }) - speech_class = @speech_class() - @speech_view = new speech_class({ - parent: this, - element: @speech, - root: @root, - spot: @spot - }) + @collect_views() + + collect_views: () -> + @views = [] + @add_element(@element.get('balloon')) + @add_element(@element.get('speech')) + + add_element: (element) -> + switch element.item_name() + when 'balloon' + @balloon = element + @set_style() + klass = @balloon_class() + view = new klass({ + parent: this, + element: element, + root: @root, + spot: @spot + }) + this.$el.append(view.clear().el) + when 'speech' + @speech = element + klass = @speech_class() + view = new klass({ + parent: this, + element: element, + root: @root, + spot: @spot + }) + this.$el.append(view.render().el) + view render: () -> - @attr = {style: Pettanr.to_style(@style())} - this.$el.attr(@attr) + @set_style() this.$el.html('') - this.$el.append(@balloon_view.clear().el) - this.$el.append(@speech_view.render().el) + _.each @views, (view) => + this.$el.append(view.clear().el) this + set_style: () -> + attr = {style: Pettanr.to_style(@style())} + this.$el.attr(attr) + style: () -> { width: Pettanr.to_s(@balloon.get('width')) + 'px', @@ -50,6 +68,8 @@ class Pettanr.Views.SpeechBalloon.Element.Edit extends Pettanr.Views.SpeechBallo initialize: (options) -> super(options) + @listenTo(this, 'active', @active) + @listenTo(this, 'inactive', @inactive) render: () -> super() @@ -63,6 +83,21 @@ class Pettanr.Views.SpeechBalloon.Element.Edit extends Pettanr.Views.SpeechBallo } this + collect_views: () -> + @views = [] # elements collect by dock + + set_style: () -> + if @balloon + super() + + active: () -> + $('.ui-resizable-handle', this.el).map -> + $(@).css('display', 'block') + + inactive: () -> + $('.ui-resizable-handle', this.el).map -> + $(@).css('display', 'none') + element_class: (element) -> Pettanr.Views[element.singular()].Element.Edit diff --git a/app/assets/javascripts/views/speeches/element.js.coffee b/app/assets/javascripts/views/speeches/element.js.coffee index 7ccb099c..f7d9fe82 100644 --- a/app/assets/javascripts/views/speeches/element.js.coffee +++ b/app/assets/javascripts/views/speeches/element.js.coffee @@ -15,18 +15,25 @@ class Pettanr.Views.Speech.Element extends Backbone.View class_name: 'pettanr-comic-speech-inner' }) + clear: () -> + @render() + render: () -> @outer_attr = {style: Pettanr.to_style(@outer_style())} this.$el.attr(@outer_attr) this.$el.html(@div.render().el) this + add_element: (element) -> + null + outer_style: () -> { top: @element.get('y'), left: @element.get('x'), width: @element.get('width'), - height: @element.get('height') + height: @element.get('height'), + 'z-index': 1 } inner_style: () -> @@ -43,12 +50,10 @@ class Pettanr.Views.Speech.Element.Edit extends Pettanr.Views.Speech.Element render: () -> super() - img = @speech_balloon.balloon_view.$el + sb = @speech_balloon @div.$el.mouseover -> - $('.ui-resizable-handle', img.parent()).map -> - $(@).css('display', 'block') + sb.trigger('active') @div.$el.mouseout -> - $('.ui-resizable-handle', img.parent()).map -> - $(@).css('display', 'none') + sb.trigger('inactive') this -- 2.11.0