summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
authorAntony Lesuisse <al@openerp.com>2012-04-09 12:37:08 +0200
committerAntony Lesuisse <al@openerp.com>2012-04-09 12:37:08 +0200
commit64974e24e644c2c8e39e5ada246722fdca80f262 (patch)
treec2098cdfb9e9de326934505a9e678c2d57f9890c /addons/web/static
parente376323c8fbb59bef71ea1086484e13b79cf46ce (diff)
viewmanager refactor part1
bzr revid: al@openerp.com-20120409103708-fu62p9wxdcjzzl5m
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/src/js/corelib.js86
-rw-r--r--addons/web/static/src/js/views.js35
-rw-r--r--addons/web/static/src/xml/base.xml16
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">