diff options
| author | Antony Lesuisse <al@openerp.com> | 2012-04-09 20:44:45 +0200 |
|---|---|---|
| committer | Antony Lesuisse <al@openerp.com> | 2012-04-09 20:44:45 +0200 |
| commit | d4b103fb4d656f8480299fb673ebbdd3b95e9aed (patch) | |
| tree | e3f7855ee4e0aa0cddfa8413bbf902eb70f54fa4 /addons/web/static/src/js | |
| parent | bc92baa084205dbfbe1bc65b367ce11a8dcf9bf8 (diff) | |
viewmanager refactor part1
bzr revid: al@openerp.com-20120409184445-nri84zeylu6ur21d
Diffstat (limited to 'addons/web/static/src/js')
| -rw-r--r-- | addons/web/static/src/js/view_form.js | 36 | ||||
| -rw-r--r-- | addons/web/static/src/js/view_page.js | 8 | ||||
| -rw-r--r-- | addons/web/static/src/js/views.js | 31 |
3 files changed, 36 insertions, 39 deletions
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 785ab0e544a..a2ac3a54086 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -5,7 +5,7 @@ var _t = openerp.web._t, var QWeb = openerp.web.qweb; openerp.web.views.add('form', 'openerp.web.FormView'); -openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# */{ +openerp.web.FormView = openerp.web.View.extend({ /** * Indicates that this view is not searchable, and thus that no search * view should be displayed (if there is one active). @@ -41,7 +41,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.default_focus_button = null; this.registry = openerp.web.form.widgets; this.has_been_loaded = $.Deferred(); - this.$form_header = null; this.translatable_fields = []; _.defaults(this.options, { "not_interactible_on_create": false @@ -54,10 +53,6 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# this.rendering_engine = new openerp.web.FormRenderingEngine(this); }, destroy: function() { - if (this.sidebar) { - this.sidebar.attachments.destroy(); - this.sidebar.destroy(); - } _.each(this.get_widgets(), function(w) { w.destroy(); }); @@ -78,23 +73,26 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# var $dest = this.$element.hasClass("oe_form_container") ? this.$element : this.$element.find('.oe_form_container'); this.rendering_engine.render_to($dest); - this.$form_header = this.$element.find('.oe_form_header:first'); - this.$form_header.find('div.oe_form_pager button[data-pager-action]').click(function() { + this.$buttons = this.options.$buttons || this.$element.find('.oe_form_buttons'); + this.$sidebar = this.options.$sidebar || this.$element.find('.oe_form_sidebar'); + this.$pager = this.options.$pager || this.$element.find('.oe_form_pager'); + + this.$buttons.html(QWeb.render("FormView.buttons", {'widget':self})); + this.$pager.html(QWeb.render("FormView.pager", {'widget':self})); + + this.$buttons.on('click','.oe_form_buttons button.oe_form_button_save',this.on_button_save); + this.$buttons.on('click','.oe_form_buttons button.oe_form_button_cancel',this.on_button_cancel); + this.$pager.on('click','.oe_form_pager button[data-pager-action]',function(event) { var action = $(this).data('pager-action'); self.on_pager_action(action); }); - this.$form_header.find('button.oe_form_button_save').click(this.on_button_save); - this.$form_header.find('button.oe_form_button_cancel').click(this.on_button_cancel); - - if (!this.sidebar && this.options.sidebar && this.options.sidebar_id) { + if (!this.sidebar && this.options.sidebar) { this.sidebar = new openerp.web.Sidebar(this); - this.sidebar.appendTo(this.$element.find(".oe_form_sidebar")); - this.sidebar.attachments = new openerp.web.form.SidebarAttachments(this.sidebar, this); + this.sidebar.appendTo(this.$sidebar); + //this.sidebar.attachments = new openerp.web.form.SidebarAttachments(this.sidebar, this); this.sidebar.add_toolbar(this.fields_view.toolbar); - this.set_common_sidebar_sections(this.sidebar); - this.sidebar.add_section(_t('Customize'), 'customize'); - this.sidebar.add_items('customize', [{ + this.sidebar.add_items('other', [{ label: _t('Set Default'), form: this, callback: function (item) { @@ -173,7 +171,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# self.is_initialized.resolve(); self.do_update_pager(record.id == null); if (self.sidebar) { - self.sidebar.attachments.do_update(); + // self.sidebar.attachments.do_update(); } if (self.default_focus_field) { self.default_focus_field.focus(); @@ -216,7 +214,7 @@ openerp.web.FormView = openerp.web.View.extend( /** @lends openerp.web.FormView# } }, do_update_pager: function(hide_index) { - var $pager = this.$form_header.find('div.oe_form_pager'); + var $pager = this.$pager.find('div.oe_form_pager'); var index = hide_index ? '-' : this.dataset.index + 1; $pager.find('button').prop('disabled', this.dataset.ids.length < 2); $pager.find('span.oe_pager_index').html(index); diff --git a/addons/web/static/src/js/view_page.js b/addons/web/static/src/js/view_page.js index d284470fdde..941aec36650 100644 --- a/addons/web/static/src/js/view_page.js +++ b/addons/web/static/src/js/view_page.js @@ -19,10 +19,10 @@ openerp.web.page = function (openerp) { }, on_loaded: function(data) { this._super(data); - this.$form_header.find('button.oe_form_button_edit').click(this.on_button_edit); - this.$form_header.find('button.oe_form_button_create').click(this.on_button_create); - this.$form_header.find('button.oe_form_button_duplicate').click(this.on_button_duplicate); - this.$form_header.find('button.oe_form_button_delete').click(this.on_button_delete); + this.$buttons.find('button.oe_form_button_edit').click(this.on_button_edit); + this.$buttons.find('button.oe_form_button_create').click(this.on_button_create); + this.$buttons.find('button.oe_form_button_duplicate').click(this.on_button_duplicate); + this.$buttons.find('button.oe_form_button_delete').click(this.on_button_delete); }, on_button_edit: function() { return this.do_switch_view('form'); diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 6e4f77d22d8..8bc7a456bac 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -252,7 +252,9 @@ session.web.ViewManager = session.web.OldWidget.extend({ deferred : $.Deferred(), controller : null, options : _.extend({ - sidebar_id : self.element_id + '_sidebar_' + view.view_type, + $buttons : self.$element.find('.oe_view_manager_buttons'), + $sidebar : self.$element.find('.oe_view_manager_sidebar'), + $pager : self.$element.find('.oe_view_manager_pager'), action : self.action, action_views_ids : views_ids }, self.flags, self.flags[view.view_type] || {}, view.options || {}) @@ -274,9 +276,9 @@ session.web.ViewManager = session.web.OldWidget.extend({ * @returns {jQuery.Deferred} new view loading promise */ on_mode_switch: function(view_type, no_store) { - var self = this, - view = this.views[view_type], - view_promise; + var self = this; + var view = this.views[view_type]; + var view_promise; if(!view) return $.Deferred().reject(); @@ -778,17 +780,17 @@ session.web.Sidebar = session.web.Widget.extend({ }, add_toolbar: function(toolbar) { var self = this; - _.each([['print', _t("Reports")], ['action', _t("Actions")], ['relate', _t("Links")]], function(type) { - var items = toolbar[type[0]]; - if (items.length) { + _.each(['print','action','relate'], function(type) { + var items = toolbar[type]; + if (items) { for (var i = 0; i < items.length; i++) { items[i] = { label: items[i]['name'], action: items[i], - classname: 'oe_sidebar_' + type[0] + classname: 'oe_sidebar_' + type } } - self.add_items(type[0], items); + self.add_items(type=='print' ? 'print' : 'other', items); } }); }, @@ -820,11 +822,7 @@ session.web.Sidebar = session.web.Widget.extend({ add_items: function(section_code, items) { var self = this; if (items) { - // generate unique id for items - for (var i = 0; i < items.length; i++) { - items[i].element_id = _.uniqueId(section_code + '_item_'); - this.items[items[i].element_id] = items[i]; - } + this.items[section_code].push.apply(this.items[section_code],items); this.redraw(); } }, @@ -974,7 +972,7 @@ session.web.TranslateDialog = session.web.Dialog.extend({ } }); -session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{ +session.web.View = session.web.Widget.extend({ template: "EmptyComponent", // name displayed in view switchers display_name: '', @@ -1014,7 +1012,8 @@ session.web.View = session.web.Widget.extend(/** @lends session.web.View# */{ * Called after a successful call to fields_view_get. * Must return a promise. */ - on_loaded: function(fields_view_get) {}, + on_loaded: function(fields_view_get) { + }, set_default_options: function(options) { this.options = options || {}; _.defaults(this.options, { |
