1 class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase
\r
5 initialize: (options) ->
\r
7 @root_bay = new Editor.EditorModule.DockModule.RootBay({
\r
8 parent: this, index: 0, name: 'panel'
\r
12 new Editor.EditorModule.DockModule.TabModule.RootBayLabel({
\r
13 parent: @root_bay, caption: 'panel'
\r
15 new Editor.EditorModule.DockModule.TabModule.RootBayBody({
\r
19 @element_bay = new Editor.EditorModule.DockModule.ElementBay({
\r
20 parent: this, index: 1, name: 'elements'
\r
24 new Editor.EditorModule.DockModule.TabModule.ElementBayLabel({
\r
25 parent: @element_bay, caption: 'elements'
\r
27 new Editor.EditorModule.DockModule.TabModule.ElementBayBody({
\r
28 parent: @element_bay
\r
31 @scenario_bay = new Editor.EditorModule.DockModule.ScenarioBay({
\r
32 parent: this, index: 2, name: 'scenario'
\r
36 new Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel({
\r
37 parent: @scenario_bay, caption: 'scenario'
\r
39 new Editor.EditorModule.DockModule.TabModule.ScenarioBayBody({
\r
40 parent: @scenario_bay
\r
43 @listenTo(@root_bay.body, 'http_post', @http_post)
\r
44 @listenTo(@element_bay, 'add:credit', @add_credit)
\r
48 l = _.map @tabs, (tab) ->
\r
50 labels = new Tag.Ul({contents: l, class_name: @dom_labels_class()})
\r
51 this.$el.append(labels.render().el)
\r
52 _.each @tabs, (tab) =>
\r
53 this.$el.append(tab.render().el)
\r
57 @element_bay.init_tabs()
\r
58 @scenario_bay.init_tabs()
\r
60 activate: (e, ui) ->
\r
61 ui.newPanel.trigger('activate')
\r
68 @editor().dom_id() + '-dock'
\r
71 @editor().dom_class() + '-dock'
\r
73 dom_labels_class: () ->
\r
74 @dom_class() + '-labels'
\r
76 http_post: (url, root_form) ->
\r
77 @trigger('http_post', url, this) # send dock
\r
80 add_credit: (element) ->
\r
81 @trigger('add:credit', element)
\r
84 attrs = @root_bay.save_data()
\r
85 _.extend(attrs, @element_bay.save_data())
\r
88 class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay
\r
94 @body.form.save_data()
\r
96 class Editor.EditorModule.DockModule.TabModule.RootBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel
\r
98 class Editor.EditorModule.DockModule.TabModule.RootBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody
\r
100 initialize: (options) ->
\r
102 @form = Locmare.Form.factory({
\r
103 form_name: @root_item().item_name(),
\r
104 use_name: 'default'
\r
105 item: @root_item(),
\r
106 mounted: @mounted(),
\r
108 operators: @dock().editor().operators,
\r
109 action: '/' + @root_item().table_name() + '/' + Pettanr.to_s(@root_item().get('id'))
\r
111 @listenTo(@form, 'http_post', @http_post)
\r
115 @el.className = @bay().body.dom_class()
\r
116 this.$el.html(@form.render().el)
\r
126 @dock().root_item()
\r
128 http_post: (url, root_form) ->
\r
129 @trigger('http_post', url, root_form)
\r
132 class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.DockModule.BoardBay
\r
134 initialize: (options) ->
\r
136 @elements_tabs = new Editor.EditorModule.DockModule.ElementBay.ElementsTabs({
\r
138 @listenTo(@elements_tabs, 'sorted', @sorted)
\r
140 add_element: (element) ->
\r
141 index = element.get('z') - 1
\r
142 tab = new Editor.EditorModule.DockModule.ElementBoard({
\r
143 parent: this, index: index, name: element.item_name(), element: element
\r
145 bb = new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab})
\r
148 new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({parent: tab, name: element.item_name()}),
\r
151 @elements_tabs.add_element_tab(tab)
\r
152 @elements_tabs.$el.tabs('refresh')
\r
153 if element.constructor.has_picture()
\r
154 @trigger('add:credit', element)
\r
157 tab = new Editor.EditorModule.DockModule.NewElementBoard({
\r
158 parent: this, index: 0, name: 'new'
\r
160 bb = new Editor.EditorModule.DockModule.TabModule.NewElementBoardBody({parent: tab})
\r
163 new Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel({parent: tab}),
\r
166 @elements_tabs.add_element_tab(tab)
\r
170 @delegateEvents({'activate': 'activate'})
\r
171 this.$el.attr('id', @body.dom_id())
\r
172 this.$el.append(@elements_tabs.render().el)
\r
174 @elements_tabs.$el.tabs({
\r
175 activate: (e, ui) ->
\r
176 ui.newPanel.trigger('activate')
\r
182 list = @root_item().zorderd_elements()
\r
183 _.each list, (element) =>
\r
184 @add_element(element)
\r
187 _.each @tabs, (tab) ->
\r
188 return if not tab.element # without new element tab
\r
189 if tab.body.$el.css('display') != 'none'
\r
193 # data-z copy to model
\r
194 _.each @tabs, (tab) ->
\r
195 if tab.element # without new_tab
\r
196 z = parseInt(tab.label.$el.attr('data-z'))
\r
200 tab.element.trigger('sort')
\r
203 @dock().editor().body
\r
207 _.each @tabs, (tab) ->
\r
208 return if not tab.element # without new element tab
\r
209 form = tab.body.form
\r
210 name = form.item.table_name() + '_attributes'
\r
212 attrs[name].push(form.save_data())
\r
215 class Editor.EditorModule.DockModule.ElementBay.ElementsTabs extends Backbone.View
\r
217 className: 'elements_tabs ui-tabs-vertical ui-helper-clearfix'
\r
219 initialize: (options) ->
\r
221 @inner_elements_tabs = new Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs({
\r
223 @listenTo(@inner_elements_tabs, 'sorted', @sorted)
\r
227 this.$el.append(@inner_elements_tabs.render().$el)
\r
230 add_element_tab: (tab) ->
\r
231 @inner_elements_tabs.add_label(tab.label)
\r
232 this.$el.append(tab.body.render().$el)
\r
235 # data-z copy to model
\r
238 class Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs extends Backbone.View
\r
241 initialize: (options) ->
\r
247 this.$el.addClass('inner-elements-tabs')
\r
248 _.each @zorderd_labels(), (label) =>
\r
249 this.$el.append(label.render().$el)
\r
251 this.$el.sortable {
\r
252 update: (event, ui) ->
\r
254 $('.z-label', $(@)).map ->
\r
255 $(@).attr('data-z', z)
\r
257 _this.trigger('sorted')
\r
261 zorderd_labels: () ->
\r
263 _.each @labels, (label) =>
\r
264 res[label.z()] = label
\r
267 add_label: (label) ->
\r
269 @labels.push(label) # insert array
\r
273 class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel
\r
275 class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody
\r
279 class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board
\r
281 initialize: (options) ->
\r
283 @element = options.element
\r
286 super() + '-' + @element.get('id') # use tab index
\r
288 class Editor.EditorModule.DockModule.TabModule.ElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel
\r
292 this.$el.attr('data-z', @z())
\r
293 this.$el.removeClass('ui-corner-top')
\r
294 this.$el.addClass('ui-corner-left z-label')
\r
296 this.$el.mouseover ->
\r
297 _this.element().trigger('active')
\r
298 this.$el.mouseout ->
\r
299 _this.element().trigger('inactive')
\r
303 @element().get('z')
\r
306 this.$el.attr('id', @dom_id())
\r
308 class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody
\r
310 initialize: (options) ->
\r
312 @form = Locmare.Form.factory({
\r
313 form_name: @element().item_name(),
\r
314 use_name: 'default'
\r
316 element_form: true,
\r
318 operators: @dock().editor().operators,
\r
322 @delegateEvents({'activate': 'activate'})
\r
323 this.$el.attr('id', @dom_id())
\r
324 this.$el.html(@form.render().el)
\r
327 add_element: (element) ->
\r
328 @form.add_element(element)
\r
339 class Editor.EditorModule.DockModule.NewElementBoard extends Editor.EditorModule.DockModule.Board
\r
341 initialize: (options) ->
\r
343 @panel = @parent.dock().editor().panel
\r
345 class Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel
\r
349 this.$el.attr('data-z', @z())
\r
350 this.$el.removeClass('ui-corner-top')
\r
351 this.$el.addClass('ui-corner-left')
\r
355 icon = new Pettanr.Image.SymbolImg({attr: {src: '/images/new.gif'}})
\r
356 linked_elements_tab = new Tag.A({
\r
357 attr: {href: '#' + @board().body.dom_id() },
\r
358 content: icon.render().el
\r
360 this.$el.append(linked_elements_tab.render().el)
\r
366 this.$el.attr('id', @dom_id())
\r
368 class Editor.EditorModule.DockModule.TabModule.NewElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody
\r
369 className: 'new-element-board-body'
\r
371 initialize: (options) ->
\r
375 this.$el.attr('id', @dom_id())
\r
376 @buttons = new Editor.EditorModule.DockModule.NewElementButtons({
\r
377 parent: this, element_models: @element_models()
\r
379 @listenTo(@buttons, 'click', @click_button)
\r
380 this.$el.append(@buttons.render().el)
\r
386 element_models: () ->
\r
387 @panel().my_class().child_models()
\r
389 click_button: (model) ->
\r
390 @new_element.remove() if @new_element
\r
391 @new_element = new Pettanr.Views[model.singular()].NewElement({
\r
392 parent: this, target_model: model
\r
394 this.$el.append(@new_element.render().el)
\r
396 class Editor.EditorModule.DockModule.NewElementButtons extends Backbone.View
\r
398 className: 'new-element-buttons'
\r
400 initialize: (options) ->
\r
402 @parent = options.parent
\r
403 @element_models = options.element_models
\r
406 _.each @element_models, (model) =>
\r
407 button = new Editor.EditorModule.DockModule.NewElementButton({
\r
408 parent: this, model: model
\r
410 @listenTo(button, 'click', @click)
\r
411 this.$el.append(button.render().el)
\r
415 @trigger('click', model)
\r
417 class Editor.EditorModule.DockModule.NewElementButton extends Backbone.View
\r
420 initialize: (options) ->
\r
422 @parent = options.parent
\r
423 @model = options.model
\r
427 icon = new Pettanr.Image.Icon({item: @model})
\r
428 linked_icon = new Editor.EditorModule.DockModule.NewElementLinkedButton({
\r
429 attr: {href: '#' },
\r
430 content: icon.render().el
\r
432 @listenTo(linked_icon, 'click', @click)
\r
433 this.$el.append(linked_icon.render().el)
\r
437 @trigger('click', @model)
\r
439 class Editor.EditorModule.DockModule.NewElementLinkedButton extends Tag.A
\r
445 class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.SimpleBay
\r
447 initialize: (options) ->
\r
453 add_element: (element) ->
\r
454 @body.add_element(element)
\r
457 list = @root_item().scenario_elements()
\r
458 _.each list, (element) =>
\r
459 @add_element(element)
\r
462 @body.form.save_data()
\r
464 class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel
\r
466 class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody
\r
468 initialize: (options) ->
\r
470 @elements = new Editor.EditorModule.DockModule.ScenarioBay.Elements({
\r
473 @listenTo(@elements, 'sorted', @sorted)
\r
475 add_element: (element) ->
\r
476 @elements.add_element(element)
\r
480 this.$el.append(@elements.render().el)
\r
481 @delegateEvents({'activate': 'activate'})
\r
485 @elements.refresh()
\r
488 # data-t copy to model
\r
489 _.each @elements.element_lis, (element_li) =>
\r
490 t = parseInt(element_li.$el.attr('data-t'))
\r
491 element_li.element.set({
\r
494 element_li.element.trigger('sort')
\r
497 @dock().editor().body
\r
501 _.each @tabs, (tab) ->
\r
502 return if not tab.element # without new element tab
\r
503 form = tab.body.form
\r
504 name = form.item.table_name() + '_attributes'
\r
506 attrs[name].push(form.save_data())
\r
509 class Editor.EditorModule.DockModule.ScenarioBay.Elements extends Backbone.View
\r
511 className: 'scenarios_elements'
\r
513 initialize: (options) ->
\r
515 @parent = options.parent
\r
520 _.each @scenario_elements(), (element_li) =>
\r
521 this.$el.append(element_li.render().$el)
\r
523 this.$el.sortable {
\r
524 update: (event, ui) ->
\r
526 $('.t-label', $(@)).map ->
\r
527 $(@).attr('data-t', t)
\r
529 _this.trigger('sorted')
\r
534 _.each @element_lis, (element_li) =>
\r
535 element_li.refresh()
\r
537 scenario_elements: () ->
\r
539 _.each @element_lis, (element_li) =>
\r
540 res[element_li.t()] = element_li
\r
543 add_element: (element) ->
\r
544 e = new Editor.EditorModule.DockModule.ScenarioBay.Element({
\r
548 @element_lis.push(e) # insert array
\r
553 # data-t copy to model
\r
556 class Editor.EditorModule.DockModule.ScenarioBay.Element extends Backbone.View
\r
558 className: 't-label'
\r
560 initialize: (options) ->
\r
562 @parent = options.parent
\r
563 @element = options.element
\r
567 this.$el.attr('data-t', @t())
\r
568 @label = new Editor.EditorModule.DockModule.ScenarioBay.ElementLabel({
\r
571 @body = new Editor.EditorModule.DockModule.ScenarioBay.ElementBody({
\r
574 this.$el.append(@label.render().$el)
\r
575 this.$el.append(@body.render().$el)
\r
576 rb = new Tag.RowBreak()
\r
577 this.$el.append(rb.render().el)
\r
581 @body.form.refresh()
\r
587 super() + '-' + @element.get('id') # use tab index
\r
589 class Editor.EditorModule.DockModule.ScenarioBay.ElementLabel extends Backbone.View
\r
590 className: 'scenario-label'
\r
592 initialize: (options) ->
\r
594 @parent = options.parent
\r
597 this.$el.append(@element().element_face().render().el)
\r
599 this.$el.mouseover ->
\r
600 _this.element().trigger('active')
\r
601 this.$el.mouseout ->
\r
602 _this.element().trigger('inactive')
\r
617 class Editor.EditorModule.DockModule.ScenarioBay.ElementBody extends Backbone.View
\r
619 initialize: (options) ->
\r
621 @parent = options.parent
\r
622 @form = Locmare.Form.factory({
\r
623 form_name: @element().item_name(),
\r
624 use_name: 'scenario'
\r
626 element_form: true,
\r
628 operators: @dock().editor().operators,
\r
632 this.$el.html(@form.render().el)
\r
653 class Editor.EditorModule.DockModule.NewBay extends Editor.EditorModule.DockModule.BoardBay
\r
656 class Editor.EditorModule.DockModule.TabModule.NewBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel
\r
659 class Editor.EditorModule.DockModule.TabModule.NewBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody
\r
661 initialize: (options) ->
\r
664 class Editor.EditorModule.DockModule.NewBoard extends Editor.EditorModule.DockModule.Board
\r
666 class Editor.EditorModule.DockModule.TabModule.NewBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel
\r
668 class Editor.EditorModule.DockModule.TabModule.NewBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody
\r
670 initialize: (options) ->
\r
672 # form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]
\r
673 # form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
\r
674 # bucket = Bucket.new self,form
\r