OSDN Git Service

fix: scenario
[pettanr/pettanr.git] / app / assets / javascripts / editor / panel_editor / scenario.js.coffee
1 class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.SimpleBay\r
2   \r
3   initialize: (options) ->\r
4     super(options)\r
5   \r
6   render: () ->\r
7     @body.render()\r
8   \r
9   add_element: (element) ->\r
10     @body.add_element(element)\r
11   \r
12   remove_element: (element) ->\r
13     @body.remove_element(element)\r
14   \r
15   init_tabs: () ->\r
16     list = @root_item().scenario_elements()\r
17     _.each list, (element) =>\r
18       @add_element(element)\r
19   \r
20   pick: (new_item) ->\r
21     t = @length()\r
22     new_item.set({t: t}, {silent: true})\r
23     @add_element(new_item)\r
24   \r
25   save_data: () ->\r
26     @body.save_data()\r
27   \r
28   length: () ->\r
29     @body.length()\r
30   \r
31 class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
32   \r
33 class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
34   \r
35   initialize: (options) ->\r
36     super(options)\r
37     @elements = new Editor.EditorModule.DockModule.ScenarioBay.Elements({\r
38       parent: this, \r
39     })\r
40     @listenTo(@elements, 'sorted', @sorted)\r
41   \r
42   add_element: (element) ->\r
43     @elements.add_element(element)\r
44   \r
45   remove_element: (element) ->\r
46     @elements.remove_element(element)\r
47     @sorted()    # recalc t\r
48   \r
49   render: () ->\r
50     super()\r
51     this.$el.append(@elements.render().el)\r
52     @delegateEvents({'activate': 'activate'})\r
53     this\r
54   \r
55   activate: () ->\r
56     @elements.refresh()\r
57   \r
58   sorted: () ->\r
59     # data-t copy to model\r
60     _.each @elements.element_lis, (element_li) =>\r
61       t = parseInt(element_li.$el.attr('data-t'))\r
62       element_li.element.set({\r
63         t: t\r
64       }, {silent: true})\r
65       element_li.element.trigger('sort')\r
66   \r
67   panel_body: () ->\r
68     @dock().editor().body\r
69   \r
70   length: () ->\r
71     @elements.element_lis.length\r
72   \r
73   save_data: () ->\r
74     attrs = {}\r
75     _.each @elements.element_lis, (element_li) ->\r
76       form = element_li.body.form\r
77       name = form.item.table_name() + '_attributes'\r
78       attrs[name] ||= []\r
79       attrs[name].push(form.save_data())\r
80     attrs\r
81   \r