From e4faa10efb5330dde4c13345677b2fff49c4df3f Mon Sep 17 00:00:00 2001 From: yasushiito Date: Sun, 22 Mar 2015 14:13:45 +0900 Subject: [PATCH] fix: yasapp dock --- .../javascripts/editor/panel_editor.js.coffee | 7 +- .../javascripts/editor/panel_editor/dock.js.coffee | 592 +-------------------- .../editor/panel_editor/element.js.coffee | 110 ++++ .../editor/panel_editor/element/boards.js.coffee | 65 +++ .../panel_editor/element/element_board.js.coffee | 63 +++ .../panel_editor/element/new_board.js.coffee | 114 ++++ .../javascripts/editor/panel_editor/root.js.coffee | 44 ++ .../editor/panel_editor/scenario.js.coffee | 237 +++++++++ app/assets/javascripts/locmare/picker.js.coffee | 15 - .../javascripts/locmare/picker/body.js.coffee | 14 - .../locmare/picker/body/file_body.js.coffee | 17 - .../picker/body/file_body/file_item.js.coffee | 65 --- .../locmare/picker/body/file_header.js.coffee | 7 - .../locmare/picker/body/file_header/base.js.coffee | 15 - .../locmare/picker/body/file_header/none.js.coffee | 5 - .../locmare/picker/body/file_header/show.js.coffee | 3 - .../javascripts/locmare/picker/header.js.coffee | 2 - .../locmare/profiler/association.js.coffee | 4 +- .../profiler/association/belongs_to.js.coffee | 4 + .../profiler/association/has_many.js.coffee | 4 + .../locmare/profiler/association/has_one.js.coffee | 4 + .../javascripts/locmare/profiler/header.js.coffee | 18 +- .../views/panel_pictures/new_element.js.coffee | 32 +- app/assets/javascripts/{ap.js => yasapp.js} | 6 + app/controllers/top_controller.rb | 2 +- app/views/layouts/{ap.html.erb => yasapp.html.erb} | 2 +- 26 files changed, 709 insertions(+), 742 deletions(-) create mode 100644 app/assets/javascripts/editor/panel_editor/element.js.coffee create mode 100644 app/assets/javascripts/editor/panel_editor/element/boards.js.coffee create mode 100644 app/assets/javascripts/editor/panel_editor/element/element_board.js.coffee create mode 100644 app/assets/javascripts/editor/panel_editor/element/new_board.js.coffee create mode 100644 app/assets/javascripts/editor/panel_editor/root.js.coffee create mode 100644 app/assets/javascripts/editor/panel_editor/scenario.js.coffee delete mode 100644 app/assets/javascripts/locmare/picker.js.coffee delete mode 100644 app/assets/javascripts/locmare/picker/body.js.coffee delete mode 100644 app/assets/javascripts/locmare/picker/body/file_body.js.coffee delete mode 100644 app/assets/javascripts/locmare/picker/body/file_body/file_item.js.coffee delete mode 100644 app/assets/javascripts/locmare/picker/body/file_header.js.coffee delete mode 100644 app/assets/javascripts/locmare/picker/body/file_header/base.js.coffee delete mode 100644 app/assets/javascripts/locmare/picker/body/file_header/none.js.coffee delete mode 100644 app/assets/javascripts/locmare/picker/body/file_header/show.js.coffee delete mode 100644 app/assets/javascripts/locmare/picker/header.js.coffee rename app/assets/javascripts/{ap.js => yasapp.js} (98%) rename app/views/layouts/{ap.html.erb => yasapp.html.erb} (93%) diff --git a/app/assets/javascripts/editor/panel_editor.js.coffee b/app/assets/javascripts/editor/panel_editor.js.coffee index e19fa4cd..dd15a089 100644 --- a/app/assets/javascripts/editor/panel_editor.js.coffee +++ b/app/assets/javascripts/editor/panel_editor.js.coffee @@ -94,14 +94,15 @@ class Editor.PanelEditor.Dialog extends Backbone.View start: (@target_model, params, form) -> @get(params, form) + stop: () -> + render: () -> this.$el.html('') - @history.render() this refresh: (view) -> this.$el.html('') - this.$el.append(@history.el) + this.$el.append(@history.render().el) rb = new Tag.RowBreak() this.$el.append(rb.render().el) this.$el.append(view.el) @@ -143,5 +144,5 @@ class Editor.PanelEditor.Dialog extends Backbone.View this.$el.dialog({title: t}) pick: (item) -> - console.log(item) + @trigger('pick', item) diff --git a/app/assets/javascripts/editor/panel_editor/dock.js.coffee b/app/assets/javascripts/editor/panel_editor/dock.js.coffee index bd5795fc..40f079d1 100644 --- a/app/assets/javascripts/editor/panel_editor/dock.js.coffee +++ b/app/assets/javascripts/editor/panel_editor/dock.js.coffee @@ -42,6 +42,7 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase ) @listenTo(@root_bay.body, 'http_post', @http_post) @listenTo(@element_bay, 'add:credit', @add_credit) + @listenTo(@element_bay, 'pick', @pick) render: () -> this.$el.html('') @@ -85,591 +86,8 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase _.extend(attrs, @element_bay.save_data()) attrs -class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay - - render: () -> - @body.render() - - save_data: () -> - @body.form.save_data() - -class Editor.EditorModule.DockModule.TabModule.RootBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel - -class Editor.EditorModule.DockModule.TabModule.RootBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody - - initialize: (options) -> - super(options) - @form = Locmare.Form.factory({ - form_name: @root_item().item_name(), - use_name: 'default' - item: @root_item(), - mounted: @mounted(), - submit: 'default' - operators: @dock().editor().operators, - action: '/' + @root_item().table_name() + '/' + Pettanr.to_s(@root_item().get('id')) - }) - @listenTo(@form, 'http_post', @http_post) - - render: () -> - super() - @el.className = @bay().body.dom_class() - this.$el.html(@form.render().el) - this - - mounted: () -> - true - - dock: () -> - @parent.dock() - - root_item: () -> - @dock().root_item() - - http_post: (url, root_form) -> - @trigger('http_post', url, root_form) - false - -class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.DockModule.BoardBay - - initialize: (options) -> - super(options) - @elements_tabs = new Editor.EditorModule.DockModule.ElementBay.ElementsTabs({ - }) - @listenTo(@elements_tabs, 'sorted', @sorted) - - add_element: (element) -> - index = element.get('z') - 1 - tab = new Editor.EditorModule.DockModule.ElementBoard({ - parent: this, index: index, name: element.item_name(), element: element - }) - bb = new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab}) - @add_tab( - tab, - new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({parent: tab, name: element.item_name()}), - bb - ) - @elements_tabs.add_element_tab(tab) - @elements_tabs.$el.tabs('refresh') - if element.constructor.has_picture() - @trigger('add:credit', element) - - add_new_tab: () -> - tab = new Editor.EditorModule.DockModule.NewElementBoard({ - parent: this, index: 0, name: 'new' - }) - bb = new Editor.EditorModule.DockModule.TabModule.NewElementBoardBody({parent: tab}) - @add_tab( - tab, - new Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel({parent: tab}), - bb - ) - @elements_tabs.add_element_tab(tab) - - render: () -> - this.$el.html('') - @delegateEvents({'activate': 'activate'}) - this.$el.attr('id', @body.dom_id()) - this.$el.append(@elements_tabs.render().el) - _this = this - @elements_tabs.$el.tabs({ - activate: (e, ui) -> - ui.newPanel.trigger('activate') - }) - this - - init_tabs: () -> - @add_new_tab() - list = @root_item().zorderd_elements() - _.each list, (element) => - @add_element(element) - - activate: () -> - _.each @tabs, (tab) -> - return if not tab.element # without new element tab - if tab.body.$el.css('display') != 'none' - tab.body.refresh() - - sorted: () -> - # data-z copy to model - _.each @tabs, (tab) -> - if tab.element # without new_tab - z = parseInt(tab.label.$el.attr('data-z')) - tab.element.set({ - z: z - }, {silent: true}) - tab.element.trigger('sort') - - panel_body: () -> - @dock().editor().body - - save_data: () -> - attrs = {} - _.each @tabs, (tab) -> - return if not tab.element # without new element tab - form = tab.body.form - name = form.item.table_name() + '_attributes' - attrs[name] ||= [] - attrs[name].push(form.save_data()) - attrs - -class Editor.EditorModule.DockModule.ElementBay.ElementsTabs extends Backbone.View - tagName: 'div' - className: 'elements_tabs ui-tabs-vertical ui-helper-clearfix' - - initialize: (options) -> - super(options) - @inner_elements_tabs = new Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs({ - }) - @listenTo(@inner_elements_tabs, 'sorted', @sorted) - - render: () -> - this.$el.html('') - this.$el.append(@inner_elements_tabs.render().$el) - this - - add_element_tab: (tab) -> - @inner_elements_tabs.add_label(tab.label) - this.$el.append(tab.body.render().$el) - - sorted: () -> - # data-z copy to model - @trigger('sorted') - -class Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs extends Backbone.View - tagName: 'ul' - - initialize: (options) -> - super(options) - @labels = [] - - render: () -> - this.$el.html('') - this.$el.addClass('inner-elements-tabs') - _.each @zorderd_labels(), (label) => - this.$el.append(label.render().$el) - _this = this - this.$el.sortable { - update: (event, ui) -> - z = 1 - $('.z-label', $(@)).map -> - $(@).attr('data-z', z) - z++ - _this.trigger('sorted') - } - this - - zorderd_labels: () -> - res = [] - _.each @labels, (label) => - res[label.z()] = label - res - - add_label: (label) -> - #z = label.z() - @labels.push(label) # insert array - @render() - label.add_label() - -class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel - -class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody - - render: () -> - @body.render() -class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board - - initialize: (options) -> - super(options) - @element = options.element - - dom_id: () -> - super() + '-' + @element.get('id') # use tab index - -class Editor.EditorModule.DockModule.TabModule.ElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel - - render: () -> - super() - this.$el.attr('data-z', @z()) - this.$el.removeClass('ui-corner-top') - this.$el.addClass('ui-corner-left z-label') - _this = this - this.$el.mouseover -> - _this.element().trigger('active') - this.$el.mouseout -> - _this.element().trigger('inactive') - this - - z: () -> - @element().get('z') - - add_label: () -> - this.$el.attr('id', @dom_id()) - -class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody - - initialize: (options) -> - super(options) - @form = Locmare.Form.factory({ - form_name: @element().item_name(), - use_name: 'default' - item: @element(), - element_form: true, - submit: null, - operators: @dock().editor().operators, - }) - - render: () -> - @delegateEvents({'activate': 'activate'}) - this.$el.attr('id', @dom_id()) - this.$el.html(@form.render().el) - this - - add_element: (element) -> - @form.add_element(element) - - activate: () -> - @refresh() - - refresh: () -> - @form.refresh() - - element: () -> - @parent.element - -class Editor.EditorModule.DockModule.NewElementBoard extends Editor.EditorModule.DockModule.Board - - initialize: (options) -> - super(options) - @panel = @parent.dock().editor().panel - -class Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel - - render: () -> - super() - this.$el.attr('data-z', @z()) - this.$el.removeClass('ui-corner-top') - this.$el.addClass('ui-corner-left') - this - - face: () -> - icon = new Pettanr.Image.SymbolImg({attr: {src: '/images/new.gif'}}) - linked_elements_tab = new Tag.A({ - attr: {href: '#' + @board().body.dom_id() }, - content: icon.render().el - }) - this.$el.append(linked_elements_tab.render().el) - - z: () -> - 0 - - add_label: () -> - this.$el.attr('id', @dom_id()) - -class Editor.EditorModule.DockModule.TabModule.NewElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody - className: 'new-element-board-body' - - initialize: (options) -> - super(options) - - render: () -> - this.$el.attr('id', @dom_id()) - @buttons = new Editor.EditorModule.DockModule.NewElementButtons({ - parent: this, element_models: @element_models() - }) - @listenTo(@buttons, 'click', @click_button) - this.$el.append(@buttons.render().el) - this - - panel: () -> - @parent.panel - - element_models: () -> - @panel().my_class().child_models() - - click_button: (model) -> - @new_element.remove() if @new_element - @new_element = new Pettanr.Views[model.singular()].NewElement({ - parent: this, target_model: model - }) - this.$el.append(@new_element.render().el) - -class Editor.EditorModule.DockModule.NewElementButtons extends Backbone.View - tagName: 'div' - className: 'new-element-buttons' - - initialize: (options) -> - super(options) - @parent = options.parent - @element_models = options.element_models - - render: () -> - _.each @element_models, (model) => - button = new Editor.EditorModule.DockModule.NewElementButton({ - parent: this, model: model - }) - @listenTo(button, 'click', @click) - this.$el.append(button.render().el) - this - - click: (model) -> - @trigger('click', model) - -class Editor.EditorModule.DockModule.NewElementButton extends Backbone.View - tagName: 'div' - - initialize: (options) -> - super(options) - @parent = options.parent - @model = options.model - - render: () -> - this.$el.html('') - icon = new Pettanr.Image.Icon({item: @model}) - linked_icon = new Editor.EditorModule.DockModule.NewElementLinkedButton({ - attr: {href: '#' }, - content: icon.render().el - }) - @listenTo(linked_icon, 'click', @click) - this.$el.append(linked_icon.render().el) - this - - click: () -> - @trigger('click', @model) - -class Editor.EditorModule.DockModule.NewElementLinkedButton extends Tag.A - - click: () -> - @trigger('click') - return false - -class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.SimpleBay - - initialize: (options) -> - super(options) - - render: () -> - @body.render() - - add_element: (element) -> - @body.add_element(element) - - init_tabs: () -> - list = @root_item().scenario_elements() - _.each list, (element) => - @add_element(element) - - save_data: () -> - @body.form.save_data() - -class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel - -class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody - - initialize: (options) -> - super(options) - @elements = new Editor.EditorModule.DockModule.ScenarioBay.Elements({ - parent: this, - }) - @listenTo(@elements, 'sorted', @sorted) - - add_element: (element) -> - @elements.add_element(element) - - render: () -> - super() - this.$el.append(@elements.render().el) - @delegateEvents({'activate': 'activate'}) - this - - activate: () -> - @elements.refresh() - - sorted: () -> - # data-t copy to model - _.each @elements.element_lis, (element_li) => - t = parseInt(element_li.$el.attr('data-t')) - element_li.element.set({ - t: t - }, {silent: true}) - element_li.element.trigger('sort') - - panel_body: () -> - @dock().editor().body - - save_data: () -> - attrs = {} - _.each @tabs, (tab) -> - return if not tab.element # without new element tab - form = tab.body.form - name = form.item.table_name() + '_attributes' - attrs[name] ||= [] - attrs[name].push(form.save_data()) - attrs - -class Editor.EditorModule.DockModule.ScenarioBay.Elements extends Backbone.View - tagName: 'ul' - className: 'scenarios_elements' - - initialize: (options) -> - super(options) - @parent = options.parent - @element_lis = [] - - render: () -> - this.$el.html('') - _.each @scenario_elements(), (element_li) => - this.$el.append(element_li.render().$el) - _this = this - this.$el.sortable { - update: (event, ui) -> - t = 0 - $('.t-label', $(@)).map -> - $(@).attr('data-t', t) - t++ - _this.trigger('sorted') - } - this - - refresh: () -> - _.each @element_lis, (element_li) => - element_li.refresh() - - scenario_elements: () -> - res = [] - _.each @element_lis, (element_li) => - res[element_li.t()] = element_li - res - - add_element: (element) -> - e = new Editor.EditorModule.DockModule.ScenarioBay.Element({ - parent: this, - element: element - }) - @element_lis.push(e) # insert array - @render() - e - - sorted: () -> - # data-t copy to model - @trigger('sorted') - -class Editor.EditorModule.DockModule.ScenarioBay.Element extends Backbone.View - tagName: 'li' - className: 't-label' - - initialize: (options) -> - super(options) - @parent = options.parent - @element = options.element - - render: () -> - this.$el.html('') - this.$el.attr('data-t', @t()) - @label = new Editor.EditorModule.DockModule.ScenarioBay.ElementLabel({ - parent: this, - }) - @body = new Editor.EditorModule.DockModule.ScenarioBay.ElementBody({ - parent: this, - }) - this.$el.append(@label.render().$el) - this.$el.append(@body.render().$el) - rb = new Tag.RowBreak() - this.$el.append(rb.render().el) - this - - refresh: () -> - @body.form.refresh() - - t: () -> - @element.get('t') - - dom_id: () -> - super() + '-' + @element.get('id') # use tab index - -class Editor.EditorModule.DockModule.ScenarioBay.ElementLabel extends Backbone.View - className: 'scenario-label' - - initialize: (options) -> - super(options) - @parent = options.parent - - render: () -> - this.$el.append(@element().element_face().render().el) - _this = this - this.$el.mouseover -> - _this.element().trigger('active') - this.$el.mouseout -> - _this.element().trigger('inactive') - this - - element: () -> - @parent.element - - elements: () -> - @parent.parent - - bay: () -> - @elements().parent - - dock: () -> - @bay().dock() - -class Editor.EditorModule.DockModule.ScenarioBay.ElementBody extends Backbone.View - - initialize: (options) -> - super(options) - @parent = options.parent - @form = Locmare.Form.factory({ - form_name: @element().item_name(), - use_name: 'scenario' - item: @element(), - element_form: true, - submit: null, - operators: @dock().editor().operators, - }) - - render: () -> - this.$el.html(@form.render().el) - this - - element: () -> - @parent.element - - elements: () -> - @parent.parent - - bay: () -> - @elements().parent - - dock: () -> - @bay().dock() - - mounted: () -> - true - - element: () -> - @parent.element - -class Editor.EditorModule.DockModule.NewBay extends Editor.EditorModule.DockModule.BoardBay - - -class Editor.EditorModule.DockModule.TabModule.NewBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel - - -class Editor.EditorModule.DockModule.TabModule.NewBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody - - initialize: (options) -> - super(options) - -class Editor.EditorModule.DockModule.NewBoard extends Editor.EditorModule.DockModule.Board - -class Editor.EditorModule.DockModule.TabModule.NewBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel - -class Editor.EditorModule.DockModule.TabModule.NewBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody - - initialize: (options) -> - super(options) -# form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name] -# form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted -# bucket = Bucket.new self,form + pick: (new_item) -> + t = @scenario_bay.length() + new_item.set({t: t}, {silent: true}) + @scenario_bay.add_element(new_item) diff --git a/app/assets/javascripts/editor/panel_editor/element.js.coffee b/app/assets/javascripts/editor/panel_editor/element.js.coffee new file mode 100644 index 00000000..4a1b1779 --- /dev/null +++ b/app/assets/javascripts/editor/panel_editor/element.js.coffee @@ -0,0 +1,110 @@ +class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.DockModule.BoardBay + + initialize: (options) -> + super(options) + @boards = new Editor.EditorModule.DockModule.ElementBay.Boards({ + parent: this + }) + @listenTo(@boards, 'sorted', @sorted) + + add_element: (element) -> + index = @tabs.length + @shift_z() + tab = new Editor.EditorModule.DockModule.ElementBoard({ + parent: this, index: index, name: element.item_name(), element: element + }) + bb = new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab}) + @add_tab( + tab, + new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({ + parent: tab, + name: element.item_name() + }), + bb + ) + @boards.add_element_tab(tab) + @boards.$el.tabs('refresh') + if element.constructor.has_picture() + @trigger('add:credit', element) + + shift_z: () -> + new_tab_z = @new_tab.label.z() + _.each @tabs, (tab) -> + z = tab.label.z() + tab.label.$el.attr('data-z', z + 1) if z >= new_tab_z # new tab too + + add_new_tab: () -> + @new_tab = new Editor.EditorModule.DockModule.NewElementBoard({ + parent: this, index: 0, name: 'new' + }) + bb = new Editor.EditorModule.DockModule.TabModule.NewElementBoardBody({parent: @new_tab}) + @add_tab( + @new_tab, + new Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel({ + parent: @new_tab + }), + bb + ) + @listenTo(bb, 'pick', @pick) + @boards.add_element_tab(@new_tab) + + render: () -> + this.$el.html('') + @delegateEvents({'activate': 'activate'}) + this.$el.attr('id', @body.dom_id()) + this.$el.append(@boards.render().el) + _this = this + @boards.$el.tabs({ + activate: (e, ui) -> + ui.newPanel.trigger('activate') + }) + this + + init_tabs: () -> + @add_new_tab() + list = @root_item().zorderd_elements() + _.each list, (element) => + @add_element(element) + + activate: () -> + _.each @tabs, (tab) -> + return if not tab.element # without new element tab + if tab.body.$el.css('display') != 'none' + tab.body.refresh() + + sorted: () -> + # data-z copy to model + new_tab_z = @new_tab.label.z() + _.each @tabs, (tab) -> + if tab.element # without new_tab + z = tab.label.z() + z-- if z > new_tab_z # from 0, 1, new tab, 3... to 1, 2, 3... + tab.element.set({ + z: z + }, {silent: true}) + tab.element.trigger('sort') + + panel_body: () -> + @dock().editor().body + + save_data: () -> + attrs = {} + _.each @tabs, (tab) -> + return if not tab.element # without new element tab + form = tab.body.form + name = form.item.table_name() + '_attributes' + attrs[name] ||= [] + attrs[name].push(form.save_data()) + attrs + + pick: (new_item) -> + @add_element(new_item) + @trigger('pick', new_item) + +class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel + +class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody + + render: () -> + @body.render() + diff --git a/app/assets/javascripts/editor/panel_editor/element/boards.js.coffee b/app/assets/javascripts/editor/panel_editor/element/boards.js.coffee new file mode 100644 index 00000000..a0726064 --- /dev/null +++ b/app/assets/javascripts/editor/panel_editor/element/boards.js.coffee @@ -0,0 +1,65 @@ +class Editor.EditorModule.DockModule.ElementBay.Boards extends Backbone.View + tagName: 'div' + className: 'boards ui-tabs-vertical ui-helper-clearfix' + + initialize: (options) -> + super(options) + @parent = options.parent + @labels = new Editor.EditorModule.DockModule.ElementBay.Labels({ + parent: this + }) + @listenTo(@labels, 'sorted', @sorted) + + render: () -> + this.$el.html('') + this.$el.append(@labels.render().$el) + this + + add_element_tab: (tab) -> + tab.label.render() + tab.body.render() + @labels.render() + this.$el.append(tab.body.$el) + + sorted: () -> + # data-z copy to model + @trigger('sorted') + +class Editor.EditorModule.DockModule.ElementBay.Labels extends Backbone.View + tagName: 'ul' + + initialize: (options) -> + super(options) + @parent = options.parent + + render: () -> + this.$el.html('') + this.$el.addClass('inner-elements-tabs') + _.each @zorderd_labels(), (label) => + this.$el.append(label.$el) + _this = this + this.$el.sortable { + update: (event, ui) -> + z = 0 + $('li', $(@)).map -> + $(@).attr('data-z', z) + z++ + _this.trigger('sorted') + } + this + + zorderd_labels: () -> + res = [] + _.each @bay().tabs, (tab) => + res[tab.label.z()] = tab.label + res + + add_label: (label) -> + #z = label.z + @labels.push(label) # insert array + @render() # sorting + label.add_label() + + bay: () -> + @parent.parent + diff --git a/app/assets/javascripts/editor/panel_editor/element/element_board.js.coffee b/app/assets/javascripts/editor/panel_editor/element/element_board.js.coffee new file mode 100644 index 00000000..202d071a --- /dev/null +++ b/app/assets/javascripts/editor/panel_editor/element/element_board.js.coffee @@ -0,0 +1,63 @@ +class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board + + initialize: (options) -> + super(options) + @element = options.element + + dom_id: () -> + super() + '-' + @element.get('id') # use tab index + +class Editor.EditorModule.DockModule.TabModule.ElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel + + initialize: (options) -> + super(options) + this.$el.attr('data-z', @bay().new_tab.label.z() - 1) + + render: () -> + super() + this.$el.removeClass('ui-corner-top') + this.$el.addClass('ui-corner-left z-label') + _this = this + this.$el.mouseover -> + _this.element().trigger('active') + this.$el.mouseout -> + _this.element().trigger('inactive') + this + + add_label: () -> + this.$el.attr('id', @dom_id()) + + z: () -> + parseInt(this.$el.attr('data-z')) + +class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody + + initialize: (options) -> + super(options) + @form = Locmare.Form.factory({ + form_name: @element().item_name(), + use_name: 'default' + item: @element(), + element_form: true, + submit: null, + operators: @dock().editor().operators, + }) + + render: () -> + @delegateEvents({'activate': 'activate'}) + this.$el.attr('id', @dom_id()) + this.$el.html(@form.render().el) + this + + add_element: (element) -> + @form.add_element(element) + + activate: () -> + @refresh() + + refresh: () -> + @form.refresh() + + element: () -> + @parent.element + diff --git a/app/assets/javascripts/editor/panel_editor/element/new_board.js.coffee b/app/assets/javascripts/editor/panel_editor/element/new_board.js.coffee new file mode 100644 index 00000000..93aea25a --- /dev/null +++ b/app/assets/javascripts/editor/panel_editor/element/new_board.js.coffee @@ -0,0 +1,114 @@ +class Editor.EditorModule.DockModule.NewElementBoard extends Editor.EditorModule.DockModule.Board + + initialize: (options) -> + super(options) + @panel = @parent.dock().editor().panel + +class Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel + + initialize: (options) -> + super(options) + + render: () -> + super() + this.$el.attr('data-z', 0) + this.$el.removeClass('ui-corner-top') + this.$el.addClass('ui-corner-left') + this + + face: () -> + icon = new Pettanr.Image.SymbolImg({attr: {src: '/images/new.gif'}}) + linked_elements_tab = new Tag.A({ + attr: {href: '#' + @board().body.dom_id() }, + content: icon.render().el + }) + this.$el.append(linked_elements_tab.render().el) + + add_label: () -> + this.$el.attr('id', @dom_id()) + + z: () -> + parseInt(this.$el.attr('data-z')) + +class Editor.EditorModule.DockModule.TabModule.NewElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody + className: 'new-element-board-body' + + initialize: (options) -> + super(options) + + render: () -> + this.$el.attr('id', @dom_id()) + @buttons = new Editor.EditorModule.DockModule.NewElementButtons({ + parent: this, element_models: @element_models() + }) + @listenTo(@buttons, 'click', @click_button) + this.$el.append(@buttons.render().el) + this + + panel: () -> + @parent.panel + + element_models: () -> + @panel().my_class().child_models() + + click_button: (model) -> + @new_element.remove() if @new_element + @new_element = new Pettanr.Views[model.singular()].NewElement({ + parent: this, target_model: model + }) + @listenTo(@new_element, 'pick', @pick) + this.$el.append(@new_element.clear().el) + + pick: (new_item) -> + @trigger('pick', new_item) + @new_element.render() + +class Editor.EditorModule.DockModule.NewElementButtons extends Backbone.View + tagName: 'div' + className: 'new-element-buttons' + + initialize: (options) -> + super(options) + @parent = options.parent + @element_models = options.element_models + + render: () -> + _.each @element_models, (model) => + button = new Editor.EditorModule.DockModule.NewElementButton({ + parent: this, model: model + }) + @listenTo(button, 'click', @click) + this.$el.append(button.render().el) + this + + click: (model) -> + @trigger('click', model) + +class Editor.EditorModule.DockModule.NewElementButton extends Backbone.View + tagName: 'div' + + initialize: (options) -> + super(options) + @parent = options.parent + @model = options.model + + render: () -> + this.$el.html('') + icon = new Pettanr.Image.Icon({item: @model}) + linked_icon = new Editor.EditorModule.DockModule.NewElementLinkedButton({ + attr: {href: '#' }, + content: icon.render().el + }) + @listenTo(linked_icon, 'click', @click) + this.$el.append(linked_icon.render().el) + this + + click: () -> + @trigger('click', @model) + +class Editor.EditorModule.DockModule.NewElementLinkedButton extends Tag.A + + click: () -> + @trigger('click') + return false + diff --git a/app/assets/javascripts/editor/panel_editor/root.js.coffee b/app/assets/javascripts/editor/panel_editor/root.js.coffee new file mode 100644 index 00000000..c7b7a9a6 --- /dev/null +++ b/app/assets/javascripts/editor/panel_editor/root.js.coffee @@ -0,0 +1,44 @@ +class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay + + render: () -> + @body.render() + + save_data: () -> + @body.form.save_data() + +class Editor.EditorModule.DockModule.TabModule.RootBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel + +class Editor.EditorModule.DockModule.TabModule.RootBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody + + initialize: (options) -> + super(options) + @form = Locmare.Form.factory({ + form_name: @root_item().item_name(), + use_name: 'default' + item: @root_item(), + mounted: @mounted(), + submit: 'default' + operators: @dock().editor().operators, + action: '/' + @root_item().table_name() + '/' + Pettanr.to_s(@root_item().get('id')) + }) + @listenTo(@form, 'http_post', @http_post) + + render: () -> + super() + @el.className = @bay().body.dom_class() + this.$el.html(@form.render().el) + this + + mounted: () -> + true + + dock: () -> + @parent.dock() + + root_item: () -> + @dock().root_item() + + http_post: (url, root_form) -> + @trigger('http_post', url, root_form) + false + diff --git a/app/assets/javascripts/editor/panel_editor/scenario.js.coffee b/app/assets/javascripts/editor/panel_editor/scenario.js.coffee new file mode 100644 index 00000000..c966f24f --- /dev/null +++ b/app/assets/javascripts/editor/panel_editor/scenario.js.coffee @@ -0,0 +1,237 @@ +class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.SimpleBay + + initialize: (options) -> + super(options) + + render: () -> + @body.render() + + add_element: (element) -> + @body.add_element(element) + + init_tabs: () -> + list = @root_item().scenario_elements() + _.each list, (element) => + @add_element(element) + + save_data: () -> + @body.form.save_data() + + length: () -> + @body.length() + +class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel + +class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody + + initialize: (options) -> + super(options) + @elements = new Editor.EditorModule.DockModule.ScenarioBay.Elements({ + parent: this, + }) + @listenTo(@elements, 'sorted', @sorted) + + add_element: (element) -> + @elements.add_element(element) + + render: () -> + super() + this.$el.append(@elements.render().el) + @delegateEvents({'activate': 'activate'}) + this + + activate: () -> + @elements.refresh() + + sorted: () -> + # data-t copy to model + _.each @elements.element_lis, (element_li) => + t = parseInt(element_li.$el.attr('data-t')) + element_li.element.set({ + t: t + }, {silent: true}) + element_li.element.trigger('sort') + + panel_body: () -> + @dock().editor().body + + save_data: () -> + attrs = {} + _.each @tabs, (tab) -> + return if not tab.element # without new element tab + form = tab.body.form + name = form.item.table_name() + '_attributes' + attrs[name] ||= [] + attrs[name].push(form.save_data()) + attrs + + length: () -> + @elements.element_lis.length + +class Editor.EditorModule.DockModule.ScenarioBay.Elements extends Backbone.View + tagName: 'ul' + className: 'scenarios_elements' + + initialize: (options) -> + super(options) + @parent = options.parent + @element_lis = [] + + render: () -> + this.$el.html('') + _.each @scenario_elements(), (element_li) => + this.$el.append(element_li.render().$el) + _this = this + this.$el.sortable { + update: (event, ui) -> + t = 0 + $('.t-label', $(@)).map -> + $(@).attr('data-t', t) + t++ + _this.trigger('sorted') + } + this + + refresh: () -> + _.each @element_lis, (element_li) => + element_li.refresh() + + scenario_elements: () -> + res = [] + _.each @element_lis, (element_li) => + res[element_li.t()] = element_li + res + + add_element: (element) -> + e = new Editor.EditorModule.DockModule.ScenarioBay.Element({ + parent: this, + element: element + }) + @element_lis.push(e) # insert array + @render() + e + + sorted: () -> + # data-t copy to model + @trigger('sorted') + +class Editor.EditorModule.DockModule.ScenarioBay.Element extends Backbone.View + tagName: 'li' + className: 't-label' + + initialize: (options) -> + super(options) + @parent = options.parent + @element = options.element + + render: () -> + this.$el.html('') + this.$el.attr('data-t', @t()) + @label = new Editor.EditorModule.DockModule.ScenarioBay.ElementLabel({ + parent: this, + }) + @body = new Editor.EditorModule.DockModule.ScenarioBay.ElementBody({ + parent: this, + }) + this.$el.append(@label.render().$el) + this.$el.append(@body.render().$el) + rb = new Tag.RowBreak() + this.$el.append(rb.render().el) + this + + refresh: () -> + @body.form.refresh() + + t: () -> + @element.get('t') + + dom_id: () -> + super() + '-' + @element.get('id') # use tab index + +class Editor.EditorModule.DockModule.ScenarioBay.ElementLabel extends Backbone.View + className: 'scenario-label' + + initialize: (options) -> + super(options) + @parent = options.parent + + render: () -> + this.$el.append(@element().element_face().render().el) + _this = this + this.$el.mouseover -> + _this.element().trigger('active') + this.$el.mouseout -> + _this.element().trigger('inactive') + this + + element: () -> + @parent.element + + elements: () -> + @parent.parent + + bay: () -> + @elements().parent + + dock: () -> + @bay().dock() + +class Editor.EditorModule.DockModule.ScenarioBay.ElementBody extends Backbone.View + + initialize: (options) -> + super(options) + @parent = options.parent + @form = Locmare.Form.factory({ + form_name: @element().item_name(), + use_name: 'scenario' + item: @element(), + element_form: true, + submit: null, + operators: @dock().editor().operators, + }) + + render: () -> + this.$el.html(@form.render().el) + this + + element: () -> + @parent.element + + elements: () -> + @parent.parent + + bay: () -> + @elements().parent + + dock: () -> + @bay().dock() + + mounted: () -> + true + + element: () -> + @parent.element + +class Editor.EditorModule.DockModule.NewBay extends Editor.EditorModule.DockModule.BoardBay + + +class Editor.EditorModule.DockModule.TabModule.NewBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel + + +class Editor.EditorModule.DockModule.TabModule.NewBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody + + initialize: (options) -> + super(options) + +class Editor.EditorModule.DockModule.NewBoard extends Editor.EditorModule.DockModule.Board + +class Editor.EditorModule.DockModule.TabModule.NewBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel + +class Editor.EditorModule.DockModule.TabModule.NewBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody + + initialize: (options) -> + super(options) +# form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name] +# form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted +# bucket = Bucket.new self,form + diff --git a/app/assets/javascripts/locmare/picker.js.coffee b/app/assets/javascripts/locmare/picker.js.coffee deleted file mode 100644 index 809cf068..00000000 --- a/app/assets/javascripts/locmare/picker.js.coffee +++ /dev/null @@ -1,15 +0,0 @@ -class Locmare.Picker extends Locmare.Filer - className: 'picker' - - initialize: (options) -> - super(options) - @listenTo(@body, 'click:pick', @click_pick) - - module: () -> - Locmare.PickerModule - - click_pick: (file_item_view) -> - @trigger('pick', file_item_view.item) - -class Locmare.PickerModule - diff --git a/app/assets/javascripts/locmare/picker/body.js.coffee b/app/assets/javascripts/locmare/picker/body.js.coffee deleted file mode 100644 index 1805d138..00000000 --- a/app/assets/javascripts/locmare/picker/body.js.coffee +++ /dev/null @@ -1,14 +0,0 @@ -class Locmare.PickerModule.Body extends Locmare.FilerModule.Body - - initialize: (options) -> - super(options) - @listenTo(@file_body, 'click:pick', @click_pick) - - module: () -> - Locmare.PickerModule.BodyModule - - click_pick: (file_item_view) -> - @trigger('click:pick', file_item_view) - -class Locmare.PickerModule.BodyModule - diff --git a/app/assets/javascripts/locmare/picker/body/file_body.js.coffee b/app/assets/javascripts/locmare/picker/body/file_body.js.coffee deleted file mode 100644 index 30091ad7..00000000 --- a/app/assets/javascripts/locmare/picker/body/file_body.js.coffee +++ /dev/null @@ -1,17 +0,0 @@ -class Locmare.PickerModule.BodyModule.FileBody extends Locmare.FilerModule.BodyModule.FileBody - - initialize: (options) -> - super(options) - - init_file_item: (item) -> - file_item_view = super(item) - @listenTo(file_item_view, 'click:pick', @click_pick) - file_item_view - - module: () -> - Locmare.PickerModule.BodyModule.FileBodyModule - - click_pick: (file_item_view) -> - @trigger('click:pick', file_item_view) - -class Locmare.PickerModule.BodyModule.FileBodyModule diff --git a/app/assets/javascripts/locmare/picker/body/file_body/file_item.js.coffee b/app/assets/javascripts/locmare/picker/body/file_body/file_item.js.coffee deleted file mode 100644 index e4714401..00000000 --- a/app/assets/javascripts/locmare/picker/body/file_body/file_item.js.coffee +++ /dev/null @@ -1,65 +0,0 @@ -class Locmare.PickerModule.BodyModule.FileBodyModule.FileItem extends Locmare.FilerModule.BodyModule.FileBodyModule.FileItem - - initialize: (options) -> - @file_body = options.file_body - @item = options.item - @pick = new Locmare.PickerModule.BodyModule.FileBodyModule.FileItemModule.Pick() - @symbol = @module().SymbolItemColumnFactory.factory this, @manifest().symbol, @item - @caption = @module().CaptionItemColumnFactory.factory this, @manifest().caption, @item - @summary = @module().SummaryItemColumnFactory.factory this, @manifest().summary, @item - @icon = @module().IconItemColumnFactory.factory this, @manifest().icon, @item - @date = @module().DateItemColumnFactory.factory this, @manifest().date, @item - @el.className = 'filer-item filer-item-' + @item.item_name() - @listenTo(@pick, 'click', @click_pick) - @listenTo(@symbol, 'click:symbol', @click_symbol) - @listenTo(@caption, 'click:caption', @click_caption) - @listenTo(@icon, 'click:prof', @click_prof) - @listenTo(@symbol, 'http_get', @http_get) - @listenTo(@caption, 'http_get', @http_get) - @listenTo(@summary, 'http_get', @http_get) - @listenTo(@icon, 'http_get', @http_get) - @listenTo(@item, 'destroy', @destroy) - - render: () -> - this.$el.append(@pick.render().el) - if @symbol.is_visible() - this.$el.append(@symbol.render().el) - if @caption.is_visible() - this.$el.append(@caption.render().el) - if @summary.is_visible() - this.$el.append(@summary.render().el) - if @icon.is_visible() - this.$el.append(@icon.render().el) - if @date.is_visible() - this.$el.append(@date.render().el) - this - - click_pick: () -> - @trigger('click:pick', this) - - module: () -> - # use FilerModule namespace - Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule - -class Locmare.PickerModule.BodyModule.FileBodyModule.FileItemModule - -class Locmare.PickerModule.BodyModule.FileBodyModule.FileItemModule.Pick extends Backbone.View - tagName: 'div' - - initialize: (options) -> - icon = new Pettanr.Image.SymbolImg({attr: {src: '/images/new.gif'}}) - @linked_icon = new Tag.A({ - attr: {href: '#'}, - content: icon.render().el - }) - @listenTo(@linked_icon, 'click', @click) - @el.className = 'filer-item-pick' - - render: () -> - this.$el.html('') - this.$el.append(@linked_icon.render().el) - this - - click: () -> - @trigger('click', this) - diff --git a/app/assets/javascripts/locmare/picker/body/file_header.js.coffee b/app/assets/javascripts/locmare/picker/body/file_header.js.coffee deleted file mode 100644 index e116c030..00000000 --- a/app/assets/javascripts/locmare/picker/body/file_header.js.coffee +++ /dev/null @@ -1,7 +0,0 @@ -class Locmare.PickerModule.BodyModule.FileHeader extends Locmare.FilerModule.BodyModule.FileHeader - - module: () -> - Locmare.PickerModule.BodyModule.FileHeaderModule - -class Locmare.PickerModule.BodyModule.FileHeaderModule - diff --git a/app/assets/javascripts/locmare/picker/body/file_header/base.js.coffee b/app/assets/javascripts/locmare/picker/body/file_header/base.js.coffee deleted file mode 100644 index 3d3880a8..00000000 --- a/app/assets/javascripts/locmare/picker/body/file_header/base.js.coffee +++ /dev/null @@ -1,15 +0,0 @@ -class Locmare.PickerModule.BodyModule.FileHeaderModule.Base extends Locmare.FilerModule.BodyModule.FileHeaderModule.Base - tagName: 'div' - - initialize: (options) -> - @file_header = options.file_header - @column_name = options.column_name - @el.className = 'filer-head-' + @column_name - - render: () -> - this.$el.html(@text()) - this - - text: () -> - I18n.t('filer.header.' + @column_name) - diff --git a/app/assets/javascripts/locmare/picker/body/file_header/none.js.coffee b/app/assets/javascripts/locmare/picker/body/file_header/none.js.coffee deleted file mode 100644 index 4729dadd..00000000 --- a/app/assets/javascripts/locmare/picker/body/file_header/none.js.coffee +++ /dev/null @@ -1,5 +0,0 @@ -class Locmare.PickerModule.BodyModule.FileHeaderModule.None extends Locmare.FilerModule.BodyModule.FileHeaderModule.Base - - render: () -> - this - diff --git a/app/assets/javascripts/locmare/picker/body/file_header/show.js.coffee b/app/assets/javascripts/locmare/picker/body/file_header/show.js.coffee deleted file mode 100644 index 58153f3a..00000000 --- a/app/assets/javascripts/locmare/picker/body/file_header/show.js.coffee +++ /dev/null @@ -1,3 +0,0 @@ -class Locmare.PickerModule.BodyModule.FileHeaderModule.Show extends Locmare.FilerModule.BodyModule.FileHeaderModule.Base - - diff --git a/app/assets/javascripts/locmare/picker/header.js.coffee b/app/assets/javascripts/locmare/picker/header.js.coffee deleted file mode 100644 index 18dbfc1a..00000000 --- a/app/assets/javascripts/locmare/picker/header.js.coffee +++ /dev/null @@ -1,2 +0,0 @@ -class Locmare.PickerModule.Header extends Locmare.FilerModule.Header - diff --git a/app/assets/javascripts/locmare/profiler/association.js.coffee b/app/assets/javascripts/locmare/profiler/association.js.coffee index a8503c7f..97401dd5 100644 --- a/app/assets/javascripts/locmare/profiler/association.js.coffee +++ b/app/assets/javascripts/locmare/profiler/association.js.coffee @@ -42,9 +42,9 @@ class Locmare.ProfilerModule.Association extends Backbone.View add_pick: (target_model) -> _.each @belongs_to, (f) => f.add_pick(target_model) - _.each @belongs_to, (f) => + _.each @has_many, (f) => f.add_pick(target_model) - _.each @belongs_to, (f) => + _.each @has_one, (f) => f.add_pick(target_model) http_get: (url) -> diff --git a/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee b/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee index afa4b0ee..729c1fc0 100644 --- a/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee +++ b/app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee @@ -28,6 +28,7 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View }) @filer.render() @listenTo(@filer, 'http_get', @http_get) + @listenTo(@filer, 'pick', @pick) item: () -> @profiler().item @@ -57,3 +58,6 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View http_get: (url) -> @trigger('http_get', url) + pick: (item) -> + @trigger('pick', item) + diff --git a/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee b/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee index ce0c6d87..a2737eb2 100644 --- a/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee +++ b/app/assets/javascripts/locmare/profiler/association/has_many.js.coffee @@ -33,6 +33,7 @@ class Locmare.ProfilerModule.AssociationModule.HasMany extends Backbone.View }) @filer.render() @listenTo(@filer, 'http_get', @http_get) + @listenTo(@filer, 'pick', @pick) item: () -> @profiler().item @@ -53,3 +54,6 @@ class Locmare.ProfilerModule.AssociationModule.HasMany extends Backbone.View http_get: (url) -> @trigger('http_get', url) + pick: (item) -> + @trigger('pick', item) + diff --git a/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee b/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee index bb85f3a6..db064637 100644 --- a/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee +++ b/app/assets/javascripts/locmare/profiler/association/has_one.js.coffee @@ -34,6 +34,7 @@ class Locmare.ProfilerModule.AssociationModule.HasOne extends Backbone.View }) @filer.render() @listenTo(@filer, 'http_get', @http_get) + @listenTo(@filer, 'pick', @pick) item: () -> @profiler().item @@ -54,3 +55,6 @@ class Locmare.ProfilerModule.AssociationModule.HasOne extends Backbone.View http_get: (url) -> @trigger('http_get', url) + pick: (item) -> + @trigger('pick', item) + diff --git a/app/assets/javascripts/locmare/profiler/header.js.coffee b/app/assets/javascripts/locmare/profiler/header.js.coffee index a6dced2f..4db8f0a2 100644 --- a/app/assets/javascripts/locmare/profiler/header.js.coffee +++ b/app/assets/javascripts/locmare/profiler/header.js.coffee @@ -4,21 +4,31 @@ class Locmare.ProfilerModule.Header extends Backbone.View initialize: (options) -> @profiler = options.profiler + @set_filer() + + render: () -> + this.$el.html(@filer.el) + this + + set_filer: () -> @filer = new Locmare.Filer({ item_name: @profiler.item_name, items: [@profiler.item], pager: @pager, operators: @profiler.operators }) + @filer.render() @listenTo(@filer, 'http_get', @http_get) - - render: () -> - this.$el.html(@filer.el) - this + @listenTo(@filer, 'pick', @pick) add_pick: (target_model) -> + @set_filer() + @render() @filer.add_pick(target_model) http_get: (url) -> @trigger('http_get', url) + pick: (item) -> + @trigger('pick', item) + diff --git a/app/assets/javascripts/views/panel_pictures/new_element.js.coffee b/app/assets/javascripts/views/panel_pictures/new_element.js.coffee index 587f09ef..bcdebc05 100644 --- a/app/assets/javascripts/views/panel_pictures/new_element.js.coffee +++ b/app/assets/javascripts/views/panel_pictures/new_element.js.coffee @@ -7,7 +7,7 @@ class Pettanr.Views.PanelPicture.NewElement extends Backbone.View @target_model = options.target_model @pick_model = @target_model.pick_model() - render: () -> + clear: () -> this.$el.html('') params = { controller: @target_model.path_name(), action: 'index', @@ -17,7 +17,37 @@ class Pettanr.Views.PanelPicture.NewElement extends Backbone.View @listenTo(@dialog(), 'pick', @pick) this + render: (form) -> + this.$el.html('') + this.$el.append(@form.render().el) + this + pick: (item) -> + if item.item_name() == @target_model.item_name() + # Inspire + new_item = new @target_model(item.attributes) + else if @target_model.is_traceable(item.item_name()) + # Trace + n = @target_model['trace_from_' + item.item_name()] + n() + else if item.item_name() == @target_model.pick_item_name() + # Pick + model = @target_model.pick_model() + new_item = new model() + @dialog().$el.dialog('option', 'hide') + @dialog().stop() + @set_form(new_item) + @trigger('pick', new_item) + + set_form: (item) -> + @form = Locmare.Form.factory({ + form_name: item.item_name(), + use_name: 'default' + item: item, + element_form: true, + submit: null, + operators: @editor().operators, + }) dock: () -> @parent.dock() diff --git a/app/assets/javascripts/ap.js b/app/assets/javascripts/yasapp.js similarity index 98% rename from app/assets/javascripts/ap.js rename to app/assets/javascripts/yasapp.js index c4e4dc79..0a5a0e44 100644 --- a/app/assets/javascripts/ap.js +++ b/app/assets/javascripts/yasapp.js @@ -282,6 +282,12 @@ //= require ./editor //= require ./editor/panel_editor //= require ./editor/panel_editor/dock +//= require ./editor/panel_editor/root +//= require ./editor/panel_editor/element +//= require ./editor/panel_editor/element/boards +//= require ./editor/panel_editor/element/element_board +//= require ./editor/panel_editor/element/new_board +//= require ./editor/panel_editor/scenario //= require ./i18n/translations //= require_directory ./controllers //= require_directory ./models diff --git a/app/controllers/top_controller.rb b/app/controllers/top_controller.rb index 2b561a60..91fb1d89 100644 --- a/app/controllers/top_controller.rb +++ b/app/controllers/top_controller.rb @@ -10,7 +10,7 @@ class TopController < ApplicationController def index respond_to do |format| - format.html { render layout: 'ap' } + format.html { render layout: 'yasapp' } end end diff --git a/app/views/layouts/ap.html.erb b/app/views/layouts/yasapp.html.erb similarity index 93% rename from app/views/layouts/ap.html.erb rename to app/views/layouts/yasapp.html.erb index 55a32186..8e0c3669 100644 --- a/app/views/layouts/ap.html.erb +++ b/app/views/layouts/yasapp.html.erb @@ -5,7 +5,7 @@ ap - <%= h(manifest.magic_numbers['profile']['users']['caption']) %> <%= stylesheet_link_tag "test" %> - <%= javascript_include_tag "ap" %> + <%= javascript_include_tag "yasapp" %> <%# raw panel_editor_javascript_include_tags %> <%= csrf_meta_tags %> -- 2.11.0