OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[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   \r
44   render: () ->\r
45     this.$el.html('')\r
46     l = _.map @tabs, (tab) ->\r
47       tab.label\r
48     labels = new Tag.Ul({contents: l, class_name: @dom_labels_class()})\r
49     this.$el.append(labels.render().el)\r
50     _.each @tabs, (tab) =>\r
51       this.$el.append(tab.render().el)\r
52     this\r
53   \r
54   add_element: (element) ->\r
55     @element_bay.add_element(element)\r
56   \r
57   editor: () ->\r
58     @parent\r
59   \r
60   dom_id: () ->\r
61     @editor().dom_id() + '-dock'\r
62   \r
63   dom_class: () ->\r
64     @editor().dom_class() + '-dock'\r
65   \r
66   dom_labels_class: () ->\r
67     @dom_class() + '-labels'\r
68   \r
69 class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay\r
70   \r
71   render: () ->\r
72     @body.render()\r
73   \r
74 class Editor.EditorModule.DockModule.TabModule.RootBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
75   \r
76 class Editor.EditorModule.DockModule.TabModule.RootBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
77   \r
78   initialize: (options) ->\r
79     super(options)\r
80     @form = new Locmare.Bucket.factory(\r
81       @root_item().item_name(), \r
82       @root_item(), \r
83       @mounted(), \r
84       'default', \r
85       @dock().editor().operators\r
86     )\r
87     @bucket = new Editor.EditorModule.DockModule.FormBucket({\r
88       parent: this, form: @form\r
89     })\r
90   \r
91   render: () ->\r
92     super()\r
93     @el.className = @bay().body.dom_class()\r
94     this.$el.html(@bucket.render().el)\r
95     this\r
96   \r
97   mounted: () ->\r
98     true\r
99   \r
100   dock: () ->\r
101     @parent.dock()\r
102   \r
103   root_item: () ->\r
104     @dock().root_item()\r
105   \r
106 class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.DockModule.BoardBay\r
107   \r
108   initialize: (options) ->\r
109     super(options)\r
110     @elements_tabs = new Editor.EditorModule.DockModule.ElementBay.ElementsTabs({\r
111     })\r
112     @listenTo(@elements_tabs, 'sorted', @sorted)\r
113   \r
114   add_element: (element) ->\r
115     index = element.get('z') - 1\r
116     tab = new Editor.EditorModule.DockModule.ElementBoard({\r
117       parent: this, index: index, name: element.item_name(), element: element\r
118     })\r
119     bb = new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab})\r
120     @add_tab(\r
121       tab, \r
122       new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({parent: tab, name: element.item_name()}), \r
123       bb\r
124     )\r
125     @elements_tabs.add_element_tab(tab)\r
126     @elements_tabs.$el.tabs('refresh')\r
127     bb.form\r
128   \r
129   add_new_tab: () ->\r
130   \r
131   render: () ->\r
132     this.$el.html('')\r
133     this.$el.attr('id', @body.dom_id())\r
134     this.$el.append(@elements_tabs.render().el)\r
135     @elements_tabs.$el.tabs()\r
136     this\r
137   \r
138   sorted: () ->\r
139     # data-z copy to model\r
140     _.each @tabs, (tab) ->\r
141       z = parseInt(tab.label.$el.attr('data-z'))\r
142       tab.element.set({\r
143         z: z\r
144       }, {silent: true})\r
145       tab.element.trigger('sort')\r
146   \r
147   panel_body: () ->\r
148     @dock().editor().body\r
149   \r
150 class Editor.EditorModule.DockModule.ElementBay.ElementsTabs extends Backbone.View\r
151   tagName: 'div'\r
152   className: 'elements_tabs ui-tabs-vertical ui-helper-clearfix'\r
153   \r
154   initialize: (options) ->\r
155     super(options)\r
156     @inner_elements_tabs = new Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs({\r
157     })\r
158     @listenTo(@inner_elements_tabs, 'sorted', @sorted)\r
159   \r
160   render: () ->\r
161     this.$el.html('')\r
162     this.$el.append(@inner_elements_tabs.render().$el)\r
163     this\r
164   \r
165   add_element_tab: (tab) ->\r
166     @inner_elements_tabs.add_label(tab.label)\r
167     this.$el.append(tab.body.render().$el)\r
168   \r
169   sorted: () ->\r
170     # data-z copy to model\r
171     @trigger('sorted')\r
172   \r
173 class Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs extends Backbone.View\r
174   tagName: 'ul'\r
175   \r
176   initialize: (options) ->\r
177     super(options)\r
178   \r
179   render: () ->\r
180     this.$el.html('')\r
181     _this = this\r
182     this.$el.sortable {\r
183       update: (event, ui) ->\r
184         z = 1\r
185         $('li', $(@)).map ->\r
186           $(@).attr('data-z', z)\r
187           z++\r
188         _this.trigger('sorted')\r
189     }\r
190     this\r
191   \r
192   add_label: (label) ->\r
193     this.$el.append(label.render().$el)\r
194     this.$el.sortable {\r
195       appendTo: label.el\r
196     }\r
197     label.add_label()\r
198   \r
199 class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
200   \r
201 class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
202   \r
203   render: () ->\r
204     @body.render()\r
205   \r
206 class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board\r
207   \r
208   initialize: (options) ->\r
209     super(options)\r
210     @element = options.element\r
211   \r
212   dom_id: () ->\r
213     super() + '-' + @element.get('id') + '-'  # use tab index\r
214   \r
215 class Editor.EditorModule.DockModule.TabModule.ElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
216   \r
217   render: () ->\r
218     super()\r
219     this.$el.attr('data-z', @element().get('z'))\r
220     this.$el.removeClass('ui-corner-top')\r
221     this.$el.addClass('ui-corner-left')\r
222     this\r
223   \r
224   add_label: () ->\r
225     this.$el.attr('id', @dom_id())\r
226   \r
227 class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
228   \r
229   initialize: (options) ->\r
230     super(options)\r
231     @form = Locmare.Form.factory({\r
232       form_name: @element().item_name(), \r
233       item: @element(), \r
234       mounted: @mounted(), \r
235       submit: null, \r
236       operators: @dock().editor().operators,\r
237       action: '/' + @element().table_name() + '/' + Pettanr.to_s(@element().get('id'))\r
238     })\r
239   \r
240   render: () ->\r
241     this.$el.attr('id', @dom_id())\r
242     this.$el.html(@form.render().el)\r
243     this\r
244   \r
245   add_element: (element) ->\r
246     @form.add_element(element)\r
247   \r
248   mounted: () ->\r
249     true\r
250   \r
251   element: () ->\r
252     @parent.element\r
253   \r
254 class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.BoardBay\r
255   \r
256   initialize: (options) ->\r
257     super(options)\r
258     i = 0\r
259     _.each @elements(), (element) =>\r
260       tab = new Editor.EditorModule.DockModule.ScenarioBoard({\r
261         parent: this, index: i, name: element.item_name(), element: element\r
262       })\r
263       @add_tab(\r
264         tab, \r
265         new Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel({parent: tab, caption: element.item_name()}), \r
266         new Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody({parent: tab})\r
267       )\r
268       i++\r
269   \r
270   render: () ->\r
271     this.$el.html('')\r
272     this.$el.attr('id', @body.dom_id())\r
273     elements_tabs = new Editor.EditorModule.DockModule.ScenarioBay.ScenarioTabs({\r
274       tabs: @tabs\r
275     })\r
276     this.$el.append(elements_tabs.render().el)\r
277     _.each @tabs, (tab) =>\r
278       this.$el.append(tab.body.render().el)\r
279     elements_tabs.$el.tabs()\r
280     this\r
281   \r
282   elements: () ->\r
283     @root_item().scenario_elements()\r
284   \r
285   class_name: () ->\r
286     "tsort-box"\r
287   \r
288 class Editor.EditorModule.DockModule.ScenarioBay.ScenarioTabs extends Backbone.View\r
289   tagName: 'ul'\r
290   className: 'tsort'\r
291   \r
292   initialize: (options) ->\r
293     super(options)\r
294     @tabs = options.tabs\r
295   \r
296   render: () ->\r
297     this.$el.html('')\r
298     _.each @tabs, (tab) =>\r
299       this.$el.append(tab.label.render().el)\r
300     this\r
301   \r
302 class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
303   \r
304 class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
305   \r
306   initialize: (options) ->\r
307     super(options)\r
308   \r
309 class Editor.EditorModule.DockModule.ScenarioBoard extends Editor.EditorModule.DockModule.Board\r
310   \r
311   initialize: (options) ->\r
312     super(options)\r
313     @element = options.element\r
314   \r
315 class Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
316   \r
317   with_destroy_button: () ->\r
318     false\r
319   \r
320 class Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
321   \r
322   initialize: (options) ->\r
323     super(options)\r
324     @bucket = new Editor.EditorModule.DockModule.ScenarioBucket({\r
325       parent: this\r
326     })\r
327   \r
328 class Editor.EditorModule.DockModule.PriorityBay extends Editor.EditorModule.DockModule.BoardBay\r
329   \r
330   initialize: (options) ->\r
331     super(options)\r
332     i = 0\r
333     _.each @elements(), (element) =>\r
334       tab = new Editor.EditorModule.DockModule.PriorityBoard({\r
335         parent: this, index: i, name: element.item_name(), element: element\r
336       })\r
337       @add_tab(\r
338         tab, \r
339         new Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel({parent: tab, name: element.item_name()}), \r
340         new Editor.EditorModule.DockModule.TabModule.PriorityBoardBody({parent: tab})\r
341       )\r
342       i++\r
343   \r
344   render: () ->\r
345     this.$el.html('')\r
346     this.$el.attr('id', @body.dom_id())\r
347     elements_tabs = new Editor.EditorModule.DockModule.PriorityBay.PriorityTabs({\r
348       tabs: @tabs\r
349     })\r
350     this.$el.append(elements_tabs.render().el)\r
351     _.each @tabs, (tab) =>\r
352       this.$el.append(tab.body.render().el)\r
353     elements_tabs.$el.tabs()\r
354     this\r
355   \r
356   elements: () ->\r
357     @root_item().scenario_elements()\r
358   \r
359   class_name: () ->\r
360     "zsort-box"\r
361   \r
362 class Editor.EditorModule.DockModule.PriorityBay.PriorityTabs extends Backbone.View\r
363   tagName: 'ul'\r
364   className: 'zsort'\r
365   \r
366   initialize: (options) ->\r
367     super(options)\r
368     @tabs = options.tabs\r
369   \r
370   render: () ->\r
371     this.$el.html('')\r
372     _.each @tabs, (tab) =>\r
373       this.$el.append(tab.label.render().el)\r
374     this\r
375   \r
376 class Editor.EditorModule.DockModule.TabModule.PriorityBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
377   \r
378 class Editor.EditorModule.DockModule.TabModule.PriorityBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
379   \r
380   initialize: (options) ->\r
381     super(options)\r
382   \r
383 class Editor.EditorModule.DockModule.PriorityBoard extends Editor.EditorModule.DockModule.Board\r
384   \r
385   initialize: (options) ->\r
386     super(options)\r
387     @element = options.element\r
388   \r
389   mounted: () ->\r
390     false\r
391   \r
392 class Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
393   \r
394   with_destroy_button: () ->\r
395     false\r
396   \r
397 class Editor.EditorModule.DockModule.TabModule.PriorityBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
398   \r
399   initialize: (options) ->\r
400     super(options)\r
401     @bucket = new Editor.EditorModule.DockModule.PriorityBucket({\r
402       parent: this\r
403     })\r
404     \r
405 #    form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
406 #    form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
407 #    bucket = Bucket.new self,form\r
408   \r
409 class Editor.EditorModule.DockModule.NewBay extends Editor.EditorModule.DockModule.BoardBay\r
410   \r
411 \r
412 class Editor.EditorModule.DockModule.TabModule.NewBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
413   \r
414 \r
415 class Editor.EditorModule.DockModule.TabModule.NewBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
416   \r
417   initialize: (options) ->\r
418     super(options)\r
419   \r
420 class Editor.EditorModule.DockModule.NewBoard extends Editor.EditorModule.DockModule.Board\r
421   \r
422 class Editor.EditorModule.DockModule.TabModule.NewBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
423   \r
424 class Editor.EditorModule.DockModule.TabModule.NewBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
425   \r
426   initialize: (options) ->\r
427     super(options)\r
428 #    form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
429 #    form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
430 #    bucket = Bucket.new self,form\r
431   \r