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     tab = new Editor.EditorModule.DockModule.NewElementBoard({\r
131       parent: this, index: 0, name: 'new'\r
132     })\r
133     bb = new Editor.EditorModule.DockModule.TabModule.NewElementBoardBody({parent: tab})\r
134     @add_tab(\r
135       tab, \r
136       new Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel({parent: tab}), \r
137       bb\r
138     )\r
139     @elements_tabs.add_element_tab(tab)\r
140   \r
141   render: () ->\r
142     this.$el.html('')\r
143     this.$el.attr('id', @body.dom_id())\r
144     this.$el.append(@elements_tabs.render().el)\r
145     @elements_tabs.$el.tabs()\r
146     # @add_new_tab()\r
147     this\r
148   \r
149   sorted: () ->\r
150     # data-z copy to model\r
151     _.each @tabs, (tab) ->\r
152       z = parseInt(tab.label.$el.attr('data-z'))\r
153       tab.element.set({\r
154         z: z\r
155       }, {silent: true})\r
156       tab.element.trigger('sort')\r
157   \r
158   panel_body: () ->\r
159     @dock().editor().body\r
160   \r
161 class Editor.EditorModule.DockModule.ElementBay.ElementsTabs extends Backbone.View\r
162   tagName: 'div'\r
163   className: 'elements_tabs ui-tabs-vertical ui-helper-clearfix'\r
164   \r
165   initialize: (options) ->\r
166     super(options)\r
167     @inner_elements_tabs = new Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs({\r
168     })\r
169     @listenTo(@inner_elements_tabs, 'sorted', @sorted)\r
170   \r
171   render: () ->\r
172     this.$el.html('')\r
173     this.$el.append(@inner_elements_tabs.render().$el)\r
174     this\r
175   \r
176   add_element_tab: (tab) ->\r
177     @inner_elements_tabs.add_label(tab.label)\r
178     this.$el.append(tab.body.render().$el)\r
179   \r
180   sorted: () ->\r
181     # data-z copy to model\r
182     @trigger('sorted')\r
183   \r
184 class Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs extends Backbone.View\r
185   tagName: 'ul'\r
186   \r
187   initialize: (options) ->\r
188     super(options)\r
189     @labels = []\r
190   \r
191   render: () ->\r
192     this.$el.html('')\r
193     _.each @zorderd_labels(), (label) =>\r
194       this.$el.append(label.render().$el)\r
195     _this = this\r
196     this.$el.sortable {\r
197       update: (event, ui) ->\r
198         z = 1\r
199         $('li', $(@)).map ->\r
200           $(@).attr('data-z', z)\r
201           z++\r
202         _this.trigger('sorted')\r
203     }\r
204     this\r
205   \r
206   zorderd_labels: () ->\r
207     res = []\r
208     _.each @labels, (label) =>\r
209       res[label.z()] = label\r
210     res\r
211   \r
212   add_label: (label) ->\r
213     #z = label.z()\r
214     @labels.push(label) # insert array\r
215     @render()\r
216     label.add_label()\r
217   \r
218 class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
219   \r
220 class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
221   \r
222   render: () ->\r
223     @body.render()\r
224   \r
225 class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board\r
226   \r
227   initialize: (options) ->\r
228     super(options)\r
229     @element = options.element\r
230   \r
231   dom_id: () ->\r
232     super() + '-' + @element.get('id')  # use tab index\r
233   \r
234 class Editor.EditorModule.DockModule.TabModule.ElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
235   \r
236   render: () ->\r
237     super()\r
238     this.$el.attr('data-z', @z())\r
239     this.$el.removeClass('ui-corner-top')\r
240     this.$el.addClass('ui-corner-left')\r
241     _this = this\r
242     this.$el.mouseover -> \r
243       _this.element().trigger('active')\r
244     this.$el.mouseout -> \r
245       _this.element().trigger('inactive')\r
246     this\r
247   \r
248   z: () ->\r
249     @element().get('z')\r
250   \r
251   add_label: () ->\r
252     this.$el.attr('id', @dom_id())\r
253   \r
254 class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
255   \r
256   initialize: (options) ->\r
257     super(options)\r
258     @form = Locmare.Form.factory({\r
259       form_name: @element().item_name(), \r
260       item: @element(), \r
261       mounted: @mounted(), \r
262       submit: null, \r
263       operators: @dock().editor().operators,\r
264       action: '/' + @element().table_name() + '/' + Pettanr.to_s(@element().get('id'))\r
265     })\r
266   \r
267   render: () ->\r
268     this.$el.attr('id', @dom_id())\r
269     this.$el.html(@form.render().el)\r
270     this\r
271   \r
272   add_element: (element) ->\r
273     @form.add_element(element)\r
274   \r
275   mounted: () ->\r
276     true\r
277   \r
278   element: () ->\r
279     @parent.element\r
280   \r
281 class Editor.EditorModule.DockModule.NewElementBoard extends Editor.EditorModule.DockModule.Board\r
282   \r
283   initialize: (options) ->\r
284     super(options)\r
285   \r
286 class Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
287   \r
288   render: () ->\r
289     super()\r
290     this.$el.attr('data-z', @z())\r
291     this.$el.removeClass('ui-corner-top')\r
292     this.$el.addClass('ui-corner-left')\r
293     this\r
294   \r
295   face: () ->\r
296     this.$el.append()\r
297     linked_elements_tab = new Tag.A({\r
298       attr: {href: '#' + @board().body.dom_id() },\r
299       content: 'new'\r
300     })\r
301     this.$el.append(linked_elements_tab.render().el)\r
302   \r
303   z: () ->\r
304     0\r
305   \r
306   add_label: () ->\r
307     this.$el.attr('id', @dom_id())\r
308   \r
309 class Editor.EditorModule.DockModule.TabModule.NewElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
310   \r
311   initialize: (options) ->\r
312     super(options)\r
313   \r
314   render: () ->\r
315     this.$el.attr('id', @dom_id())\r
316     @buttons = new Editor.EditorModule.DockModule.TabModule.NewElementButtons({parent: this})\r
317     this.$el.append(@buttons.render().el)\r
318     this\r
319   \r
320 class Editor.EditorModule.DockModule.TabModule.NewElementButtons extends Backbone.View\r
321   \r
322   initialize: (options) ->\r
323     @parent = options.parent\r
324     @panel = @parent.dock().editor().panel\r
325   \r
326   render: () ->\r
327     this.$el.html('')\r
328     _.each @panel.my_class().child_models(), (model) =>\r
329       icon = new Pettanr.Image.Icon({item: model})\r
330       this.$el.append(icon.render().el)\r
331     this\r
332   \r
333 class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.BoardBay\r
334   \r
335   initialize: (options) ->\r
336     super(options)\r
337     i = 0\r
338     _.each @elements(), (element) =>\r
339       tab = new Editor.EditorModule.DockModule.ScenarioBoard({\r
340         parent: this, index: i, name: element.item_name(), element: element\r
341       })\r
342       @add_tab(\r
343         tab, \r
344         new Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel({parent: tab, caption: element.item_name()}), \r
345         new Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody({parent: tab})\r
346       )\r
347       i++\r
348   \r
349   render: () ->\r
350     this.$el.html('')\r
351     this.$el.attr('id', @body.dom_id())\r
352     elements_tabs = new Editor.EditorModule.DockModule.ScenarioBay.ScenarioTabs({\r
353       tabs: @tabs\r
354     })\r
355     this.$el.append(elements_tabs.render().el)\r
356     _.each @tabs, (tab) =>\r
357       this.$el.append(tab.body.render().el)\r
358     elements_tabs.$el.tabs()\r
359     this\r
360   \r
361   elements: () ->\r
362     @root_item().scenario_elements()\r
363   \r
364   class_name: () ->\r
365     "tsort-box"\r
366   \r
367 class Editor.EditorModule.DockModule.ScenarioBay.ScenarioTabs extends Backbone.View\r
368   tagName: 'ul'\r
369   className: 'tsort'\r
370   \r
371   initialize: (options) ->\r
372     super(options)\r
373     @tabs = options.tabs\r
374   \r
375   render: () ->\r
376     this.$el.html('')\r
377     _.each @tabs, (tab) =>\r
378       this.$el.append(tab.label.render().el)\r
379     this\r
380   \r
381 class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
382   \r
383 class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
384   \r
385   initialize: (options) ->\r
386     super(options)\r
387   \r
388 class Editor.EditorModule.DockModule.ScenarioBoard extends Editor.EditorModule.DockModule.Board\r
389   \r
390   initialize: (options) ->\r
391     super(options)\r
392     @element = options.element\r
393   \r
394 class Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
395   \r
396   with_destroy_button: () ->\r
397     false\r
398   \r
399 class Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
400   \r
401   initialize: (options) ->\r
402     super(options)\r
403     @bucket = new Editor.EditorModule.DockModule.ScenarioBucket({\r
404       parent: this\r
405     })\r
406   \r
407 class Editor.EditorModule.DockModule.PriorityBay extends Editor.EditorModule.DockModule.BoardBay\r
408   \r
409   initialize: (options) ->\r
410     super(options)\r
411     i = 0\r
412     _.each @elements(), (element) =>\r
413       tab = new Editor.EditorModule.DockModule.PriorityBoard({\r
414         parent: this, index: i, name: element.item_name(), element: element\r
415       })\r
416       @add_tab(\r
417         tab, \r
418         new Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel({parent: tab, name: element.item_name()}), \r
419         new Editor.EditorModule.DockModule.TabModule.PriorityBoardBody({parent: tab})\r
420       )\r
421       i++\r
422   \r
423   render: () ->\r
424     this.$el.html('')\r
425     this.$el.attr('id', @body.dom_id())\r
426     elements_tabs = new Editor.EditorModule.DockModule.PriorityBay.PriorityTabs({\r
427       tabs: @tabs\r
428     })\r
429     this.$el.append(elements_tabs.render().el)\r
430     _.each @tabs, (tab) =>\r
431       this.$el.append(tab.body.render().el)\r
432     elements_tabs.$el.tabs()\r
433     this\r
434   \r
435   elements: () ->\r
436     @root_item().scenario_elements()\r
437   \r
438   class_name: () ->\r
439     "zsort-box"\r
440   \r
441 class Editor.EditorModule.DockModule.PriorityBay.PriorityTabs extends Backbone.View\r
442   tagName: 'ul'\r
443   className: 'zsort'\r
444   \r
445   initialize: (options) ->\r
446     super(options)\r
447     @tabs = options.tabs\r
448   \r
449   render: () ->\r
450     this.$el.html('')\r
451     _.each @tabs, (tab) =>\r
452       this.$el.append(tab.label.render().el)\r
453     this\r
454   \r
455 class Editor.EditorModule.DockModule.TabModule.PriorityBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
456   \r
457 class Editor.EditorModule.DockModule.TabModule.PriorityBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
458   \r
459   initialize: (options) ->\r
460     super(options)\r
461   \r
462 class Editor.EditorModule.DockModule.PriorityBoard extends Editor.EditorModule.DockModule.Board\r
463   \r
464   initialize: (options) ->\r
465     super(options)\r
466     @element = options.element\r
467   \r
468   mounted: () ->\r
469     false\r
470   \r
471 class Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
472   \r
473   with_destroy_button: () ->\r
474     false\r
475   \r
476 class Editor.EditorModule.DockModule.TabModule.PriorityBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
477   \r
478   initialize: (options) ->\r
479     super(options)\r
480     @bucket = new Editor.EditorModule.DockModule.PriorityBucket({\r
481       parent: this\r
482     })\r
483     \r
484 #    form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
485 #    form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
486 #    bucket = Bucket.new self,form\r
487   \r
488 class Editor.EditorModule.DockModule.NewBay extends Editor.EditorModule.DockModule.BoardBay\r
489   \r
490 \r
491 class Editor.EditorModule.DockModule.TabModule.NewBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
492   \r
493 \r
494 class Editor.EditorModule.DockModule.TabModule.NewBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
495   \r
496   initialize: (options) ->\r
497     super(options)\r
498   \r
499 class Editor.EditorModule.DockModule.NewBoard extends Editor.EditorModule.DockModule.Board\r
500   \r
501 class Editor.EditorModule.DockModule.TabModule.NewBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
502   \r
503 class Editor.EditorModule.DockModule.TabModule.NewBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
504   \r
505   initialize: (options) ->\r
506     super(options)\r
507 #    form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
508 #    form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
509 #    bucket = Bucket.new self,form\r
510   \r