From 7cc9010daab46f2f6ae0b0314904ad9704022e7f Mon Sep 17 00:00:00 2001 From: yasushiito Date: Thu, 26 Mar 2015 17:54:41 +0900 Subject: [PATCH] fix: new speechballoon --- .../addons/circle_speech_balloons/init.js.coffee | 25 ++++------ .../addons/plain_speech_balloons/init.js.coffee | 26 ++++------ .../addons/square_speech_balloons/init.js.coffee | 25 ++++------ .../javascripts/editor/panel_editor.js.coffee | 9 +++- .../javascripts/editor/panel_editor/dock.js.coffee | 4 +- .../editor/panel_editor/element/boards.js.coffee | 6 --- app/assets/javascripts/locmare/form.js.coffee | 25 ++++++---- app/assets/javascripts/models/balloon.js.coffee | 12 ++++- .../javascripts/models/ground_color.js.coffee | 15 +++++- .../javascripts/models/ground_picture.js.coffee | 22 ++++++++- .../javascripts/models/panel_picture.js.coffee | 12 +++-- app/assets/javascripts/models/speech.js.coffee | 19 +++++++- .../javascripts/models/speech_balloon.js.coffee | 28 ++++++++++- app/assets/javascripts/peta/item.js.coffee | 5 +- .../views/ground_colors/new_element.js.coffee | 45 +++++++++++++---- .../views/ground_pictures/new_element.js.coffee | 31 ++++++++++-- .../views/panel_pictures/new_element.js.coffee | 23 ++------- .../views/speech_balloons/new_element.js.coffee | 57 ++++++++++++++++++++-- app/models/speech.rb | 1 + 19 files changed, 274 insertions(+), 116 deletions(-) diff --git a/app/assets/javascripts/addons/circle_speech_balloons/init.js.coffee b/app/assets/javascripts/addons/circle_speech_balloons/init.js.coffee index 38777a94..51e22d8c 100644 --- a/app/assets/javascripts/addons/circle_speech_balloons/init.js.coffee +++ b/app/assets/javascripts/addons/circle_speech_balloons/init.js.coffee @@ -82,11 +82,8 @@ class Pettanr.CircleSpeechBalloon.Speech extends Backbone.Model @engine_name() + '/speeches' class Pettanr.CircleSpeechBalloon.SpeechBalloonModule - supply_default: () -> - super() - sbt = @speech_balloon_template() - sbt.fetch({cache: true}).done => - @speech_balloon_template_module_name = sbt.get('module_name') + supply_default: (templates) -> + @templates = templates speech_balloon_extend: () -> @new_speech_balloon() if not @sbex @@ -102,9 +99,8 @@ class Pettanr.CircleSpeechBalloon.SpeechBalloonModule @sbex.supply_default() class Pettanr.CircleSpeechBalloon.BalloonModule - supply_default: () -> - super() - s = @parsed_settings()['all']['balloon'] + supply_default: (templates) -> + @templates = templates @set({ x: 0, y: 0, @@ -112,6 +108,7 @@ class Pettanr.CircleSpeechBalloon.BalloonModule eight: @parsed_settings()['speech_balloon']['default_height'], r: @parsed_settings()['speech_balloon']['default_r'] }) + @select_system_picture() balloon_extend: () -> @new_balloon() if not @bex @@ -128,9 +125,7 @@ class Pettanr.CircleSpeechBalloon.BalloonModule parsed_settings: () -> return @parsed if @parsed - sbt = @speech_balloon_template() - sbt.fetch({cache: true}).done => - @parsed = sbt.parsed_settings() + @parsed = @templates.speech_balloon_template.parsed_settings() select_system_picture: () -> tr = @get('r') % 360 @@ -145,8 +140,8 @@ class Pettanr.CircleSpeechBalloon.BalloonModule @parsed_settings()['speech_balloon']['r_step'] class Pettanr.CircleSpeechBalloon.SpeechModule - supply_default: () -> - super() + supply_default: (templates) -> + @templates = templates s = @parsed_settings()['0']['speech'] @set({ x: s['x_rate'], @@ -173,9 +168,7 @@ class Pettanr.CircleSpeechBalloon.SpeechModule parsed_settings: () -> return @parsed if @parsed - sbt = @speech_balloon_template() - sbt.fetch({cache: true}).done => - @parsed = sbt.parsed_settings() + @parsed = @templates.speech_balloon_template.parsed_settings() arrayed_quotes: () -> q = if Pettanr.is_blank(@get('quotes')) diff --git a/app/assets/javascripts/addons/plain_speech_balloons/init.js.coffee b/app/assets/javascripts/addons/plain_speech_balloons/init.js.coffee index 4bcf8a95..37a8de01 100644 --- a/app/assets/javascripts/addons/plain_speech_balloons/init.js.coffee +++ b/app/assets/javascripts/addons/plain_speech_balloons/init.js.coffee @@ -82,11 +82,8 @@ class Pettanr.PlainSpeechBalloon.Speech extends Backbone.Model @engine_name() + '/speeches' class Pettanr.PlainSpeechBalloon.SpeechBalloonModule - supply_default: () -> - super() - sbt = @speech_balloon_template() - sbt.fetch({cache: true}).done => - @speech_balloon_template_module_name = sbt.get('module_name') + supply_default: (templates) -> + @templates = templates speech_balloon_extend: () -> @new_speech_balloon() if not @sbex @@ -99,12 +96,10 @@ class Pettanr.PlainSpeechBalloon.SpeechBalloonModule new_speech_balloon: (params = {}) -> @sbex = new Pettanr.PlainSpeechBalloon.SpeechBalloon(params) - @sbex.supply_default() class Pettanr.PlainSpeechBalloon.BalloonModule - supply_default: () -> - super() - s = @parsed_settings()['all']['balloon'] + supply_default: (templates) -> + @templates = templates @set({ x: 0, y: 0, @@ -112,6 +107,7 @@ class Pettanr.PlainSpeechBalloon.BalloonModule eight: @parsed_settings()['speech_balloon']['default_height'], r: 0 }) + @select_system_picture() balloon_extend: () -> @new_balloon() if not @bex @@ -128,9 +124,7 @@ class Pettanr.PlainSpeechBalloon.BalloonModule parsed_settings: () -> return @parsed if @parsed - sbt = @speech_balloon_template() - sbt.fetch({cache: true}).done => - @parsed = sbt.parsed_settings() + @parsed = @templates.speech_balloon_template.parsed_settings() select_system_picture: () -> s = @parsed_settings()['all']['balloon'] @@ -139,8 +133,8 @@ class Pettanr.PlainSpeechBalloon.BalloonModule sid class Pettanr.PlainSpeechBalloon.SpeechModule - supply_default: () -> - super() + supply_default: (templates) -> + @templates = templates s = @parsed_settings()['all']['speech'] @set({ x: s['x_rate'], @@ -167,9 +161,7 @@ class Pettanr.PlainSpeechBalloon.SpeechModule parsed_settings: () -> return @parsed if @parsed - sbt = @speech_balloon_template() - sbt.fetch({cache: true}).done => - @parsed = sbt.parsed_settings() + @parsed = @templates.speech_balloon_template.parsed_settings() arrayed_quotes: () -> q = if Pettanr.is_blank(@get('quotes')) diff --git a/app/assets/javascripts/addons/square_speech_balloons/init.js.coffee b/app/assets/javascripts/addons/square_speech_balloons/init.js.coffee index 2fd53659..07669f63 100644 --- a/app/assets/javascripts/addons/square_speech_balloons/init.js.coffee +++ b/app/assets/javascripts/addons/square_speech_balloons/init.js.coffee @@ -82,11 +82,8 @@ class Pettanr.SquareSpeechBalloon.Speech extends Backbone.Model @engine_name() + '/speeches' class Pettanr.SquareSpeechBalloon.SpeechBalloonModule - supply_default: () -> - super() - sbt = @speech_balloon_template() - sbt.fetch({cache: true}).done => - @speech_balloon_template_module_name = sbt.get('module_name') + supply_default: (templates) -> + @templates = templates speech_balloon_extend: () -> @new_speech_balloon() if not @sbex @@ -102,9 +99,8 @@ class Pettanr.SquareSpeechBalloon.SpeechBalloonModule @sbex.supply_default() class Pettanr.SquareSpeechBalloon.BalloonModule - supply_default: () -> - super() - s = @parsed_settings()['all']['balloon'] + supply_default: (templates) -> + @templates = templates @set({ x: 0, y: 0, @@ -112,6 +108,7 @@ class Pettanr.SquareSpeechBalloon.BalloonModule eight: @parsed_settings()['speech_balloon']['default_height'], r: 0 }) + @select_system_picture() balloon_extend: () -> @new_balloon() if not @bex @@ -128,9 +125,7 @@ class Pettanr.SquareSpeechBalloon.BalloonModule parsed_settings: () -> return @parsed if @parsed - sbt = @speech_balloon_template() - sbt.fetch({cache: true}).done => - @parsed = sbt.parsed_settings() + @parsed = @templates.speech_balloon_template.parsed_settings() select_system_picture: () -> s = @parsed_settings()['all']['balloon'] @@ -139,8 +134,8 @@ class Pettanr.SquareSpeechBalloon.BalloonModule sid class Pettanr.SquareSpeechBalloon.SpeechModule - supply_default: () -> - super() + supply_default: (templates) -> + @templates = templates s = @parsed_settings()['all']['speech'] @set({ x: s['x_rate'], @@ -167,9 +162,7 @@ class Pettanr.SquareSpeechBalloon.SpeechModule parsed_settings: () -> return @parsed if @parsed - sbt = @speech_balloon_template() - sbt.fetch({cache: true}).done => - @parsed = sbt.parsed_settings() + @parsed = @templates.speech_balloon_template.parsed_settings() arrayed_quotes: () -> q = if Pettanr.is_blank(@get('quotes')) diff --git a/app/assets/javascripts/editor/panel_editor.js.coffee b/app/assets/javascripts/editor/panel_editor.js.coffee index dd15a089..97eb9509 100644 --- a/app/assets/javascripts/editor/panel_editor.js.coffee +++ b/app/assets/javascripts/editor/panel_editor.js.coffee @@ -19,13 +19,17 @@ class Editor.PanelEditor extends Backbone.View @body.on('panel:resize', @panel_resize) @listenTo(@dock, 'http_post', @http_post) + @listenTo(@dock, 'add:element', @add_element) @listenTo(@dock, 'add:credit', @add_credit) + add_element: (element) -> + @body.add_element(element) + add_credit: (element) -> @credits.add_picture(element.picture()) remove_element: (element) -> - + @body.remove_element(element) render: () -> this.$el.html('') @@ -95,6 +99,7 @@ class Editor.PanelEditor.Dialog extends Backbone.View @get(params, form) stop: () -> + @dialog().$el.dialog('close') render: () -> this.$el.html('') @@ -129,9 +134,9 @@ class Editor.PanelEditor.Dialog extends Backbone.View if view['is_pickable'] and view.is_pickable() view.add_pick(@target_model) @refresh(view) + this.$el.dialog('open') done: (params) -> - this.$el.dialog('open') lock: (params) -> console.log('_lock') diff --git a/app/assets/javascripts/editor/panel_editor/dock.js.coffee b/app/assets/javascripts/editor/panel_editor/dock.js.coffee index 40f079d1..eced320d 100644 --- a/app/assets/javascripts/editor/panel_editor/dock.js.coffee +++ b/app/assets/javascripts/editor/panel_editor/dock.js.coffee @@ -88,6 +88,8 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase pick: (new_item) -> t = @scenario_bay.length() - new_item.set({t: t}, {silent: true}) + z = @element_bay.new_tab.label.z() + 1 + new_item.set({z: z, t: t}, {silent: true}) @scenario_bay.add_element(new_item) + @trigger('add:element', new_item) diff --git a/app/assets/javascripts/editor/panel_editor/element/boards.js.coffee b/app/assets/javascripts/editor/panel_editor/element/boards.js.coffee index a0726064..5bdf31fc 100644 --- a/app/assets/javascripts/editor/panel_editor/element/boards.js.coffee +++ b/app/assets/javascripts/editor/panel_editor/element/boards.js.coffee @@ -54,12 +54,6 @@ class Editor.EditorModule.DockModule.ElementBay.Labels extends Backbone.View res[tab.label.z()] = tab.label res - add_label: (label) -> - #z = label.z - @labels.push(label) # insert array - @render() # sorting - label.add_label() - bay: () -> @parent.parent diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee index 26678a75..f0292ab5 100644 --- a/app/assets/javascripts/locmare/form.js.coffee +++ b/app/assets/javascripts/locmare/form.js.coffee @@ -62,15 +62,9 @@ class Locmare.Form extends Locmare.FormBase @init_fields() render: () -> - if @item.isNew() - method_type = 'post' - action_url = @item.create_url() - else - method_type = 'put' - action_url = @item.edit_url() @attr = { - method: method_type, - action: action_url + method: @method_type(), + action: @action_url() } this.$el.attr(@attr) this.$el.html('') @@ -92,7 +86,7 @@ class Locmare.Form extends Locmare.FormBase c = @submit_class() @div_submit = new c({form: this}) this.$el.append(@div_submit.render().el) - @delegateEvents({'submit': method_type}) + @delegateEvents({'submit': @method_type()}) this refresh: () -> @@ -101,6 +95,19 @@ class Locmare.Form extends Locmare.FormBase _.each @child_forms, (child_form, name) => child_form.refresh() + method_type: () -> + if @item.isNew() + 'post' + else + 'put' + + action_url: () -> + return null if !@submit # element has not create actions + if @item.isNew() + @item.create_url() + else + @item.edit_url() + add_element: (element) -> form = Locmare.Form.factory({ form_name: element.item_name(), diff --git a/app/assets/javascripts/models/balloon.js.coffee b/app/assets/javascripts/models/balloon.js.coffee index 0ed171f1..c1ca348c 100644 --- a/app/assets/javascripts/models/balloon.js.coffee +++ b/app/assets/javascripts/models/balloon.js.coffee @@ -16,6 +16,15 @@ class Pettanr.Balloon extends Peta.Element r: 0 } + pick: (templates) -> + # + speech_balloon_template = templates.speech_balloon_template + { + speech_balloon_template_id: speech_balloon_template.get('id'), + speech_balloon_template_module_name: speech_balloon_template.get('module_name'), + speech_balloon_template_settings: speech_balloon_template.get('settings') + } + speech_balloon: () -> new Pettanr.SpeechBalloon({id: @get('speech_balloon_id')}) @@ -34,7 +43,8 @@ class Pettanr.Balloon extends Peta.Element sp.fetch({cache: true}).done => @trigger('ready:symbol', sp.tmb_opt_img_tag()) - initialize: () -> + initialize: (attr, options) -> + super(attr, options) if @id @url = @url + @id @bind('change:width', () -> diff --git a/app/assets/javascripts/models/ground_color.js.coffee b/app/assets/javascripts/models/ground_color.js.coffee index 254d97d0..fc7ba8d4 100644 --- a/app/assets/javascripts/models/ground_color.js.coffee +++ b/app/assets/javascripts/models/ground_color.js.coffee @@ -15,13 +15,26 @@ class Pettanr.GroundColor extends Peta.Element @has_picture: () -> false + @pick_item_name: () -> + '' + + @pick_model: () -> + Manifest.item_name_to_model(@pick_item_name()) + + @traceable_item_names: () -> + [] + + @is_traceable: (item_name) -> + _.contains(@traceable_item_names(), item_name) + panel: (options = {}) -> new Pettanr.Panel({id: @get('panel_id')}, options) element_face: () -> new Pettanr.Views.GroundColor.ElementFace({element: this}) - initialize: () -> + initialize: (attr, options) -> + super(attr, options) if @id @url = @url + @id diff --git a/app/assets/javascripts/models/ground_picture.js.coffee b/app/assets/javascripts/models/ground_picture.js.coffee index a699cce2..aba7d5e1 100644 --- a/app/assets/javascripts/models/ground_picture.js.coffee +++ b/app/assets/javascripts/models/ground_picture.js.coffee @@ -17,6 +17,25 @@ class Pettanr.GroundPicture extends Peta.Element @repeat_texts: () -> ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'] + @pick_item_name: () -> + 'resource_picture' + + @pick_model: () -> + Manifest.item_name_to_model(@pick_item_name()) + + @traceable_item_names: () -> + ['panel_picture', 'picture'] + + @is_traceable: (item_name) -> + _.contains(@traceable_item_names(), item_name) + + trace_from_panel_picture: () -> + + trace_from_picture: () -> + + pick: (picked_item) -> + {picture_id: picked_item.get('picture_id')} + panel: (options = {}) -> new Pettanr.Panel({id: @get('panel_id')}, options) @@ -46,7 +65,8 @@ class Pettanr.GroundPicture extends Peta.Element element_face: () -> new Pettanr.Views.GroundPicture.ElementFace({element: this}) - initialize: () -> + initialize: (attr, options) -> + super(attr, options) if @id @url = @url + @id diff --git a/app/assets/javascripts/models/panel_picture.js.coffee b/app/assets/javascripts/models/panel_picture.js.coffee index 4dcaa245..52b1fd03 100644 --- a/app/assets/javascripts/models/panel_picture.js.coffee +++ b/app/assets/javascripts/models/panel_picture.js.coffee @@ -11,8 +11,6 @@ class Pettanr.PanelPicture extends Peta.Element id: null } - @pick: () -> - @pick_item_name: () -> 'resource_picture' @@ -29,6 +27,13 @@ class Pettanr.PanelPicture extends Peta.Element trace_from_picture: () -> + pick: (picked_item) -> + { + picture_id: picked_item.get('picture_id'), + width: picked_item.get('width'), + height: picked_item.get('height') + } + picture: () -> new Pettanr.Picture({id: @get('picture_id')}) @@ -79,7 +84,8 @@ class Pettanr.PanelPicture extends Peta.Element element_face: () -> new Pettanr.Views.PanelPicture.ElementFace({element: this}) - initialize: () -> + initialize: (attr, options) -> + super(attr, options) if @id @url = @url + @id @bind('change:width', () -> diff --git a/app/assets/javascripts/models/speech.js.coffee b/app/assets/javascripts/models/speech.js.coffee index 99147328..cfe1da7c 100644 --- a/app/assets/javascripts/models/speech.js.coffee +++ b/app/assets/javascripts/models/speech.js.coffee @@ -15,9 +15,25 @@ class Pettanr.Speech extends Peta.Element height: 100 } + pick: (templates) -> + # + speech_balloon_template = templates.speech_balloon_template + writing_format = templates.writing_format + { + speech_balloon_template_id: speech_balloon_template.get('id'), + speech_balloon_template_module_name: speech_balloon_template.get('module_name'), + speech_balloon_template_settings: speech_balloon_template.get('settings') + writing_format_id: writing_format.get('id'), + writing_format_module_name: writing_format.get('module_name'), + writing_format_template_settings: writing_format.get('settings') + } + speech_balloon: () -> new Pettanr.SpeechBalloon({id: @get('speech_balloon_id')}) + writing_format: () -> + new Pettanr.WritingFormat({id: @get('writing_format_id')}) + @text_align_texts: () -> ['left', 'left', 'right', 'center'] @@ -38,7 +54,8 @@ class Pettanr.Speech extends Peta.Element @render(@escape('content')) - initialize: () -> + initialize: (attr, options) -> + super(attr, options) if @id @url = @url + @id diff --git a/app/assets/javascripts/models/speech_balloon.js.coffee b/app/assets/javascripts/models/speech_balloon.js.coffee index d5e52802..4d8e84b3 100644 --- a/app/assets/javascripts/models/speech_balloon.js.coffee +++ b/app/assets/javascripts/models/speech_balloon.js.coffee @@ -13,6 +13,31 @@ class Pettanr.SpeechBalloon extends Peta.Element t: null } + @pick_item_name: () -> + 'speech_balloon_template' + + @pick_model: () -> + Manifest.item_name_to_model(@pick_item_name()) + + @traceable_item_names: () -> + ['speech', 'balloon'] + + @is_traceable: (item_name) -> + _.contains(@traceable_item_names(), item_name) + + trace_from_speech: () -> + + trace_from_balloon: () -> + + pick: (templates) -> + # + speech_balloon_template = templates.speech_balloon_template + { + speech_balloon_template_id: speech_balloon_template.get('id'), + speech_balloon_template_module_name: speech_balloon_template.get('module_name'), + speech_balloon_template_settings: speech_balloon_template.get('settings') + } + panel: (options = {}) -> new Pettanr.Panel({id: @get('panel_id')}, options) @@ -40,7 +65,8 @@ class Pettanr.SpeechBalloon extends Peta.Element element_face: () -> new Pettanr.Views.SpeechBalloon.ElementFace({element: this}) - initialize: () -> + initialize: (attr, options) -> + super(attr, options) if @id @url = @url + @id diff --git a/app/assets/javascripts/peta/item.js.coffee b/app/assets/javascripts/peta/item.js.coffee index 1e604c2a..22fe57af 100644 --- a/app/assets/javascripts/peta/item.js.coffee +++ b/app/assets/javascripts/peta/item.js.coffee @@ -3,6 +3,7 @@ class Peta.Item extends Backbone.Model initialize: (attr = {}, options = {}) -> super(attr, options) @expire_time = options.expire_time + @boosters = {} @child_models: () -> @my_manifest().child_models() @@ -129,14 +130,10 @@ class Peta.Item extends Backbone.Model @boost boost_manifest boost: (boost_manifest) -> - @boosters ||= {} @boosters[boost_manifest.name] = new Locmare.Booster(boost_manifest, this) # fetched item is not cleared . force write booster #@boosters[boost_manifest.name] ||= new Locmare.Booster(boost_manifest, this) - boosters: () -> - @boosters ||= {} - is_extend_column: (column_name) -> @is_extend_column column_name diff --git a/app/assets/javascripts/views/ground_colors/new_element.js.coffee b/app/assets/javascripts/views/ground_colors/new_element.js.coffee index 9bba5b99..a85c1064 100644 --- a/app/assets/javascripts/views/ground_colors/new_element.js.coffee +++ b/app/assets/javascripts/views/ground_colors/new_element.js.coffee @@ -4,17 +4,44 @@ class Pettanr.Views.GroundColor.NewElement extends Backbone.View initialize: (options) -> @parent = options.parent - @model = options.model - params = { - controller: @model.path_name(), action: 'index', - page_size: 6, format: 'pick' - } - @dialog().get(params, null) - - render: () -> - this.$el.html(@img.clear().el) + @target_model = options.target_model + @pick_model = @target_model.pick_model() + + clear: () -> + this.$el.html('new or inspire') + this + + render: (form) -> + this.$el.html('') + this.$el.append(@form.render().el) this + pick: (item) -> + if item.item_name() == @target_model.item_name() + # Inspire + new_item = new @target_model(item.attributes) + else if @target_model.is_traceable(item.item_name()) + # Trace + n = @target_model['trace_from_' + item.item_name()] + n() + else if item.item_name() == @target_model.pick_item_name() + # Pick + model = @target_model.pick_model() + new_item = new model() + @dialog().stop() + @set_form(new_item) + @trigger('pick', new_item) + + set_form: (item) -> + @form = Locmare.Form.factory({ + form_name: item.item_name(), + use_name: 'default' + item: item, + element_form: true, + submit: null, + operators: @editor().operators, + }) + dock: () -> @parent.dock() diff --git a/app/assets/javascripts/views/ground_pictures/new_element.js.coffee b/app/assets/javascripts/views/ground_pictures/new_element.js.coffee index 96a754ee..cd6b0ee8 100644 --- a/app/assets/javascripts/views/ground_pictures/new_element.js.coffee +++ b/app/assets/javascripts/views/ground_pictures/new_element.js.coffee @@ -4,17 +4,38 @@ class Pettanr.Views.GroundPicture.NewElement extends Backbone.View initialize: (options) -> @parent = options.parent - @model = options.model + @target_model = options.target_model + @pick_model = @target_model.pick_model() + + clear: () -> + this.$el.html('') params = { - controller: @model.path_name(), action: 'index', - page_size: 6, format: 'pick' + controller: @pick_model.path_name(), action: 'index', + page_size: 6, format: 'html' } - @dialog().get(params, null) + @dialog().start(@target_model, params, null) + @listenTo(@dialog(), 'pick', @pick) + this render: () -> - this.$el.html(@img.clear().el) + this.$el.html('') this + pick: (item) -> + if item.item_name() == @target_model.item_name() + # Inspire + new_item = new @target_model(item.attributes) + else if @target_model.is_traceable(item.item_name()) + # Trace + n = @target_model['trace_from_' + item.item_name()] + n() + else if item.item_name() == @target_model.pick_item_name() + # Pick resource_picture to ground_picture + new_item = new @target_model() + new_item.set(new_item.pick(item), {silent: true}) + @dialog().stop() + @trigger('pick', new_item) + dock: () -> @parent.dock() diff --git a/app/assets/javascripts/views/panel_pictures/new_element.js.coffee b/app/assets/javascripts/views/panel_pictures/new_element.js.coffee index bcdebc05..46aa767c 100644 --- a/app/assets/javascripts/views/panel_pictures/new_element.js.coffee +++ b/app/assets/javascripts/views/panel_pictures/new_element.js.coffee @@ -10,16 +10,15 @@ class Pettanr.Views.PanelPicture.NewElement extends Backbone.View clear: () -> this.$el.html('') params = { - controller: @target_model.path_name(), action: 'index', + controller: @pick_model.path_name(), action: 'index', page_size: 6, format: 'html' } @dialog().start(@target_model, params, null) @listenTo(@dialog(), 'pick', @pick) this - render: (form) -> + render: () -> this.$el.html('') - this.$el.append(@form.render().el) this pick: (item) -> @@ -31,24 +30,12 @@ class Pettanr.Views.PanelPicture.NewElement extends Backbone.View n = @target_model['trace_from_' + item.item_name()] n() else if item.item_name() == @target_model.pick_item_name() - # Pick - model = @target_model.pick_model() - new_item = new model() - @dialog().$el.dialog('option', 'hide') + # Pick resource_picture to panel_picture + new_item = new @target_model() + new_item.set(new_item.pick(item), {silent: true}) @dialog().stop() - @set_form(new_item) @trigger('pick', new_item) - set_form: (item) -> - @form = Locmare.Form.factory({ - form_name: item.item_name(), - use_name: 'default' - item: item, - element_form: true, - submit: null, - operators: @editor().operators, - }) - dock: () -> @parent.dock() diff --git a/app/assets/javascripts/views/speech_balloons/new_element.js.coffee b/app/assets/javascripts/views/speech_balloons/new_element.js.coffee index 03bce08f..351ab8c5 100644 --- a/app/assets/javascripts/views/speech_balloons/new_element.js.coffee +++ b/app/assets/javascripts/views/speech_balloons/new_element.js.coffee @@ -4,17 +4,64 @@ class Pettanr.Views.SpeechBalloon.NewElement extends Backbone.View initialize: (options) -> @parent = options.parent - @model = options.model + @target_model = options.target_model + @pick_model = @target_model.pick_model() + + clear: () -> + this.$el.html('') params = { - controller: @model.path_name(), action: 'index', - page_size: 6, format: 'pick' + controller: @pick_model.path_name(), action: 'index', + page_size: 6, format: 'html' } - @dialog().get(params, null) + @dialog().start(@target_model, params, null) + @listenTo(@dialog(), 'pick', @pick) + this render: () -> - this.$el.html(@img.clear().el) + this.$el.html('') this + pick: (item) -> + @listenTo(this, 'ready', @ready) + if item.item_name() == @target_model.item_name() + # Inspire + new_item = new @target_model(item.attributes) + @trigger('ready', new_item) + else if @target_model.is_traceable(item.item_name()) + # Trace + n = @target_model['trace_from_' + item.item_name()] + n() + else if item.item_name() == @target_model.pick_item_name() + # Pick + speech_balloon_template = item + writing_format = new Pettanr.WritingFormat({id: 1}) + writing_format.fetch({cache: true}).done => + templates = { + speech_balloon_template: speech_balloon_template, + writing_format: writing_format + } + new_item = new @target_model() + new_item.set(new_item.pick(templates), {silent: true}) + new_item.boosts 'post' + new_item.supply_default(templates) + # prepare balloon + balloon = new Pettanr.Balloon() + balloon.set(balloon.pick(templates), {silent: true}) + balloon.boosts 'post' + balloon.supply_default(templates) + # prepare speech + speech = new Pettanr.Speech() + speech.set(speech.pick(templates), {silent: true}) + speech.boosts 'post' + speech.supply_default(templates) + # join elements + new_item.set({balloon: balloon, speech: speech}, {silent: true}) + @trigger('ready', new_item) + + ready: (new_item) -> + @dialog().stop() + @trigger('pick', new_item) + dock: () -> @parent.dock() diff --git a/app/models/speech.rb b/app/models/speech.rb index 6b6254ec..6cb3f9cc 100644 --- a/app/models/speech.rb +++ b/app/models/speech.rb @@ -31,6 +31,7 @@ class Speech < Peta::Element self.y = 0 self.width = 100 self.height = 100 + self.fore_color = 0 end def symbol_option -- 2.11.0