_.each list, (element) =>\r
element.fetch({cache: true}).done =>\r
@add_element(element)\r
- #@dock.add_new_tab()\r
@body.on('panel:resize', @panel_resize)\r
@listenTo(@dock, 'put', @put)\r
Pettanr.History.lock_url = @panel.edit_url()\r
\r
add_element: (element) ->\r
- console.log(element)\r
panel_element_view = @body.add_element(element)\r
- element_form = @dock.add_element(element)\r
- @dig(element, panel_element_view, element_form)\r
+ element_tab_form = @dock.add_element_to_element_tab(element)\r
+ scenario_tab_form = @dock.add_element_to_scenario_tab(element)\r
+ @dig(element, panel_element_view, element_tab_form, scenario_tab_form)\r
if element.constructor.has_picture()\r
@credits.add_picture(element.picture())\r
\r
- dig: (element, panel_element_view, element_form) ->\r
- console.log(element.elements_items())\r
+ dig: (element, panel_element_view, element_tab_form, scenario_tab_form) ->\r
_.each element.elements_items(), (child_element) =>\r
- console.log(child_element)\r
child_element.fetch({cache: true}).done =>\r
child_panel_element_view = panel_element_view.add_element(child_element)\r
- child_element_form = element_form.add_element(child_element)\r
- @dig(child_element, child_panel_element_view, child_element_form)\r
+ child_element_tab_form = element_tab_form.add_element(child_element)\r
+ child_scenario_tab_form = scenario_tab_form.add_element(child_element)\r
+ @dig(child_element, child_panel_element_view, child_element_tab_form, child_scenario_tab_form)\r
\r
remove_element: (element) ->\r
\r
this.$el.append(@credits.render().el)\r
rb = new Tag.RowBreak()\r
this.$el.append(rb.render().el)\r
+ @dock.init_tabs()\r
+ window.editor = this # enable leave cancel flag on unsave\r
@dock.$el.tabs()\r
this\r
\r
this.$el.append(tab.render().el)\r
this\r
\r
- add_element: (element) ->\r
+ init_tabs: () ->\r
+ this.$el.tabs({\r
+ activate: (e, ui) ->\r
+ ui.newPanel.trigger('activate')\r
+ })\r
+ \r
+ add_element_to_element_tab: (element) ->\r
@element_bay.add_element(element)\r
\r
+ add_element_to_scenario_tab: (element) ->\r
+ @scenario_bay.add_element(element)\r
+ \r
editor: () ->\r
@parent\r
\r
\r
render: () ->\r
this.$el.html('')\r
+ @delegateEvents({'activate': 'activate'})\r
this.$el.attr('id', @body.dom_id())\r
this.$el.append(@elements_tabs.render().el)\r
- @elements_tabs.$el.tabs()\r
- # @add_new_tab()\r
+ _this = this\r
+ @elements_tabs.$el.tabs({\r
+ activate: (e, ui) ->\r
+ ui.newPanel.trigger('activate')\r
+ })\r
this\r
\r
+ activate: () ->\r
+ _.each @tabs, (tab) ->\r
+ return if not tab.element # without new element tab\r
+ console.log(tab.body.$el.css('display'))\r
+ if tab.body.$el.css('display') != 'none'\r
+ tab.body.refresh()\r
+ \r
sorted: () ->\r
# data-z copy to model\r
_.each @tabs, (tab) ->\r
\r
render: () ->\r
@body.render()\r
- \r
class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board\r
\r
initialize: (options) ->\r
})\r
\r
render: () ->\r
+ @delegateEvents({'activate': 'activate'})\r
this.$el.attr('id', @dom_id())\r
this.$el.html(@form.render().el)\r
this\r
add_element: (element) ->\r
@form.add_element(element)\r
\r
+ activate: () ->\r
+ @refresh()\r
+ \r
+ refresh: () ->\r
+ @form.refresh()\r
+ \r
mounted: () ->\r
true\r
\r
@model = model\r
@render()\r
\r
-class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.BoardBay\r
- \r
- initialize: (options) ->\r
- super(options)\r
- i = 0\r
- _.each @elements(), (element) =>\r
- tab = new Editor.EditorModule.DockModule.ScenarioBoard({\r
- parent: this, index: i, name: element.item_name(), element: element\r
- })\r
- @add_tab(\r
- tab, \r
- new Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel({parent: tab, caption: element.item_name()}), \r
- new Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody({parent: tab})\r
- )\r
- i++\r
+class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.SimpleBay\r
\r
render: () ->\r
- this.$el.html('')\r
- this.$el.attr('id', @body.dom_id())\r
- elements_tabs = new Editor.EditorModule.DockModule.ScenarioBay.ScenarioTabs({\r
- tabs: @tabs\r
- })\r
- this.$el.append(elements_tabs.render().el)\r
- _.each @tabs, (tab) =>\r
- this.$el.append(tab.body.render().el)\r
- elements_tabs.$el.tabs()\r
- this\r
+ @body.render()\r
\r
- elements: () ->\r
- @root_item().scenario_elements()\r
+ add_element: (element) ->\r
+ element_li = @body.add_element(element)\r
+ element_li.body.form\r
\r
- class_name: () ->\r
- "tsort-box"\r
+ save_data: () ->\r
+ @body.form.save_data()\r
\r
-class Editor.EditorModule.DockModule.ScenarioBay.ScenarioTabs extends Backbone.View\r
- tagName: 'ul'\r
- className: 'tsort'\r
+class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+ \r
+class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
\r
initialize: (options) ->\r
super(options)\r
- @tabs = options.tabs\r
+ @elements = new Editor.EditorModule.DockModule.ScenarioBay.Elements({\r
+ parent: this, \r
+ })\r
+ @listenTo(@elements, 'sorted', @sorted)\r
+ \r
+ add_element: (element) ->\r
+ element_li = @elements.add_element(element)\r
\r
render: () ->\r
- this.$el.html('')\r
- _.each @tabs, (tab) =>\r
- this.$el.append(tab.label.render().el)\r
+ super()\r
+ this.$el.append(@elements.render().el)\r
+ @delegateEvents({'activate': 'activate'})\r
this\r
\r
-class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+ activate: () ->\r
+ @elements.refresh()\r
\r
-class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+ sorted: () ->\r
+ # data-t copy to model\r
+ _.each @elements.element_lis, (element_li) =>\r
+ t = parseInt(element_li.$el.attr('data-t'))\r
+ element_li.element.set({\r
+ t: t\r
+ }, {silent: true})\r
+ element_li.element.trigger('sort')\r
\r
- initialize: (options) ->\r
- super(options)\r
+ panel_body: () ->\r
+ @dock().editor().body\r
\r
-class Editor.EditorModule.DockModule.ScenarioBoard extends Editor.EditorModule.DockModule.Board\r
+ save_data: () ->\r
+ attrs = {}\r
+ _.each @tabs, (tab) ->\r
+ return if not tab.element # without new element tab\r
+ form = tab.body.form\r
+ name = form.item.table_name() + '_attributes'\r
+ attrs[name] ||= []\r
+ attrs[name].push(form.save_data())\r
+ attrs\r
+ \r
+class Editor.EditorModule.DockModule.ScenarioBay.Elements extends Backbone.View\r
+ tagName: 'ul'\r
+ className: 'scenarios_elements'\r
\r
initialize: (options) ->\r
super(options)\r
- @element = options.element\r
+ @parent = options.parent\r
+ @element_lis = []\r
\r
-class Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+ render: () ->\r
+ this.$el.html('')\r
+ _.each @scenario_elements(), (element_li) =>\r
+ this.$el.append(element_li.render().$el)\r
+ _this = this\r
+ this.$el.sortable {\r
+ update: (event, ui) ->\r
+ t = 0\r
+ $('.t-label', $(@)).map ->\r
+ $(@).attr('data-t', t)\r
+ t++\r
+ _this.trigger('sorted')\r
+ }\r
+ this\r
\r
- with_destroy_button: () ->\r
- false\r
+ refresh: () ->\r
+ _.each @element_lis, (element_li) =>\r
+ element_li.refresh()\r
\r
-class Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
+ scenario_elements: () ->\r
+ res = []\r
+ _.each @element_lis, (element_li) =>\r
+ res[element_li.t()] = element_li\r
+ res\r
\r
- initialize: (options) ->\r
- super(options)\r
- @bucket = new Editor.EditorModule.DockModule.ScenarioBucket({\r
- parent: this\r
+ add_element: (element) ->\r
+ e = new Editor.EditorModule.DockModule.ScenarioBay.Element({\r
+ parent: this, \r
+ element: element\r
})\r
+ @element_lis.push(e) # insert array\r
+ @render()\r
+ e\r
\r
-class Editor.EditorModule.DockModule.PriorityBay extends Editor.EditorModule.DockModule.BoardBay\r
+ sorted: () ->\r
+ # data-t copy to model\r
+ @trigger('sorted')\r
+ \r
+class Editor.EditorModule.DockModule.ScenarioBay.Element extends Backbone.View\r
+ tagName: 'li'\r
+ className: 't-label'\r
\r
initialize: (options) ->\r
super(options)\r
- i = 0\r
- _.each @elements(), (element) =>\r
- tab = new Editor.EditorModule.DockModule.PriorityBoard({\r
- parent: this, index: i, name: element.item_name(), element: element\r
- })\r
- @add_tab(\r
- tab, \r
- new Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel({parent: tab, name: element.item_name()}), \r
- new Editor.EditorModule.DockModule.TabModule.PriorityBoardBody({parent: tab})\r
- )\r
- i++\r
+ @parent = options.parent\r
+ @element = options.element\r
\r
render: () ->\r
this.$el.html('')\r
- this.$el.attr('id', @body.dom_id())\r
- elements_tabs = new Editor.EditorModule.DockModule.PriorityBay.PriorityTabs({\r
- tabs: @tabs\r
+ this.$el.attr('data-t', @t())\r
+ @label = new Editor.EditorModule.DockModule.ScenarioBay.ElementLabel({\r
+ parent: this, \r
})\r
- this.$el.append(elements_tabs.render().el)\r
- _.each @tabs, (tab) =>\r
- this.$el.append(tab.body.render().el)\r
- elements_tabs.$el.tabs()\r
+ @body = new Editor.EditorModule.DockModule.ScenarioBay.ElementBody({\r
+ parent: this, \r
+ })\r
+ this.$el.append(@label.render().$el)\r
+ this.$el.append(@body.render().$el)\r
+ rb = new Tag.RowBreak()\r
+ this.$el.append(rb.render().el)\r
this\r
\r
- elements: () ->\r
- @root_item().scenario_elements()\r
+ refresh: () ->\r
+ @body.form.refresh()\r
\r
- class_name: () ->\r
- "zsort-box"\r
+ t: () ->\r
+ @element.get('t')\r
\r
-class Editor.EditorModule.DockModule.PriorityBay.PriorityTabs extends Backbone.View\r
- tagName: 'ul'\r
- className: 'zsort'\r
+ dom_id: () ->\r
+ super() + '-' + @element.get('id') # use tab index\r
+ \r
+class Editor.EditorModule.DockModule.ScenarioBay.ElementLabel extends Backbone.View\r
+ className: 'scenario-label'\r
\r
initialize: (options) ->\r
super(options)\r
- @tabs = options.tabs\r
+ @parent = options.parent\r
\r
render: () ->\r
- this.$el.html('')\r
- _.each @tabs, (tab) =>\r
- this.$el.append(tab.label.render().el)\r
+ this.$el.append(@element().element_face().render().el)\r
+ _this = this\r
+ this.$el.mouseover -> \r
+ _this.element().trigger('active')\r
+ this.$el.mouseout -> \r
+ _this.element().trigger('inactive')\r
this\r
\r
-class Editor.EditorModule.DockModule.TabModule.PriorityBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+ element: () ->\r
+ @parent.element\r
+ \r
+ elements: () ->\r
+ @parent.parent\r
\r
-class Editor.EditorModule.DockModule.TabModule.PriorityBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+ bay: () ->\r
+ @elements().parent\r
\r
- initialize: (options) ->\r
- super(options)\r
+ dock: () ->\r
+ @bay().dock()\r
\r
-class Editor.EditorModule.DockModule.PriorityBoard extends Editor.EditorModule.DockModule.Board\r
+class Editor.EditorModule.DockModule.ScenarioBay.ElementBody extends Backbone.View\r
\r
initialize: (options) ->\r
super(options)\r
- @element = options.element\r
+ @parent = options.parent\r
+ @form = Locmare.Form.factory({\r
+ form_name: @element().item_name(), \r
+ use_name: 'scenario' \r
+ item: @element(), \r
+ mounted: @mounted(), \r
+ submit: null, \r
+ operators: @dock().editor().operators,\r
+ action: '/' + @element().table_name() + '/' + Pettanr.to_s(@element().get('id'))\r
+ })\r
\r
- mounted: () ->\r
- false\r
+ render: () ->\r
+ this.$el.html(@form.render().el)\r
+ this\r
\r
-class Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+ element: () ->\r
+ @parent.element\r
\r
- with_destroy_button: () ->\r
- false\r
+ elements: () ->\r
+ @parent.parent\r
\r
-class Editor.EditorModule.DockModule.TabModule.PriorityBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
+ bay: () ->\r
+ @elements().parent\r
\r
- initialize: (options) ->\r
- super(options)\r
- @bucket = new Editor.EditorModule.DockModule.PriorityBucket({\r
- parent: this\r
- })\r
- \r
-# form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
-# form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
-# bucket = Bucket.new self,form\r
+ dock: () ->\r
+ @bay().dock()\r
+ \r
+ mounted: () ->\r
+ true\r
+ \r
+ element: () ->\r
+ @parent.element\r
\r
class Editor.EditorModule.DockModule.NewBay extends Editor.EditorModule.DockModule.BoardBay\r
\r