viewmanager refactor part1
bzr revid: al@openerp.com-20120409103708-fu62p9wxdcjzzl5m
This commit is contained in:
parent
e376323c8f
commit
64974e24e6
|
@ -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;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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">
|
||||
|
|
Loading…
Reference in New Issue