OSDN Git Service

351ab8c53fdc68a84127d7d462a2cefb7f2cb8e5
[pettanr/pettanr.git] / app / assets / javascripts / views / speech_balloons / new_element.js.coffee
1 class Pettanr.Views.SpeechBalloon.NewElement extends Backbone.View\r
2   tagName: 'div'\r
3   className: 'new-element-body'\r
4   \r
5   initialize: (options) ->\r
6     @parent = options.parent\r
7     @target_model = options.target_model\r
8     @pick_model = @target_model.pick_model()\r
9   \r
10   clear: () ->\r
11     this.$el.html('')\r
12     params = {\r
13       controller: @pick_model.path_name(), action: 'index',\r
14       page_size: 6, format: 'html'\r
15     }\r
16     @dialog().start(@target_model, params, null)\r
17     @listenTo(@dialog(), 'pick', @pick)\r
18     this\r
19   \r
20   render: () ->\r
21     this.$el.html('')\r
22     this\r
23   \r
24   pick: (item) ->\r
25     @listenTo(this, 'ready', @ready)\r
26     if item.item_name() == @target_model.item_name()\r
27       # Inspire\r
28       new_item = new @target_model(item.attributes)\r
29       @trigger('ready', new_item)\r
30     else if @target_model.is_traceable(item.item_name())\r
31       # Trace\r
32       n = @target_model['trace_from_' + item.item_name()]\r
33       n()\r
34     else if item.item_name() == @target_model.pick_item_name()\r
35       # Pick\r
36       speech_balloon_template = item\r
37       writing_format = new Pettanr.WritingFormat({id: 1})\r
38       writing_format.fetch({cache: true}).done =>\r
39         templates = {\r
40           speech_balloon_template: speech_balloon_template,\r
41           writing_format: writing_format\r
42         }\r
43         new_item = new @target_model()\r
44         new_item.set(new_item.pick(templates), {silent: true})\r
45         new_item.boosts 'post'\r
46         new_item.supply_default(templates)\r
47         # prepare balloon\r
48         balloon = new Pettanr.Balloon()\r
49         balloon.set(balloon.pick(templates), {silent: true})\r
50         balloon.boosts 'post'\r
51         balloon.supply_default(templates)\r
52         # prepare speech\r
53         speech = new Pettanr.Speech()\r
54         speech.set(speech.pick(templates), {silent: true})\r
55         speech.boosts 'post'\r
56         speech.supply_default(templates)\r
57         # join elements\r
58         new_item.set({balloon: balloon, speech: speech}, {silent: true})\r
59         @trigger('ready', new_item)\r
60   \r
61   ready: (new_item) ->\r
62     @dialog().stop()\r
63     @trigger('pick', new_item)\r
64   \r
65   dock: () ->\r
66     @parent.dock()\r
67   \r
68   editor: () ->\r
69     @dock().editor()\r
70   \r
71   dialog: () ->\r
72     @editor().dialog\r
73   \r