OSDN Git Service

93ec23c1a8220b7e7f6645ed7edd188751745d52
[pettanr/pettanr.git] / app / assets / javascripts / editor / player / panel_insert_dialog.js.coffee
1 class Editor.Player.PanelInsertDialog extends Editor.Dialog\r
2   className: 'player-insert-dialog'\r
3   \r
4   initialize: (options) ->\r
5     super(options)\r
6     @parent = options.parent\r
7     @binder = options.binder\r
8     @target_model = options.target_model\r
9     @insert_point = options.insert_point\r
10   \r
11   render: () ->\r
12     this.$el.html('')\r
13     launcher = new Pettanr.Views[@target_model.singular()].NewElementLauncher({\r
14       parent: this, model: @target_model\r
15     })\r
16     @listenTo(launcher, 'http_get', @http_get)  # http_get func already defined\r
17     this.$el.append(launcher.render().el)\r
18     this\r
19   \r
20   start: () ->\r
21     this.$el.dialog({title: I18n.t('scroll_panels.player.insert_dialog')})\r
22     _this = this\r
23     this.$el.dialog({\r
24       autoOpen: false,\r
25       width: 750, \r
26       height: 700,\r
27       close: (ui, event) ->\r
28         _this.remove()\r
29     })\r
30     this.$el.dialog('open')\r
31   \r
32   stop: () ->\r
33     this.$el.dialog('close')\r
34   \r
35   ready: (view) ->\r
36     @listenTo(view, 'http_get', @http_get)\r
37     # @listenTo(view, 'http_post', @http_post)\r
38     @listenTo(view, 'pick', @pick)\r
39     if view['is_pickable'] and view.is_pickable()\r
40       view.add_pick(@target_model)\r
41     @refresh(view)\r
42   \r
43   pick: (item) ->\r
44     if item.item_name() == @target_model.item_name()\r
45       # Inspire\r
46     else if @target_model.is_traceable(item.item_name())\r
47       # Trace\r
48     else if item.item_name() == @target_model.pick_item_name()\r
49       # Pick  resource_picture to panel_picture\r
50       new_item = new @target_model()\r
51       new_item.set(new_item.pick(item), {silent: true})\r
52       t = if @insert_point.scroll_panel\r
53         # insert before insert_point's panel_view\r
54         @insert_point.scroll_panel.get('t')\r
55       else\r
56         # insert before appender\r
57         null\r
58       new_item.set({scroll_id: @binder.get('id'), t: t}, {silent: true})\r
59       @listenTo(new_item, 'save:success', @success)\r
60       @listenTo(new_item, 'save:fail', @fail)\r
61       new_item.save()\r
62   \r
63   success: (model, response) ->\r
64     # item is new\r
65     model.url = model.default_url()\r
66     Pettanr.cache.store(model)\r
67     @trigger('pick', model, @insert_point)\r
68   \r
69   fail: (model, response) ->\r
70     @trigger('fail', response)\r
71   \r
72   \r
73   \r