diff options
| author | Antony Lesuisse <al@openerp.com> | 2012-04-09 12:37:08 +0200 |
|---|---|---|
| committer | Antony Lesuisse <al@openerp.com> | 2012-04-09 12:37:08 +0200 |
| commit | 64974e24e644c2c8e39e5ada246722fdca80f262 (patch) | |
| tree | c2098cdfb9e9de326934505a9e678c2d57f9890c /addons/web | |
| parent | e376323c8fbb59bef71ea1086484e13b79cf46ce (diff) | |
viewmanager refactor part1
bzr revid: al@openerp.com-20120409103708-fu62p9wxdcjzzl5m
Diffstat (limited to 'addons/web')
| -rw-r--r-- | addons/web/static/src/js/corelib.js | 86 | ||||
| -rw-r--r-- | addons/web/static/src/js/views.js | 35 | ||||
| -rw-r--r-- | addons/web/static/src/xml/base.xml | 16 |
3 files changed, 62 insertions, 75 deletions
diff --git a/addons/web/static/src/js/corelib.js b/addons/web/static/src/js/corelib.js index 7494c48bfe4..af70b0dc424 100644 --- a/addons/web/static/src/js/corelib.js +++ b/addons/web/static/src/js/corelib.js @@ -39,7 +39,7 @@ openerp.web.corelib = function(openerp) { * * Example: * - * var Person = nova.Class.extend({ + * var Person = openerp.web.Class.extend({ * init: function(isDancing){ * this.dancing = isDancing; * }, @@ -397,8 +397,9 @@ openerp.web.GetterSetterMixin = _.extend({}, openerp.web.EventDispatcherMixin, { } }); -openerp.web.CallbackEnabledMixin = { +openerp.web.CallbackEnabledMixin = _.extend({}, openerp.web.GetterSetterMixin, { init: function() { + openerp.web.GetterSetterMixin.init.call(this); var self = this; var callback_maker = function(obj, name, method) { var callback = function() { @@ -494,19 +495,9 @@ openerp.web.CallbackEnabledMixin = { return self[method_name].apply(self, arguments); } } -}; - -openerp.web.CallbackEnabled = openerp.web.Class.extend(openerp.web.GetterSetterMixin, openerp.web.CallbackEnabledMixin, { - init: function() { - openerp.web.GetterSetterMixin.init.call(this); - openerp.web.CallbackEnabledMixin.init.call(this); - } }); -// Class - -// TODO al merge or make 2 mixins -openerp.web.Widget = openerp.web.Class.extend(openerp.web.GetterSetterMixin, { +openerp.web.WidgetMixin = _.extend({},openerp.web.CallbackEnabledMixin, { /** * Tag name when creating a default $element. * @type string @@ -527,9 +518,8 @@ openerp.web.Widget = openerp.web.Class.extend(openerp.web.GetterSetterMixin, { * for new components this argument should not be provided any more. */ init: function(parent) { - openerp.web.GetterSetterMixin.init.call(this); + openerp.web.CallbackEnabledMixin.init.call(this); this.$element = $(document.createElement(this.tagName)); - this.setParent(parent); }, /** @@ -621,6 +611,14 @@ openerp.web.Widget = openerp.web.Class.extend(openerp.web.GetterSetterMixin, { } }); +// Classes + +openerp.web.CallbackEnabled = openerp.web.Class.extend(openerp.web.CallbackEnabledMixin, { + init: function() { + openerp.web.CallbackEnabledMixin.init.call(this); + } +}); + /** * Base class for all visual components. Provides a lot of functionalities helpful * for the management of a part of the DOM. @@ -669,7 +667,7 @@ openerp.web.Widget = openerp.web.Class.extend(openerp.web.GetterSetterMixin, { * * That will kill the widget in a clean way and erase its content from the dom. */ -openerp.web.Widget = openerp.web.Widget.extend(openerp.web.CallbackEnabledMixin, { +openerp.web.Widget = openerp.web.Class.extend(openerp.web.WidgetMixin, { /** * The name of the QWeb template that will be used for rendering. Must be * redefined in subclasses or the default render() method can not be used. @@ -692,8 +690,7 @@ openerp.web.Widget = openerp.web.Widget.extend(openerp.web.CallbackEnabledMixin, * for new components this argument should not be provided any more. */ init: function(parent) { - this._super(parent); - openerp.web.CallbackEnabledMixin.init.call(this); + openerp.web.WidgetMixin.init.call(this,parent); this.session = openerp.connection; }, /** @@ -1687,33 +1684,6 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. } }); -/** - * @deprecated use :class:`openerp.web.Widget` - */ -openerp.web.OldWidget = openerp.web.Widget.extend({ - init: function(parent, element_id) { - this._super(parent); - this.element_id = element_id; - this.element_id = this.element_id || _.uniqueId('widget-'); - var tmp = document.getElementById(this.element_id); - this.$element = tmp ? $(tmp) : $(document.createElement(this.tagName)); - }, - renderElement: function() { - var rendered = this.render(); - if (rendered) { - var elem = $(rendered); - this.$element.replaceWith(elem); - this.$element = elem; - } - return this; - }, - render: function (additional) { - if (this.template) - return openerp.web.qweb.render(this.template, _.extend({widget: this}, additional || {})); - return null; - } -}); - openerp.web.TranslationDataBase = openerp.web.Class.extend(/** @lends openerp.web.TranslationDataBase# */{ /** * @constructs openerp.web.TranslationDataBase @@ -1767,6 +1737,32 @@ openerp.web.TranslationDataBase = openerp.web.Class.extend(/** @lends openerp.we } }); +/** + * @deprecated use :class:`openerp.web.Widget` + */ +openerp.web.OldWidget = openerp.web.Widget.extend({ + init: function(parent, element_id) { + this._super(parent); + this.element_id = element_id; + this.element_id = this.element_id || _.uniqueId('widget-'); + var tmp = document.getElementById(this.element_id); + this.$element = tmp ? $(tmp) : $(document.createElement(this.tagName)); + }, + renderElement: function() { + var rendered = this.render(); + if (rendered) { + var elem = $(rendered); + this.$element.replaceWith(elem); + this.$element = elem; + } + return this; + }, + render: function (additional) { + if (this.template) + return openerp.web.qweb.render(this.template, _.extend({widget: this}, additional || {})); + return null; + } +}); } diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 0681f9a579b..5825611c5c5 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -6,17 +6,7 @@ openerp.web.views = function(session) { var QWeb = session.web.qweb, _t = session.web._t; -/** - * Registry for all the client actions key: tag value: widget - */ -session.web.client_actions = new session.web.Registry(); - -/** - * Registry for all the main views - */ -session.web.views = new session.web.Registry(); - -session.web.ActionManager = session.web.OldWidget.extend({ +session.web.ActionManager = session.web.Widget.extend({ init: function(parent) { this._super(parent); this.inner_action = null; @@ -25,9 +15,6 @@ session.web.ActionManager = session.web.OldWidget.extend({ this.dialog_viewmanager = null; this.client_widget = null; }, - render: function() { - return '<div id="' + this.element_id + '" style="height: 100%;"></div>'; - }, dialog_stop: function () { if (this.dialog) { this.dialog_viewmanager.destroy(); @@ -217,7 +204,7 @@ session.web.ActionManager = session.web.OldWidget.extend({ } }); -session.web.ViewManager = session.web.OldWidget.extend(/** @lends session.web.ViewManager# */{ +session.web.ViewManager = session.web.OldWidget.extend({ template: "ViewManager", /** * @constructs session.web.ViewManager @@ -250,12 +237,6 @@ session.web.ViewManager = session.web.OldWidget.extend(/** @lends session.web.V this.registry = session.web.views; this.views_history = []; }, - render: function() { - return session.web.qweb.render(this.template, { - self: this, - prefix: this.element_id, - views: this.views_src}); - }, /** * @returns {jQuery.Deferred} initial view loading promise */ @@ -452,7 +433,7 @@ session.web.ViewManager = session.web.OldWidget.extend(/** @lends session.web.V } }); -session.web.ViewManagerAction = session.web.ViewManager.extend(/** @lends oepnerp.web.ViewManagerAction# */{ +session.web.ViewManagerAction = session.web.ViewManager.extend({ template:"ViewManagerAction", /** * @constructs session.web.ViewManagerAction @@ -1295,6 +1276,16 @@ session.web.xml_to_str = function(node) { } } +/** + * Registry for all the client actions key: tag value: widget + */ +session.web.client_actions = new session.web.Registry(); + +/** + * Registry for all the main views + */ +session.web.views = new session.web.Registry(); + }; // vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax: diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 65364748862..1ed99250d6b 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -409,14 +409,14 @@ <div class="oe_view_manager"> <div class="oe_view_manager_header"> <div class="oe_view_manager_row"> - <h2 class="oe_view_title" t-if="self.flags.display_title !== false"> - <span class="oe_view_title_text"><t t-esc="self.display_title()"/></span> + <h2 class="oe_view_title" t-if="widget.flags.display_title !== false"> + <span class="oe_view_title_text"><t t-esc="widget.display_title()"/></span> </h2> - <div t-attf-id="#{prefix}_search" t-opentag="true"/> + <div t-attf-id="#{widget.element_id}_search" t-opentag="true"/> </div> <div class="oe_view_manager_row"> <div class="oe_view_manager_switch oe_button_group"> - <t t-if="views.length != 1" t-foreach="views" t-as="view"> + <t t-if="widget.views_src.length != 1" t-foreach="widget.views_src" t-as="view"> <button type="button" t-attf-class="oe_vm_switch_#{view.view_type}" t-att-data-view-type="view.view_type" t-att-title="view.label || view.view_type"> <span><t t-esc="view.label || view.view_type"/></span> </button> @@ -425,19 +425,19 @@ </div> </div> <div class="oe_view_manager_body"> - <t t-foreach="views" t-as="view"> - <div t-attf-id="#{prefix}_view_#{view.view_type}"/> + <t t-foreach="widget.views_src" t-as="view"> + <div t-attf-id="#{widget.element_id}_view_#{view.view_type}"/> </t> </div> </div> </t> <t t-name="ViewManagerAction" t-extend="ViewManager"> <t t-jquery="h2.oe_view_title" t-operation="prepend"> - <a t-if="self.flags.display_title !== false" class="oe-shortcut-toggle" title="Add / Remove Shortcut..." + <a t-if="widget.flags.display_title !== false" class="oe-shortcut-toggle" title="Add / Remove Shortcut..." href="javascript: void(0)"> </a> </t> <t t-jquery="h2.oe_view_title" t-operation="after"> - <select t-if="self.session.debug" class="oe_debug_view"/> + <select t-if="widget.session.debug" class="oe_debug_view"/> </t> </t> <t t-name="ViewManagerDebug"> |
