parent: @scenario_bay\r
})\r
)\r
- @listenTo(@root_bay.body, 'put', @put)\r
+ @listenTo(@root_bay.body, 'http_post', @http_post)\r
+ @listenTo(@root_bay.body, 'save:success', @post_success)\r
+ @listenTo(@root_bay.body, 'save:fail', @post_fail)\r
+ @listenTo(@element_bay, 'add:credit', @add_credit)\r
+ @listenTo(@element_bay, 'pick', @pick)\r
+ @listenTo(@element_bay, 'dialog:open', @open_dialog)\r
+ @listenTo(@element_bay, 'dialog:close', @close_dialog)\r
+ @listenTo(@element_bay, 'destroy', @destroy)\r
\r
render: () ->\r
this.$el.html('')\r
this\r
\r
init_tabs: () ->\r
+ @element_bay.init_tabs()\r
+ @scenario_bay.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
dom_labels_class: () ->\r
@dom_class() + '-labels'\r
\r
- put: () ->\r
- @trigger('put')\r
+ http_post: (url, root_form) ->\r
+ @trigger('http_post', url, this) # send dock\r
false\r
\r
- save: (options) ->\r
- attrs = @save_data()\r
- @root_bay.body.form.save(attrs, options)\r
- \r
- save_data: () ->\r
- attrs = @root_bay.save_data()\r
- _.extend(attrs, @element_bay.save_data())\r
- attrs\r
- \r
- valid: () ->\r
- @root_bay.body.form.valid()\r
- \r
- invalid: () ->\r
- @root_bay.body.form.invalid()\r
- \r
-class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay\r
- \r
- render: () ->\r
- @body.render()\r
- \r
- save_data: () ->\r
- @body.form.save_data()\r
- \r
-class Editor.EditorModule.DockModule.TabModule.RootBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
- \r
-class Editor.EditorModule.DockModule.TabModule.RootBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
- \r
- initialize: (options) ->\r
- super(options)\r
- @form = Locmare.Form.factory({\r
- form_name: @root_item().item_name(), \r
- use_name: 'default' \r
- item: @root_item(), \r
- mounted: @mounted(), \r
- submit: 'default' \r
- operators: @dock().editor().operators,\r
- action: '/' + @root_item().table_name() + '/' + Pettanr.to_s(@root_item().get('id'))\r
- })\r
- @listenTo(@form, 'put', @put)\r
- \r
- render: () ->\r
- super()\r
- @el.className = @bay().body.dom_class()\r
- this.$el.html(@form.render().el)\r
- this\r
- \r
- mounted: () ->\r
- true\r
- \r
- dock: () ->\r
- @parent.dock()\r
- \r
- root_item: () ->\r
- @dock().root_item()\r
- \r
- put: () ->\r
- @trigger('put')\r
- false\r
- \r
-class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.DockModule.BoardBay\r
- \r
- initialize: (options) ->\r
- super(options)\r
- @elements_tabs = new Editor.EditorModule.DockModule.ElementBay.ElementsTabs({\r
- })\r
- @listenTo(@elements_tabs, 'sorted', @sorted)\r
- \r
- add_element: (element) ->\r
- index = element.get('z') - 1\r
- tab = new Editor.EditorModule.DockModule.ElementBoard({\r
- parent: this, index: index, name: element.item_name(), element: element\r
- })\r
- bb = new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab})\r
- @add_tab(\r
- tab, \r
- new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({parent: tab, name: element.item_name()}), \r
- bb\r
- )\r
- @elements_tabs.add_element_tab(tab)\r
- @elements_tabs.$el.tabs('refresh')\r
- bb.form\r
- \r
- add_new_tab: () ->\r
- tab = new Editor.EditorModule.DockModule.NewElementBoard({\r
- parent: this, index: 0, name: 'new'\r
- })\r
- bb = new Editor.EditorModule.DockModule.TabModule.NewElementBoardBody({parent: tab})\r
- @add_tab(\r
- tab, \r
- new Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel({parent: tab}), \r
- bb\r
- )\r
- @elements_tabs.add_element_tab(tab)\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
- _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
- if tab.element # without new_tab\r
- z = parseInt(tab.label.$el.attr('data-z'))\r
- tab.element.set({\r
- z: z\r
- }, {silent: true})\r
- tab.element.trigger('sort')\r
- \r
- panel_body: () ->\r
- @dock().editor().body\r
- \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.ElementBay.ElementsTabs extends Backbone.View\r
- tagName: 'div'\r
- className: 'elements_tabs ui-tabs-vertical ui-helper-clearfix'\r
- \r
- initialize: (options) ->\r
- super(options)\r
- @inner_elements_tabs = new Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs({\r
- })\r
- @listenTo(@inner_elements_tabs, 'sorted', @sorted)\r
- \r
- render: () ->\r
- this.$el.html('')\r
- this.$el.append(@inner_elements_tabs.render().$el)\r
- this\r
- \r
- add_element_tab: (tab) ->\r
- @inner_elements_tabs.add_label(tab.label)\r
- this.$el.append(tab.body.render().$el)\r
- \r
- sorted: () ->\r
- # data-z copy to model\r
- @trigger('sorted')\r
+ post_success: (model, response) ->\r
+ @trigger('save:success', model, response)\r
\r
-class Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs extends Backbone.View\r
- tagName: 'ul'\r
+ post_fail: (model, response) ->\r
+ @trigger('save:fail', response)\r
\r
- initialize: (options) ->\r
- super(options)\r
- @labels = []\r
- \r
- render: () ->\r
- this.$el.html('')\r
- this.$el.addClass('inner-elements-tabs')\r
- _.each @zorderd_labels(), (label) =>\r
- this.$el.append(label.render().$el)\r
- _this = this\r
- this.$el.sortable {\r
- update: (event, ui) ->\r
- z = 1\r
- $('.z-label', $(@)).map ->\r
- $(@).attr('data-z', z)\r
- z++\r
- _this.trigger('sorted')\r
- }\r
- this\r
- \r
- zorderd_labels: () ->\r
- res = []\r
- _.each @labels, (label) =>\r
- res[label.z()] = label\r
- res\r
- \r
- add_label: (label) ->\r
- #z = label.z()\r
- @labels.push(label) # insert array\r
- @render()\r
- label.add_label()\r
- \r
-class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
- \r
-class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
- \r
- render: () ->\r
- @body.render()\r
-class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board\r
- \r
- initialize: (options) ->\r
- super(options)\r
- @element = options.element\r
- \r
- dom_id: () ->\r
- super() + '-' + @element.get('id') # use tab index\r
- \r
-class Editor.EditorModule.DockModule.TabModule.ElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
- \r
- render: () ->\r
- super()\r
- this.$el.attr('data-z', @z())\r
- this.$el.removeClass('ui-corner-top')\r
- this.$el.addClass('ui-corner-left z-label')\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
- z: () ->\r
- @element().get('z')\r
- \r
- add_label: () ->\r
- this.$el.attr('id', @dom_id())\r
- \r
-class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
- \r
- initialize: (options) ->\r
- super(options)\r
- @form = Locmare.Form.factory({\r
- form_name: @element().item_name(), \r
- use_name: 'default' \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
- render: () ->\r
- @delegateEvents({'activate': 'activate'})\r
- this.$el.attr('id', @dom_id())\r
- this.$el.html(@form.render().el)\r
- this\r
- \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
- element: () ->\r
- @parent.element\r
- \r
-class Editor.EditorModule.DockModule.NewElementBoard extends Editor.EditorModule.DockModule.Board\r
- \r
- initialize: (options) ->\r
- super(options)\r
- @panel = @parent.dock().editor().panel\r
- \r
-class Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
- \r
- render: () ->\r
- super()\r
- this.$el.attr('data-z', @z())\r
- this.$el.removeClass('ui-corner-top')\r
- this.$el.addClass('ui-corner-left')\r
- this\r
- \r
- face: () ->\r
- this.$el.append()\r
- icon = new Pettanr.Image.SymbolImg({attr: {src: '/images/new.gif'}})\r
- linked_elements_tab = new Tag.A({\r
- attr: {href: '#' + @board().body.dom_id() },\r
- content: icon.render().el\r
- })\r
- this.$el.append(linked_elements_tab.render().el)\r
- \r
- z: () ->\r
- 0\r
- \r
- add_label: () ->\r
- this.$el.attr('id', @dom_id())\r
- \r
-class Editor.EditorModule.DockModule.TabModule.NewElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
- className: 'new-element-board-body'\r
- \r
- initialize: (options) ->\r
- super(options)\r
- \r
- render: () ->\r
- this.$el.attr('id', @dom_id())\r
- @buttons = new Editor.EditorModule.DockModule.NewElementButtons({\r
- parent: this, element_models: @element_models()\r
- })\r
- @form_wrapper = new Editor.EditorModule.DockModule.NewElementFormWrapper({\r
- parent: this\r
- })\r
- this.$el.append(@buttons.render().el)\r
- this.$el.append(@form_wrapper.clear().el)\r
- this\r
- \r
- panel: () ->\r
- @parent.panel\r
- \r
- element_models: () ->\r
- @panel().my_class().child_models()\r
- \r
-class Editor.EditorModule.DockModule.NewElementButtons extends Backbone.View\r
- tagName: 'div'\r
- className: 'new-element-buttons'\r
+ add_credit: (element) ->\r
+ @trigger('add:credit', element)\r
\r
- initialize: (options) ->\r
- super(options)\r
- @parent = options.parent\r
- @element_models = options.element_models\r
- \r
- render: () ->\r
- _.each @element_models, (model) =>\r
- button = new Editor.EditorModule.DockModule.NewElementButton({\r
- parent: this, model: model\r
- })\r
- this.$el.append(button.render().el)\r
- this\r
- \r
-class Editor.EditorModule.DockModule.NewElementButton extends Backbone.View\r
- tagName: 'div'\r
- \r
- initialize: (options) ->\r
- super(options)\r
- @parent = options.parent\r
- @model = options.model\r
- \r
- render: () ->\r
- this.$el.html('')\r
- icon = new Pettanr.Image.Icon({item: @model})\r
- linked_icon = new Editor.EditorModule.DockModule.NewElementLinkedButton({\r
- attr: {href: '#event' },\r
- content: icon.render().el,\r
- handler_name: 'click'\r
- })\r
- @listenTo(linked_icon, 'click', @click)\r
- this.$el.append(linked_icon.render().el)\r
- this\r
- \r
- click: () ->\r
- @set_dialog()\r
- @set_form()\r
- @dialog().$el.dialog('open')\r
- \r
- set_dialog: () ->\r
- @params = {\r
- controller: @model.path_name(), action: 'index',\r
- page_size: 6\r
- }\r
- @list = Locmare.ListGroup.list(\r
- @model.path_name(), 'index', @operators(), @params\r
- )\r
- @list.open(() =>\r
- pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, @params)\r
- f = new Locmare.Filer({\r
- el: @dialog().$el,\r
- item_name: @model.item_name(), \r
- items: @list.items(), \r
- pager: pager, \r
- operators: @operators()\r
- })\r
- )\r
- this\r
- \r
- set_form: () ->\r
- @form_wrapper().select(@model)\r
- \r
- operators: () ->\r
- @editor().operators\r
- \r
- form_wrapper: () ->\r
- @parent.parent.form_wrapper\r
- \r
- dock: () ->\r
- @parent.parent.dock()\r
- \r
- dialog: () ->\r
- @editor().dialog\r
- \r
- editor: () ->\r
- @dock().parent\r
- \r
-class Editor.EditorModule.DockModule.NewElementLinkedButton extends Tag.A\r
- \r
- click: () ->\r
- @trigger('click')\r
- return false\r
- \r
-class Editor.EditorModule.DockModule.NewElementFormWrapper extends Backbone.View\r
- tagName: 'div'\r
- \r
- initialize: (options) ->\r
- super(options)\r
- @parent = options.parent\r
- \r
- clear: () ->\r
- this.$el.html('new form')\r
- this\r
- \r
- render: () ->\r
- this.$el.html(@model.item_name())\r
- \r
- select: (model) ->\r
- @model = model\r
- @render()\r
- \r
-class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.SimpleBay\r
- \r
- render: () ->\r
- @body.render()\r
- \r
- add_element: (element) ->\r
- element_li = @body.add_element(element)\r
- element_li.body.form\r
- \r
- save_data: () ->\r
- @body.form.save_data()\r
- \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
- @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
- super()\r
- this.$el.append(@elements.render().el)\r
- @delegateEvents({'activate': 'activate'})\r
- this\r
- \r
- activate: () ->\r
- @elements.refresh()\r
- \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
- panel_body: () ->\r
- @dock().editor().body\r
- \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
- @parent = options.parent\r
- @element_lis = []\r
- \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
- refresh: () ->\r
- _.each @element_lis, (element_li) =>\r
- element_li.refresh()\r
- \r
- scenario_elements: () ->\r
- res = []\r
- _.each @element_lis, (element_li) =>\r
- res[element_li.t()] = element_li\r
- res\r
- \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
- 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
- @parent = options.parent\r
- @element = options.element\r
- \r
- render: () ->\r
- this.$el.html('')\r
- this.$el.attr('data-t', @t())\r
- @label = new Editor.EditorModule.DockModule.ScenarioBay.ElementLabel({\r
- parent: this, \r
- })\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
- refresh: () ->\r
- @body.form.refresh()\r
- \r
- t: () ->\r
- @element.get('t')\r
- \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
- @parent = options.parent\r
- \r
- render: () ->\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
- element: () ->\r
- @parent.element\r
- \r
- elements: () ->\r
- @parent.parent\r
- \r
- bay: () ->\r
- @elements().parent\r
- \r
- dock: () ->\r
- @bay().dock()\r
- \r
-class Editor.EditorModule.DockModule.ScenarioBay.ElementBody extends Backbone.View\r
- \r
- initialize: (options) ->\r
- super(options)\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
- render: () ->\r
- this.$el.html(@form.render().el)\r
- this\r
- \r
- element: () ->\r
- @parent.element\r
- \r
- elements: () ->\r
- @parent.parent\r
- \r
- bay: () ->\r
- @elements().parent\r
- \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
-\r
-class Editor.EditorModule.DockModule.TabModule.NewBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+ save: () ->\r
+ # merge panel and elements\r
+ attrs = @root_bay.save_data()\r
+ _.extend(attrs, @element_bay.save_data())\r
+ # save json data by panel form\r
+ @root_bay.body.form.save(attrs)\r
\r
-\r
-class Editor.EditorModule.DockModule.TabModule.NewBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+ pick: (new_item) ->\r
+ @scenario_bay.pick(new_item)\r
+ @trigger('add:element', new_item)\r
\r
- initialize: (options) ->\r
- super(options)\r
+ open_dialog: (dialog) ->\r
+ @trigger('dialog:open', dialog)\r
\r
-class Editor.EditorModule.DockModule.NewBoard extends Editor.EditorModule.DockModule.Board\r
+ close_dialog: (dialog) ->\r
+ @trigger('dialog:close', dialog)\r
\r
-class Editor.EditorModule.DockModule.TabModule.NewBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+ destroy: (element) ->\r
+ @trigger('destroy', element)\r
+ @scenario_bay.remove_element(element)\r
\r
-class Editor.EditorModule.DockModule.TabModule.NewBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
- \r
- initialize: (options) ->\r
- super(options)\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
+ quit: () ->\r
+ @root_bay.body.form.quit()\r
\r