OSDN Git Service

f1e3b22c628d7e899152f50c165d1b7562c69d17
[pettanr/pettanr.git] / app / assets / javascripts / editor / panel_editor / dock.js.coffee
1 class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase\r
2   tagName: 'div'\r
3   className: 'dock'\r
4   \r
5   initialize: (options) ->\r
6     super(options)\r
7     @root_bay = new Editor.EditorModule.DockModule.RootBay({\r
8       parent: this, index: 0, name: 'panel'\r
9     })\r
10     @add_tab(\r
11       @root_bay, \r
12       new Editor.EditorModule.DockModule.TabModule.RootBayLabel({\r
13         parent: @root_bay, caption: 'panel'\r
14       }), \r
15       new Editor.EditorModule.DockModule.TabModule.RootBayBody({\r
16         parent: @root_bay\r
17       })\r
18     )\r
19     @element_bay = new Editor.EditorModule.DockModule.ElementBay({\r
20       parent: this, index: 1, name: 'elements'\r
21     })\r
22     @add_tab(\r
23       @element_bay, \r
24       new Editor.EditorModule.DockModule.TabModule.ElementBayLabel({\r
25         parent: @element_bay, caption: 'elements'\r
26       }), \r
27       new Editor.EditorModule.DockModule.TabModule.ElementBayBody({\r
28         parent: @element_bay\r
29       })\r
30     )\r
31     @scenario_bay = new Editor.EditorModule.DockModule.ScenarioBay({\r
32       parent: this, index: 2, name: 'scenario'\r
33     })\r
34     @add_tab(\r
35       @scenario_bay, \r
36       new Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel({\r
37         parent: @scenario_bay, caption: 'scenario'\r
38       }), \r
39       new Editor.EditorModule.DockModule.TabModule.ScenarioBayBody({\r
40         parent: @scenario_bay\r
41       })\r
42     )\r
43     @listenTo(@root_bay.body, 'http_post', @http_post)\r
44     @listenTo(@root_bay.body, 'save:success', @post_success)\r
45     @listenTo(@root_bay.body, 'save:fail', @post_fail)\r
46     @listenTo(@element_bay, 'add:credit', @add_credit)\r
47     @listenTo(@element_bay, 'pick', @pick)\r
48     @listenTo(@element_bay, 'dialog:open', @open_dialog)\r
49     @listenTo(@element_bay, 'dialog:close', @close_dialog)\r
50     @listenTo(@element_bay, 'destroy', @destroy)\r
51   \r
52   render: () ->\r
53     this.$el.html('')\r
54     l = _.map @tabs, (tab) ->\r
55       tab.label\r
56     labels = new Tag.Ul({contents: l, class_name: @dom_labels_class()})\r
57     this.$el.append(labels.render().el)\r
58     _.each @tabs, (tab) =>\r
59       this.$el.append(tab.render().el)\r
60     this\r
61   \r
62   init_tabs: () ->\r
63     @element_bay.init_tabs()\r
64     @scenario_bay.init_tabs()\r
65     this.$el.tabs({\r
66       activate: (e, ui) ->\r
67         ui.newPanel.trigger('activate')\r
68     })\r
69   \r
70   editor: () ->\r
71     @parent\r
72   \r
73   dom_id: () ->\r
74     @editor().dom_id() + '-dock'\r
75   \r
76   dom_class: () ->\r
77     @editor().dom_class() + '-dock'\r
78   \r
79   dom_labels_class: () ->\r
80     @dom_class() + '-labels'\r
81   \r
82   http_post: (url, root_form) ->\r
83     @trigger('http_post', url, this)  # send dock\r
84     false\r
85   \r
86   post_success: (model, response) ->\r
87     @trigger('save:success', model, response)\r
88   \r
89   post_fail: (model, response) ->\r
90     @trigger('save:fail', response)\r
91   \r
92   add_credit: (element) ->\r
93     @trigger('add:credit', element)\r
94   \r
95   save: () ->\r
96     # merge panel and elements\r
97     attrs = @root_bay.save_data()\r
98     _.extend(attrs, @element_bay.save_data())\r
99     # save json data by panel form\r
100     @root_bay.body.form.save(attrs)\r
101   \r
102   pick: (new_item) ->\r
103     @scenario_bay.pick(new_item)\r
104     @trigger('add:element', new_item)\r
105   \r
106   open_dialog: (dialog) ->\r
107     @trigger('dialog:open', dialog)\r
108   \r
109   close_dialog: (dialog) ->\r
110     @trigger('dialog:close', dialog)\r
111   \r
112   destroy: (element) ->\r
113     @trigger('destroy', element)\r
114     @scenario_bay.remove_element(element)\r
115   \r
116   quit: () ->\r
117     @root_bay.body.form.quit()\r
118   \r