summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorTurkesh Patel (Open ERP) <tpa@tinyerp.com>2012-04-18 12:11:56 +0530
committerTurkesh Patel (Open ERP) <tpa@tinyerp.com>2012-04-18 12:11:56 +0530
commit3ad8dad36d2e9a81b6cb9d209c4f1cfab1ba4f6d (patch)
treef392a2e6087665097628d276b26746df04cd9133 /addons/web/static/src/js
parent8689427cebe3f83b12b9ae0623e54fb688b63f58 (diff)
parent79c1e97479535e794f3a298a625b6dd18f5544bd (diff)
[MRG] merge with main branch.
bzr revid: tpa@tinyerp.com-20120418064156-4hrx14o263qes4o6
Diffstat (limited to 'addons/web/static/src/js')
-rw-r--r--addons/web/static/src/js/chrome.js104
-rw-r--r--addons/web/static/src/js/corelib.js126
-rw-r--r--addons/web/static/src/js/coresetup.js28
-rw-r--r--addons/web/static/src/js/data.js76
-rw-r--r--addons/web/static/src/js/data_export.js10
-rw-r--r--addons/web/static/src/js/data_import.js16
-rw-r--r--addons/web/static/src/js/dates.js14
-rw-r--r--addons/web/static/src/js/formats.js82
-rw-r--r--addons/web/static/src/js/search.js262
-rw-r--r--addons/web/static/src/js/view_editor.js68
-rw-r--r--addons/web/static/src/js/view_form.js736
-rw-r--r--addons/web/static/src/js/view_list.js108
-rw-r--r--addons/web/static/src/js/view_list_editable.js31
-rw-r--r--addons/web/static/src/js/view_tree.js20
-rw-r--r--addons/web/static/src/js/views.js104
15 files changed, 896 insertions, 889 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index 892c86f2a92..f1d3faef367 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -1,16 +1,16 @@
/*---------------------------------------------------------
* OpenERP Web chrome
*---------------------------------------------------------*/
-openerp.web.chrome = function(openerp) {
-var QWeb = openerp.web.qweb,
- _t = openerp.web._t;
+openerp.web.chrome = function(instance) {
+var QWeb = instance.web.qweb,
+ _t = instance.web._t;
-openerp.web.Notification = openerp.web.Widget.extend({
+instance.web.Notification = instance.web.Widget.extend({
template: 'Notification',
init: function() {
this._super.apply(this, arguments);
- // move to openerp.web.notification
- openerp.notification = this;
+ // move to instance.web.notification
+ instance.notification = this;
},
start: function() {
this._super.apply(this, arguments);
@@ -43,13 +43,13 @@ openerp.web.Notification = openerp.web.Widget.extend({
}
});
-openerp.web.dialog = function(element) {
+instance.web.dialog = function(element) {
var result = element.dialog.apply(element, _.rest(_.toArray(arguments)));
result.dialog("widget").addClass("openerp");
return result;
}
-openerp.web.Dialog = openerp.web.Widget.extend({
+instance.web.Dialog = instance.web.Widget.extend({
dialog_title: "",
init: function (parent, options, content) {
var self = this;
@@ -83,7 +83,7 @@ openerp.web.Dialog = openerp.web.Widget.extend({
if (this.dialog_options.autoOpen) {
this.open();
} else {
- openerp.web.dialog(this.$element, this.get_options());
+ instance.web.dialog(this.$element, this.get_options());
}
},
get_options: function(options) {
@@ -122,7 +122,7 @@ openerp.web.Dialog = openerp.web.Widget.extend({
this.$element.html(this.renderElement());
}
var o = this.get_options(options);
- openerp.web.dialog(this.$element, o).dialog('open');
+ instance.web.dialog(this.$element, o).dialog('open');
if (o.height === 'auto' && o.max_height) {
this.$element.css({ 'max-height': o.max_height, 'overflow-y': 'auto' });
}
@@ -146,7 +146,7 @@ openerp.web.Dialog = openerp.web.Widget.extend({
}
});
-openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({
+instance.web.CrashManager = instance.web.CallbackEnabled.extend({
on_rpc_error: function(error) {
if (error.data.fault_code) {
var split = ("" + error.data.fault_code).split('\n')[0].split(' -- ');
@@ -162,7 +162,7 @@ openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({
}
},
on_managed_error: function(error) {
- openerp.web.dialog($('<div>' + QWeb.render('CrashManager.warning', {error: error}) + '</div>'), {
+ instance.web.dialog($('<div>' + QWeb.render('CrashManager.warning', {error: error}) + '</div>'), {
title: "OpenERP " + _.str.capitalize(error.type),
buttons: [
{text: _t("Ok"), click: function() { $(this).dialog("close"); }}
@@ -172,14 +172,14 @@ openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({
on_traceback: function(error) {
var self = this;
var buttons = {};
- if (openerp.connection.openerp_entreprise) {
+ if (instance.connection.openerp_entreprise) {
buttons[_t("Send OpenERP Enterprise Report")] = function() {
var $this = $(this);
var issuename = $('#issuename').val();
var explanation = $('#explanation').val();
var remark = $('#remark').val();
// Call the send method from server to send mail with details
- new openerp.web.DataSet(self, 'publisher_warranty.contract').call_and_eval('send', [error.data,explanation,remark,issuename]).then(function(result){
+ new instance.web.DataSet(self, 'publisher_warranty.contract').call_and_eval('send', [error.data,explanation,remark,issuename]).then(function(result){
if (result === false) {
alert('There was a communication error.')
} else {
@@ -195,7 +195,7 @@ openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({
$(this).dialog("close");
};
}
- var dialog = new openerp.web.Dialog(this, {
+ var dialog = new instance.web.Dialog(this, {
title: "OpenERP " + _.str.capitalize(error.type),
width: '80%',
height: '50%',
@@ -203,11 +203,11 @@ openerp.web.CrashManager = openerp.web.CallbackEnabled.extend({
min_height: '600px',
buttons: buttons
}).open();
- dialog.$element.html(QWeb.render('CrashManager.error', {session: openerp.connection, error: error}));
+ dialog.$element.html(QWeb.render('CrashManager.error', {session: instance.connection, error: error}));
}
});
-openerp.web.Loading = openerp.web.Widget.extend({
+instance.web.Loading = instance.web.Widget.extend({
template: 'Loading',
init: function(parent) {
this._super(parent);
@@ -258,7 +258,7 @@ openerp.web.Loading = openerp.web.Widget.extend({
}
});
-openerp.web.DatabaseManager = openerp.web.Widget.extend({
+instance.web.DatabaseManager = instance.web.Widget.extend({
init: function(parent) {
this._super(parent);
this.unblockUIFunction = $.unblockUI;
@@ -344,7 +344,7 @@ openerp.web.DatabaseManager = openerp.web.Widget.extend({
* @param {String} error.error message of the error dialog
*/
display_error: function (error) {
- return openerp.web.dialog($('<div>'), {
+ return instance.web.dialog($('<div>'), {
modal: true,
title: error.title,
buttons: [
@@ -388,7 +388,7 @@ openerp.web.DatabaseManager = openerp.web.Widget.extend({
success: function () {
self.do_notify(_t("Backed"), _t("Database backed up successfully"));
},
- error: openerp.webclient.crashmanager.on_rpc_error,
+ error: instance.webclient.crashmanager.on_rpc_error,
complete: function() {
self.unblockUI();
}
@@ -439,7 +439,7 @@ openerp.web.DatabaseManager = openerp.web.Widget.extend({
}
});
-openerp.web.Login = openerp.web.Widget.extend({
+instance.web.Login = instance.web.Widget.extend({
template: "Login",
remember_credentials: true,
init: function(parent) {
@@ -464,7 +464,7 @@ openerp.web.Login = openerp.web.Widget.extend({
self.$element.find('.oe_login_manage_db').click(function() {
self.$element.find('.oe_login_bottom').hide();
self.$element.find('.oe_login_pane').hide();
- self.databasemanager = new openerp.web.DatabaseManager(self);
+ self.databasemanager = new instance.web.DatabaseManager(self);
self.databasemanager.appendTo(self.$element);
self.databasemanager.do_exit.add_last(function() {
self.databasemanager.destroy();
@@ -486,7 +486,7 @@ openerp.web.Login = openerp.web.Widget.extend({
});
},
set_db_list: function (list) {
- this.$element.find("[name=db]").replaceWith(openerp.web.qweb.render('Login.dblist', { db_list: list, selected_db: this.selected_db}))
+ this.$element.find("[name=db]").replaceWith(instance.web.qweb.render('Login.dblist', { db_list: list, selected_db: this.selected_db}))
},
on_submit: function(ev) {
if(ev) {
@@ -538,7 +538,7 @@ openerp.web.Login = openerp.web.Widget.extend({
}
});
-openerp.web.Menu = openerp.web.Widget.extend({
+instance.web.Menu = instance.web.Widget.extend({
template: 'Menu',
init: function() {
this._super.apply(this, arguments);
@@ -682,7 +682,7 @@ openerp.web.Menu = openerp.web.Widget.extend({
}
});
-openerp.web.UserMenu = openerp.web.Widget.extend({
+instance.web.UserMenu = instance.web.Widget.extend({
template: "UserMenu",
init: function(parent) {
this._super(parent);
@@ -707,7 +707,7 @@ openerp.web.UserMenu = openerp.web.Widget.extend({
},
change_password :function() {
var self = this;
- this.dialog = new openerp.web.Dialog(this, {
+ this.dialog = new instance.web.Dialog(this, {
title: _t("Change Password"),
width : 'auto'
}).open();
@@ -721,14 +721,14 @@ openerp.web.UserMenu = openerp.web.Widget.extend({
self.display_error(result);
return;
} else {
- openerp.webclient.on_logout();
+ instance.webclient.on_logout();
}
});
}
});
},
display_error: function (error) {
- return openerp.web.dialog($('<div>'), {
+ return instance.web.dialog($('<div>'), {
modal: true,
title: error.title,
buttons: [
@@ -743,10 +743,10 @@ openerp.web.UserMenu = openerp.web.Widget.extend({
$avatar.attr('src', $avatar.data('default-src'));
if (!self.session.uid)
return;
- var func = new openerp.web.Model("res.users").get_func("read");
+ var func = new instance.web.Model("res.users").get_func("read");
return func(self.session.uid, ["name", "company_id"]).pipe(function(res) {
// TODO: Show company if multicompany is in use
- var topbar_name = _.str.sprintf("%s (%s)", res.name, openerp.connection.db, res.company_id[1]);
+ var topbar_name = _.str.sprintf("%s (%s)", res.name, instance.connection.db, res.company_id[1]);
self.$element.find('.oe_topbar_name').text(topbar_name);
var avatar_src = _.str.sprintf('%s/web/binary/image?session_id=%s&model=res.users&field=avatar&id=%s', self.session.prefix, self.session.session_id, self.session.uid);
$avatar.attr('src', avatar_src);
@@ -760,7 +760,7 @@ openerp.web.UserMenu = openerp.web.Widget.extend({
shortcut_load :function(){
var self = this,
sc = self.session.shortcuts,
- shortcuts_ds = new openerp.web.DataSet(this, 'ir.ui.view_sc');
+ shortcuts_ds = new instance.web.DataSet(this, 'ir.ui.view_sc');
self.$element.find('.oe_dropdown_options a[data-menu=shortcut]').each(function() {
$(this).parent().remove();
});
@@ -807,8 +807,8 @@ openerp.web.UserMenu = openerp.web.Widget.extend({
},
on_menu_settings: function() {
var self = this;
- var action_manager = new openerp.web.ActionManager(this);
- var dataset = new openerp.web.DataSet (this,'res.users',this.context);
+ var action_manager = new instance.web.ActionManager(this);
+ var dataset = new instance.web.DataSet (this,'res.users',this.context);
dataset.call ('action_get','',function (result){
self.rpc('/web/action/load', {action_id:result}, function(result){
action_manager.do_action(_.extend(result['result'], {
@@ -825,7 +825,7 @@ openerp.web.UserMenu = openerp.web.Widget.extend({
}));
});
});
- this.dialog = new openerp.web.Dialog(this,{
+ this.dialog = new instance.web.Dialog(this,{
title: _t("Preferences"),
width: '700px',
buttons: [
@@ -855,7 +855,7 @@ openerp.web.UserMenu = openerp.web.Widget.extend({
window.location = $.param.querystring(
window.location.href, 'debug');
});
- openerp.web.dialog($help, {autoOpen: true,
+ instance.web.dialog($help, {autoOpen: true,
modal: true, width: 960, title: _t("About")});
});
},
@@ -871,11 +871,11 @@ openerp.web.UserMenu = openerp.web.Widget.extend({
}
});
-openerp.web.WebClient = openerp.web.Widget.extend({
+instance.web.WebClient = instance.web.Widget.extend({
init: function(parent) {
var self = this;
this._super(parent);
- openerp.webclient = this;
+ instance.webclient = this;
this.querystring = '?' + jQuery.param.querystring();
this._current_state = null;
},
@@ -900,7 +900,7 @@ openerp.web.WebClient = openerp.web.Widget.extend({
self.menu.do_reload();
if(self.action_manager)
self.action_manager.destroy();
- self.action_manager = new openerp.web.ActionManager(self);
+ self.action_manager = new instance.web.ActionManager(self);
self.action_manager.appendTo(self.$element.find('.oe_application'));
self.bind_hashchange();
var version_label = _t("OpenERP - Unsupported/Community Version");
@@ -917,7 +917,7 @@ openerp.web.WebClient = openerp.web.Widget.extend({
var self = this;
this.destroy_content();
this.show_common();
- self.login = new openerp.web.Login(self);
+ self.login = new instance.web.Login(self);
self.login.appendTo(self.$element);
},
show_application: function() {
@@ -926,10 +926,10 @@ openerp.web.WebClient = openerp.web.Widget.extend({
this.show_common();
self.$table = $(QWeb.render("WebClient", {}));
self.$element.append(self.$table);
- self.menu = new openerp.web.Menu(self);
+ self.menu = new instance.web.Menu(self);
self.menu.replace(this.$element.find('.oe_menu_placeholder'));
self.menu.on_action.add(this.proxy('on_menu_action'));
- self.user_menu = new openerp.web.UserMenu(self);
+ self.user_menu = new instance.web.UserMenu(self);
self.user_menu.replace(this.$element.find('.oe_user_menu_placeholder'));
self.user_menu.on_menu_logout.add(this.proxy('on_logout'));
self.user_menu.on_action.add(this.proxy('on_menu_action'));
@@ -937,8 +937,8 @@ openerp.web.WebClient = openerp.web.Widget.extend({
show_common: function() {
var self = this;
if (!this.crashmanager) {
- this.crashmanager = new openerp.web.CrashManager();
- openerp.connection.on_rpc_error.add(this.crashmanager.on_rpc_error);
+ this.crashmanager = new instance.web.CrashManager();
+ instance.connection.on_rpc_error.add(this.crashmanager.on_rpc_error);
window.onerror = function (message, file, line) {
self.crashmanager.on_traceback({
type: _t("Client Error"),
@@ -947,9 +947,9 @@ openerp.web.WebClient = openerp.web.Widget.extend({
});
}
}
- this.notification = new openerp.web.Notification(this);
+ this.notification = new instance.web.Notification(this);
this.notification.appendTo(this.$element);
- this.loading = new openerp.web.Loading(this);
+ this.loading = new instance.web.Loading(this);
this.loading.appendTo(this.$element);
},
destroy_content: function() {
@@ -961,7 +961,7 @@ openerp.web.WebClient = openerp.web.Widget.extend({
do_reload: function() {
var self = this;
return this.session.session_reload().pipe(function () {
- openerp.connection.load_modules(true).pipe(
+ instance.connection.load_modules(true).pipe(
self.menu.proxy('do_reload')); });
},
@@ -1025,14 +1025,14 @@ openerp.web.WebClient = openerp.web.Widget.extend({
}
});
-openerp.web.EmbeddedClient = openerp.web.Widget.extend({
+instance.web.EmbeddedClient = instance.web.Widget.extend({
template: 'EmptyComponent',
init: function(parent, action_id, options) {
this._super(parent);
// TODO take the xmlid of a action instead of its id
this.action_id = action_id;
this.options = options || {};
- this.am = new openerp.web.ActionManager(this);
+ this.am = new instance.web.ActionManager(this);
},
start: function() {
var self = this;
@@ -1052,7 +1052,7 @@ openerp.web.EmbeddedClient = openerp.web.Widget.extend({
}
});
-openerp.web.embed = function (origin, dbname, login, key, action, options) {
+instance.web.embed = function (origin, dbname, login, key, action, options) {
$('head').append($('<link>', {
'rel': 'stylesheet',
'type': 'text/css',
@@ -1063,9 +1063,9 @@ openerp.web.embed = function (origin, dbname, login, key, action, options) {
var sc = document.getElementsByTagName('script');
currentScript = sc[sc.length-1];
}
- openerp.connection.session_bind(origin).then(function () {
- openerp.connection.session_authenticate(dbname, login, key, true).then(function () {
- var client = new openerp.web.EmbeddedClient(null, action, options);
+ instance.connection.session_bind(origin).then(function () {
+ instance.connection.session_authenticate(dbname, login, key, true).then(function () {
+ var client = new instance.web.EmbeddedClient(null, action, options);
client.insertAfter(currentScript);
});
});
diff --git a/addons/web/static/src/js/corelib.js b/addons/web/static/src/js/corelib.js
index 2da804c3d2c..5475f4ad53c 100644
--- a/addons/web/static/src/js/corelib.js
+++ b/addons/web/static/src/js/corelib.js
@@ -23,7 +23,7 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-openerp.web.corelib = function(openerp) {
+openerp.web.corelib = function(instance) {
/**
* Improved John Resig's inheritance, based on:
@@ -39,7 +39,7 @@ openerp.web.corelib = function(openerp) {
*
* Example:
*
- * var Person = openerp.web.Class.extend({
+ * var Person = instance.web.Class.extend({
* init: function(isDancing){
* this.dancing = isDancing;
* },
@@ -75,14 +75,14 @@ openerp.web.corelib = function(openerp) {
var initializing = false,
fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
// The web Class implementation (does nothing)
- openerp.web.Class = function(){};
+ instance.web.Class = function(){};
/**
* Subclass an existing class
*
* @param {Object} prop class-level properties (class attributes and instance methods) to set on the new class
*/
- openerp.web.Class.extend = function() {
+ instance.web.Class.extend = function() {
var _super = this.prototype;
// Support mixins arguments
var args = _.toArray(arguments);
@@ -180,7 +180,7 @@ openerp.web.corelib = function(openerp) {
* When an object is destroyed, all its children are destroyed too releasing
* any resource they could have reserved before.
*/
-openerp.web.ParentedMixin = {
+instance.web.ParentedMixin = {
__parentedMixin : true,
init: function() {
this.__parentedDestroyed = false;
@@ -253,7 +253,7 @@ openerp.web.ParentedMixin = {
* events is done in EventDispatcherMixin.
*
*/
-openerp.web.Events = openerp.web.Class.extend({
+instance.web.Events = instance.web.Class.extend({
on : function(events, callback, context) {
var ev;
@@ -324,11 +324,11 @@ openerp.web.Events = openerp.web.Class.extend({
}
});
-openerp.web.EventDispatcherMixin = _.extend({}, openerp.web.ParentedMixin, {
+instance.web.EventDispatcherMixin = _.extend({}, instance.web.ParentedMixin, {
__eventDispatcherMixin: true,
init: function() {
- openerp.web.ParentedMixin.init.call(this);
- this.__edispatcherEvents = new openerp.web.Events();
+ instance.web.ParentedMixin.init.call(this);
+ this.__edispatcherEvents = new instance.web.Events();
this.__edispatcherRegisteredEvents = [];
},
on: function(events, dest, func) {
@@ -369,13 +369,13 @@ openerp.web.EventDispatcherMixin = _.extend({}, openerp.web.ParentedMixin, {
debugger;
}
this.__edispatcherEvents.off();
- openerp.web.ParentedMixin.destroy.call(this);
+ instance.web.ParentedMixin.destroy.call(this);
}
});
-openerp.web.GetterSetterMixin = _.extend({}, openerp.web.EventDispatcherMixin, {
+instance.web.GetterSetterMixin = _.extend({}, instance.web.EventDispatcherMixin, {
init: function() {
- openerp.web.EventDispatcherMixin.init.call(this);
+ instance.web.EventDispatcherMixin.init.call(this);
this.__getterSetterInternalMap = {};
},
set: function(map) {
@@ -400,9 +400,9 @@ openerp.web.GetterSetterMixin = _.extend({}, openerp.web.EventDispatcherMixin, {
}
});
-openerp.web.CallbackEnabledMixin = _.extend({}, openerp.web.GetterSetterMixin, {
+instance.web.CallbackEnabledMixin = _.extend({}, instance.web.GetterSetterMixin, {
init: function() {
- openerp.web.GetterSetterMixin.init.call(this);
+ instance.web.GetterSetterMixin.init.call(this);
var self = this;
var callback_maker = function(obj, name, method) {
var callback = function() {
@@ -421,7 +421,7 @@ openerp.web.CallbackEnabledMixin = _.extend({}, openerp.web.GetterSetterMixin, {
r = result;
}
// TODO special value to stop the chain
- // openerp.web.callback_stop
+ // instance.web.callback_stop
}
return r;
};
@@ -500,7 +500,7 @@ openerp.web.CallbackEnabledMixin = _.extend({}, openerp.web.GetterSetterMixin, {
}
});
-openerp.web.WidgetMixin = _.extend({},openerp.web.CallbackEnabledMixin, {
+instance.web.WidgetMixin = _.extend({},instance.web.CallbackEnabledMixin, {
/**
* Tag name when creating a default $element.
* @type string
@@ -509,10 +509,10 @@ openerp.web.WidgetMixin = _.extend({},openerp.web.CallbackEnabledMixin, {
/**
* Constructs the widget and sets its parent if a parent is given.
*
- * @constructs openerp.web.Widget
- * @extends openerp.web.CallbackEnabled
+ * @constructs instance.web.Widget
+ * @extends instance.web.CallbackEnabled
*
- * @param {openerp.web.Widget} parent Binds the current instance to the given Widget instance.
+ * @param {instance.web.Widget} parent Binds the current instance to the given Widget instance.
* When that widget is destroyed by calling destroy(), the current instance will be
* destroyed too. Can be null.
* @param {String} element_id Deprecated. Sets the element_id. Only useful when you want
@@ -521,7 +521,7 @@ openerp.web.WidgetMixin = _.extend({},openerp.web.CallbackEnabledMixin, {
* for new components this argument should not be provided any more.
*/
init: function(parent) {
- openerp.web.CallbackEnabledMixin.init.call(this);
+ instance.web.CallbackEnabledMixin.init.call(this);
this.$element = $(document.createElement(this.tagName));
this.setParent(parent);
},
@@ -535,7 +535,7 @@ openerp.web.WidgetMixin = _.extend({},openerp.web.CallbackEnabledMixin, {
if(this.$element != null) {
this.$element.remove();
}
- openerp.web.GetterSetterMixin.destroy.call(this);
+ instance.web.GetterSetterMixin.destroy.call(this);
},
/**
* Renders the current widget and appends it to the given jQuery object or Widget.
@@ -616,9 +616,9 @@ openerp.web.WidgetMixin = _.extend({},openerp.web.CallbackEnabledMixin, {
// Classes
-openerp.web.CallbackEnabled = openerp.web.Class.extend(openerp.web.CallbackEnabledMixin, {
+instance.web.CallbackEnabled = instance.web.Class.extend(instance.web.CallbackEnabledMixin, {
init: function() {
- openerp.web.CallbackEnabledMixin.init.call(this);
+ instance.web.CallbackEnabledMixin.init.call(this);
}
});
@@ -637,7 +637,7 @@ openerp.web.CallbackEnabled = openerp.web.Class.extend(openerp.web.CallbackEnabl
*
* Here is a sample child class:
*
- * MyWidget = openerp.base.Widget.extend({
+ * MyWidget = instance.base.Widget.extend({
* // the name of the QWeb template to use for rendering
* template: "MyQWebTemplate",
*
@@ -670,7 +670,7 @@ openerp.web.CallbackEnabled = openerp.web.Class.extend(openerp.web.CallbackEnabl
*
* That will kill the widget in a clean way and erase its content from the dom.
*/
-openerp.web.Widget = openerp.web.Class.extend(openerp.web.WidgetMixin, {
+instance.web.Widget = instance.web.Class.extend(instance.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.
@@ -681,10 +681,10 @@ openerp.web.Widget = openerp.web.Class.extend(openerp.web.WidgetMixin, {
/**
* Constructs the widget and sets its parent if a parent is given.
*
- * @constructs openerp.web.Widget
- * @extends openerp.web.CallbackEnabled
+ * @constructs instance.web.Widget
+ * @extends instance.web.CallbackEnabled
*
- * @param {openerp.web.Widget} parent Binds the current instance to the given Widget instance.
+ * @param {instance.web.Widget} parent Binds the current instance to the given Widget instance.
* When that widget is destroyed by calling destroy(), the current instance will be
* destroyed too. Can be null.
* @param {String} element_id Deprecated. Sets the element_id. Only useful when you want
@@ -693,8 +693,8 @@ openerp.web.Widget = openerp.web.Class.extend(openerp.web.WidgetMixin, {
* for new components this argument should not be provided any more.
*/
init: function(parent) {
- openerp.web.WidgetMixin.init.call(this,parent);
- this.session = openerp.connection;
+ instance.web.WidgetMixin.init.call(this,parent);
+ this.session = instance.connection;
},
/**
* Renders the element. The default implementation renders the widget using QWeb,
@@ -704,7 +704,7 @@ openerp.web.Widget = openerp.web.Class.extend(openerp.web.WidgetMixin, {
renderElement: function() {
var rendered = null;
if (this.template)
- rendered = openerp.web.qweb.render(this.template, {widget: this});
+ rendered = instance.web.qweb.render(this.template, {widget: this});
if (_.str.trim(rendered)) {
var elem = $(rendered);
this.$element.replaceWith(elem);
@@ -737,7 +737,7 @@ openerp.web.Widget = openerp.web.Class.extend(openerp.web.WidgetMixin, {
rpc: function(url, data, success, error) {
var def = $.Deferred().then(success, error);
var self = this;
- openerp.connection.rpc(url, data). then(function() {
+ instance.connection.rpc(url, data). then(function() {
if (!self.isDestroyed())
def.resolve.apply(def, arguments);
}, function() {
@@ -748,7 +748,7 @@ openerp.web.Widget = openerp.web.Class.extend(openerp.web.WidgetMixin, {
}
});
-openerp.web.Registry = openerp.web.Class.extend({
+instance.web.Registry = instance.web.Class.extend({
/**
* Stores a mapping of arbitrary key (strings) to object paths (as strings
* as well).
@@ -757,11 +757,11 @@ openerp.web.Registry = openerp.web.Class.extend({
* object, even if those objects have been overloaded/replaced after the
* registry was created.
*
- * An object path is simply a dotted name from the openerp root to the
- * object pointed to (e.g. ``"openerp.web.Connection"`` for an OpenERP
+ * An object path is simply a dotted name from the instance root to the
+ * object pointed to (e.g. ``"instance.web.Connection"`` for an OpenERP
* connection object).
*
- * @constructs openerp.web.Registry
+ * @constructs instance.web.Registry
* @param {Object} mapping a mapping of keys to object-paths
*/
init: function (mapping) {
@@ -785,7 +785,7 @@ openerp.web.Registry = openerp.web.Class.extend({
return null;
}
- var object_match = openerp;
+ var object_match = instance;
var path = path_string.split('.');
// ignore first section
for(var i=1; i<path.length; ++i) {
@@ -838,7 +838,7 @@ openerp.web.Registry = openerp.web.Class.extend({
*
* @param {String} key
* @param {String} object_path fully qualified dotted object path
- * @returns {openerp.web.Registry} itself
+ * @returns {instance.web.Registry} itself
*/
add: function (key, object_path) {
this.map[key] = object_path;
@@ -854,7 +854,7 @@ openerp.web.Registry = openerp.web.Class.extend({
* @param {Object} [mapping={}] a mapping of keys to object-paths
*/
extend: function (mapping) {
- var child = new openerp.web.Registry(mapping);
+ var child = new instance.web.Registry(mapping);
child.parent = this;
return child;
},
@@ -867,10 +867,10 @@ openerp.web.Registry = openerp.web.Class.extend({
}
});
-openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.web.Connection# */{
+instance.web.Connection = instance.web.CallbackEnabled.extend( /** @lends instance.web.Connection# */{
/**
- * @constructs openerp.web.Connection
- * @extends openerp.web.CallbackEnabled
+ * @constructs instance.web.Connection
+ * @extends instance.web.CallbackEnabled
*
* @param {String} [server] JSON-RPC endpoint hostname
* @param {String} [port] JSON-RPC endpoint port
@@ -880,7 +880,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
this.server = null;
this.debug = ($.deparam($.param.querystring()).debug != undefined);
// TODO: session store in cookie should be optional
- this.name = openerp._session_id;
+ this.name = instance._session_id;
this.qweb_mutex = new $.Mutex();
},
session_bind: function(origin) {
@@ -888,7 +888,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
this.origin = origin ? _.str.rtrim(origin,'/') : window_origin;
this.prefix = this.origin;
this.server = this.origin; // keep chs happy
- openerp.web.qweb.default_dict['_s'] = this.origin;
+ instance.web.qweb.default_dict['_s'] = this.origin;
this.rpc_function = (this.origin == window_origin) ? this.rpc_json : this.rpc_jsonp;
this.session_id = false;
this.uid = false;
@@ -896,7 +896,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
this.user_context= {};
this.db = false;
this.openerp_entreprise = false;
- this.module_list = openerp._modules.slice();
+ this.module_list = instance._modules.slice();
this.module_loaded = {};
_(this.module_list).each(function (mod) {
self.module_loaded[mod] = true;
@@ -1069,7 +1069,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
try {
var ctx = this.test_eval_contexts(source.contexts);
if (!_.isEqual(ctx, expected.context)) {
- openerp.webclient.notification.warn('Context mismatch, report to xmo',
+ instance.webclient.notification.warn('Context mismatch, report to xmo',
_.str.sprintf(match_template, {
source: JSON.stringify(source.contexts),
local: JSON.stringify(ctx),
@@ -1077,7 +1077,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
}), true);
}
} catch (e) {
- openerp.webclient.notification.warn('Context fail, report to xmo',
+ instance.webclient.notification.warn('Context fail, report to xmo',
_.str.sprintf(fail_template, {
error: e.message,
source: JSON.stringify(source.contexts)
@@ -1087,7 +1087,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
try {
var dom = this.test_eval_domains(source.domains, this.test_eval_get_context());
if (!_.isEqual(dom, expected.domain)) {
- openerp.webclient.notification.warn('Domains mismatch, report to xmo',
+ instance.webclient.notification.warn('Domains mismatch, report to xmo',
_.str.sprintf(match_template, {
source: JSON.stringify(source.domains),
local: JSON.stringify(dom),
@@ -1095,7 +1095,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
}), true);
}
} catch (e) {
- openerp.webclient.notification.warn('Domain fail, report to xmo',
+ instance.webclient.notification.warn('Domain fail, report to xmo',
_.str.sprintf(fail_template, {
error: e.message,
source: JSON.stringify(source.domains)
@@ -1105,7 +1105,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
try {
var groups = this.test_eval_groupby(source.group_by_seq);
if (!_.isEqual(groups, expected.group_by)) {
- openerp.webclient.notification.warn('GroupBy mismatch, report to xmo',
+ instance.webclient.notification.warn('GroupBy mismatch, report to xmo',
_.str.sprintf(match_template, {
source: JSON.stringify(source.group_by_seq),
local: JSON.stringify(groups),
@@ -1113,7 +1113,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
}), true);
}
} catch (e) {
- openerp.webclient.notification.warn('GroupBy fail, report to xmo',
+ instance.webclient.notification.warn('GroupBy fail, report to xmo',
_.str.sprintf(fail_template, {
error: e.message,
source: JSON.stringify(source.group_by_seq)
@@ -1369,7 +1369,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
// TODO: session store in cookie should be optional
this.session_id = this.get_cookie('session_id');
return this.session_reload().pipe(function(result) {
- var modules = openerp._modules.join(',');
+ var modules = instance._modules.join(',');
var deferred = self.rpc('/web/webclient/qweblist', {mods: modules}).pipe(self.do_load_qweb);
if(self.session_is_valid()) {
return deferred.pipe(function() { return self.load_modules(); });
@@ -1491,7 +1491,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
self.rpc('/web/webclient/csslist', {mods: to_load}, self.do_load_css),
self.rpc('/web/webclient/qweblist', {mods: to_load}).pipe(self.do_load_qweb),
self.rpc('/web/webclient/translations', params).pipe(function(trans) {
- openerp.web._t.database.set_bundle(trans);
+ instance.web._t.database.set_bundle(trans);
var file_list = ["/web/static/lib/datejs/globalization/" + lang.replace("_", "-") + ".js"];
return self.rpc('/web/webclient/jslist', {mods: to_load}).pipe(function(files) {
return self.do_load_js(file_list.concat(files));
@@ -1553,7 +1553,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
self.qweb_mutex.exec(function() {
return self.rpc('/web/proxy/load', {path: file}).pipe(function(xml) {
if (!xml) { return; }
- openerp.web.qweb.add_template(_.str.trim(xml));
+ instance.web.qweb.add_template(_.str.trim(xml));
});
});
});
@@ -1564,10 +1564,10 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
var mod = this.module_list[j];
if(this.module_loaded[mod])
continue;
- openerp[mod] = {};
+ instance[mod] = {};
// init module mod
- if(openerp._openerp[mod] != undefined) {
- openerp._openerp[mod](openerp);
+ if(instance._openerp[mod] != undefined) {
+ instance._openerp[mod](instance);
this.module_loaded[mod] = true;
}
}
@@ -1687,10 +1687,10 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
}
});
-openerp.web.TranslationDataBase = openerp.web.Class.extend(/** @lends openerp.web.TranslationDataBase# */{
+instance.web.TranslationDataBase = instance.web.Class.extend(/** @lends instance.web.TranslationDataBase# */{
/**
- * @constructs openerp.web.TranslationDataBase
- * @extends openerp.web.Class
+ * @constructs instance.web.TranslationDataBase
+ * @extends instance.web.Class
*/
init: function() {
this.db = {};
@@ -1741,9 +1741,9 @@ openerp.web.TranslationDataBase = openerp.web.Class.extend(/** @lends openerp.we
});
/**
- * @deprecated use :class:`openerp.web.Widget`
+ * @deprecated use :class:`instance.web.Widget`
*/
-openerp.web.OldWidget = openerp.web.Widget.extend({
+instance.web.OldWidget = instance.web.Widget.extend({
init: function(parent, element_id) {
this._super(parent);
this.element_id = element_id;
@@ -1762,7 +1762,7 @@ openerp.web.OldWidget = openerp.web.Widget.extend({
},
render: function (additional) {
if (this.template)
- return openerp.web.qweb.render(this.template, _.extend({widget: this}, additional || {}));
+ return instance.web.qweb.render(this.template, _.extend({widget: this}, additional || {}));
return null;
}
});
diff --git a/addons/web/static/src/js/coresetup.js b/addons/web/static/src/js/coresetup.js
index a68a7bb3d7e..86040302668 100644
--- a/addons/web/static/src/js/coresetup.js
+++ b/addons/web/static/src/js/coresetup.js
@@ -9,10 +9,10 @@ if (!console.debug) {
console.debug = console.log;
}
-openerp.web.coresetup = function(openerp) {
+openerp.web.coresetup = function(instance) {
/** Configure default qweb */
-openerp.web._t = new openerp.web.TranslationDataBase().build_translation_function();
+instance.web._t = new instance.web.TranslationDataBase().build_translation_function();
/**
* Lazy translation function, only performs the translation when actually
* printed (e.g. inserted into a template)
@@ -24,16 +24,16 @@ openerp.web._t = new openerp.web.TranslationDataBase().build_translation_functio
* @param {String} s string to translate
* @returns {Object} lazy translation object
*/
-openerp.web._lt = function (s) {
- return {toString: function () { return openerp.web._t(s); }}
+instance.web._lt = function (s) {
+ return {toString: function () { return instance.web._t(s); }}
};
-openerp.web.qweb = new QWeb2.Engine();
-openerp.web.qweb.debug = ($.deparam($.param.querystring()).debug != undefined);
-openerp.web.qweb.default_dict = {
+instance.web.qweb = new QWeb2.Engine();
+instance.web.qweb.debug = ($.deparam($.param.querystring()).debug != undefined);
+instance.web.qweb.default_dict = {
'_' : _,
- '_t' : openerp.web._t
+ '_t' : instance.web._t
};
-openerp.web.qweb.preprocess_node = function() {
+instance.web.qweb.preprocess_node = function() {
// Note that 'this' is the Qweb Node
switch (this.node.nodeType) {
case 3:
@@ -47,7 +47,7 @@ openerp.web.qweb.preprocess_node = function() {
if (ts.length === 0) {
return;
}
- var tr = openerp.web._t(ts);
+ var tr = instance.web._t(ts);
if (tr !== ts) {
this.node.data = tr;
}
@@ -57,7 +57,7 @@ openerp.web.qweb.preprocess_node = function() {
var attr, attrs = ['label', 'title', 'alt'];
while (attr = attrs.pop()) {
if (this.attributes[attr]) {
- this.attributes[attr] = openerp.web._t(this.attributes[attr]);
+ this.attributes[attr] = instance.web._t(this.attributes[attr]);
}
}
}
@@ -99,8 +99,8 @@ $.Mutex = (function() {
})();
/** Setup default connection */
-openerp.connection = new openerp.web.Connection();
-openerp.web.qweb.default_dict['__debug__'] = openerp.connection.debug;
+instance.connection = new instance.web.Connection();
+instance.web.qweb.default_dict['__debug__'] = instance.connection.debug;
$.async_when = function() {
var async = false;
@@ -131,7 +131,7 @@ $.async_when = function() {
// special tweak for the web client
var old_async_when = $.async_when;
$.async_when = function() {
- if (openerp.connection.synch)
+ if (instance.connection.synch)
return $.when.apply(this, arguments);
else
return old_async_when.apply(this, arguments);
diff --git a/addons/web/static/src/js/data.js b/addons/web/static/src/js/data.js
index d9cfc5c4002..4f18a4c53d9 100644
--- a/addons/web/static/src/js/data.js
+++ b/addons/web/static/src/js/data.js
@@ -1,5 +1,5 @@
-openerp.web.data = function(openerp) {
+openerp.web.data = function(instance) {
/**
* Serializes the sort criterion array of a dataset into a form which can be
@@ -8,7 +8,7 @@ openerp.web.data = function(openerp) {
* @param {Array} criterion array of fields, from first to last criteria, prefixed with '-' for reverse sorting
* @returns {String} SQL-like sorting string (``ORDER BY``) clause
*/
-openerp.web.serialize_sort = function (criterion) {
+instance.web.serialize_sort = function (criterion) {
return _.map(criterion,
function (criteria) {
if (criteria[0] === '-') {
@@ -18,7 +18,7 @@ openerp.web.serialize_sort = function (criterion) {
}).join(', ');
};
-openerp.web.DataGroup = openerp.web.OldWidget.extend( /** @lends openerp.web.DataGroup# */{
+instance.web.DataGroup = instance.web.OldWidget.extend( /** @lends instance.web.DataGroup# */{
/**
* Management interface between views and grouped collections of OpenERP
* records.
@@ -26,13 +26,13 @@ openerp.web.DataGroup = openerp.web.OldWidget.extend( /** @lends openerp.web.Da
* The root DataGroup is instantiated with the relevant information
* (a session, a model, a domain, a context and a group_by sequence), the
* domain and context may be empty. It is then interacted with via
- * :js:func:`~openerp.web.DataGroup.list`, which is used to read the
+ * :js:func:`~instance.web.DataGroup.list`, which is used to read the
* content of the current grouping level.
*
- * @constructs openerp.web.DataGroup
- * @extends openerp.web.OldWidget
+ * @constructs instance.web.DataGroup
+ * @extends instance.web.OldWidget
*
- * @param {openerp.web.OldWidget} parent widget
+ * @param {instance.web.OldWidget} parent widget
* @param {String} model name of the model managed by this DataGroup
* @param {Array} domain search domain for this DataGroup
* @param {Object} context context of the DataGroup's searches
@@ -43,9 +43,9 @@ openerp.web.DataGroup = openerp.web.OldWidget.extend( /** @lends openerp.web.Da
this._super(parent, null);
if (group_by) {
if (group_by.length || context['group_by_no_leaf']) {
- return new openerp.web.ContainerDataGroup( this, model, domain, context, group_by, level);
+ return new instance.web.ContainerDataGroup( this, model, domain, context, group_by, level);
} else {
- return new openerp.web.GrouplessDataGroup( this, model, domain, context, level);
+ return new instance.web.GrouplessDataGroup( this, model, domain, context, level);
}
}
@@ -57,11 +57,11 @@ openerp.web.DataGroup = openerp.web.OldWidget.extend( /** @lends openerp.web.Da
},
cls: 'DataGroup'
});
-openerp.web.ContainerDataGroup = openerp.web.DataGroup.extend( /** @lends openerp.web.ContainerDataGroup# */ {
+instance.web.ContainerDataGroup = instance.web.DataGroup.extend( /** @lends instance.web.ContainerDataGroup# */ {
/**
*
- * @constructs openerp.web.ContainerDataGroup
- * @extends openerp.web.DataGroup
+ * @constructs instance.web.ContainerDataGroup
+ * @extends instance.web.DataGroup
*
* @param session
* @param model
@@ -146,7 +146,7 @@ openerp.web.ContainerDataGroup = openerp.web.DataGroup.extend( /** @lends opener
domain: this.domain,
fields: _.uniq(this.group_by.concat(fields)),
group_by_fields: this.group_by,
- sort: openerp.web.serialize_sort(this.sort)
+ sort: instance.web.serialize_sort(this.sort)
}, function () { }).then(function (response) {
var data_groups = _(response).map(
_.bind(self.transform_group, self));
@@ -186,7 +186,7 @@ openerp.web.ContainerDataGroup = openerp.web.DataGroup.extend( /** @lends opener
ifGroups(_(group_records).map(function (group) {
var child_context = _.extend({}, self.context, group.__context);
return _.extend(
- new openerp.web.DataGroup(
+ new instance.web.DataGroup(
self, self.model, group.__domain,
child_context, child_context.group_by,
self.level + 1),
@@ -195,11 +195,11 @@ openerp.web.ContainerDataGroup = openerp.web.DataGroup.extend( /** @lends opener
});
}
});
-openerp.web.GrouplessDataGroup = openerp.web.DataGroup.extend( /** @lends openerp.web.GrouplessDataGroup# */ {
+instance.web.GrouplessDataGroup = instance.web.DataGroup.extend( /** @lends instance.web.GrouplessDataGroup# */ {
/**
*
- * @constructs openerp.web.GrouplessDataGroup
- * @extends openerp.web.DataGroup
+ * @constructs instance.web.GrouplessDataGroup
+ * @extends instance.web.DataGroup
*
* @param session
* @param model
@@ -212,17 +212,17 @@ openerp.web.GrouplessDataGroup = openerp.web.DataGroup.extend( /** @lends opener
},
list: function (fields, ifGroups, ifRecords) {
ifRecords(_.extend(
- new openerp.web.DataSetSearch(this, this.model),
+ new instance.web.DataSetSearch(this, this.model),
{domain: this.domain, context: this.context, _sort: this.sort}));
}
});
-openerp.web.StaticDataGroup = openerp.web.GrouplessDataGroup.extend( /** @lends openerp.web.StaticDataGroup# */ {
+instance.web.StaticDataGroup = instance.web.GrouplessDataGroup.extend( /** @lends instance.web.StaticDataGroup# */ {
/**
* A specialization of groupless data groups, relying on a single static
* dataset as its records provider.
*
- * @constructs openerp.web.StaticDataGroup
- * @extends openerp.web.GrouplessDataGroup
+ * @constructs instance.web.StaticDataGroup
+ * @extends instance.web.GrouplessDataGroup
* @param {openep.web.DataSetStatic} dataset a static dataset backing the groups
*/
init: function (dataset) {
@@ -233,13 +233,13 @@ openerp.web.StaticDataGroup = openerp.web.GrouplessDataGroup.extend( /** @lends
}
});
-openerp.web.DataSet = openerp.web.OldWidget.extend( /** @lends openerp.web.DataSet# */{
+instance.web.DataSet = instance.web.OldWidget.extend( /** @lends instance.web.DataSet# */{
/**
* DateaManagement interface between views and the collection of selected
* OpenERP records (represents the view's state?)
*
- * @constructs openerp.web.DataSet
- * @extends openerp.web.OldWidget
+ * @constructs instance.web.DataSet
+ * @extends instance.web.OldWidget
*
* @param {String} model the OpenERP model this dataset will manage
*/
@@ -494,7 +494,7 @@ openerp.web.DataSet = openerp.web.OldWidget.extend( /** @lends openerp.web.Data
},
get_context: function(request_context) {
if (request_context) {
- return new openerp.web.CompoundContext(this.context, request_context);
+ return new instance.web.CompoundContext(this.context, request_context);
}
return this.context;
},
@@ -513,7 +513,7 @@ openerp.web.DataSet = openerp.web.OldWidget.extend( /** @lends openerp.web.Data
*/
sort: function (field, force_reverse) {
if (!field) {
- return openerp.web.serialize_sort(this._sort);
+ return instance.web.serialize_sort(this._sort);
}
var reverse = force_reverse || (this._sort[0] === field);
this._sort.splice.apply(
@@ -530,7 +530,7 @@ openerp.web.DataSet = openerp.web.OldWidget.extend( /** @lends openerp.web.Data
this.ids = n_ids;
},
});
-openerp.web.DataSetStatic = openerp.web.DataSet.extend({
+instance.web.DataSetStatic = instance.web.DataSet.extend({
init: function(parent, model, context, ids) {
this._super(parent, model, context);
// all local records
@@ -560,10 +560,10 @@ openerp.web.DataSetStatic = openerp.web.DataSet.extend({
this.set_ids(_.without.apply(null, [this.ids].concat(ids)));
}
});
-openerp.web.DataSetSearch = openerp.web.DataSet.extend(/** @lends openerp.web.DataSetSearch */{
+instance.web.DataSetSearch = instance.web.DataSet.extend(/** @lends instance.web.DataSetSearch */{
/**
- * @constructs openerp.web.DataSetSearch
- * @extends openerp.web.DataSet
+ * @constructs instance.web.DataSetSearch
+ * @extends instance.web.DataSet
*
* @param {Object} parent
* @param {String} model
@@ -612,7 +612,7 @@ openerp.web.DataSetSearch = openerp.web.DataSet.extend(/** @lends openerp.web.D
},
get_domain: function (other_domain) {
if (other_domain) {
- return new openerp.web.CompoundDomain(this.domain, other_domain);
+ return new instance.web.CompoundDomain(this.domain, other_domain);
}
return this.domain;
},
@@ -635,7 +635,7 @@ openerp.web.DataSetSearch = openerp.web.DataSet.extend(/** @lends openerp.web.D
return this._super();
}
});
-openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({
+instance.web.BufferedDataSet = instance.web.DataSetStatic.extend({
virtual_id_prefix: "one2many_v_id_",
debug_mode: true,
init: function() {
@@ -800,9 +800,9 @@ openerp.web.BufferedDataSet = openerp.web.DataSetStatic.extend({
this.on_change();
},
});
-openerp.web.BufferedDataSet.virtual_id_regex = /^one2many_v_id_.*$/;
+instance.web.BufferedDataSet.virtual_id_regex = /^one2many_v_id_.*$/;
-openerp.web.ProxyDataSet = openerp.web.DataSetSearch.extend({
+instance.web.ProxyDataSet = instance.web.DataSetSearch.extend({
init: function() {
this._super.apply(this, arguments);
this.create_function = null;
@@ -848,13 +848,13 @@ openerp.web.ProxyDataSet = openerp.web.DataSetSearch.extend({
on_unlink: function(ids) {}
});
-openerp.web.Model = openerp.web.CallbackEnabled.extend({
+instance.web.Model = instance.web.CallbackEnabled.extend({
init: function(model_name) {
this._super();
this.model_name = model_name;
},
rpc: function() {
- var c = openerp.connection;
+ var c = instance.connection;
return c.rpc.apply(c, arguments);
},
/*
@@ -876,7 +876,7 @@ openerp.web.Model = openerp.web.CallbackEnabled.extend({
}
});
-openerp.web.CompoundContext = openerp.web.Class.extend({
+instance.web.CompoundContext = instance.web.Class.extend({
init: function () {
this.__ref = "compound_context";
this.__contexts = [];
@@ -899,7 +899,7 @@ openerp.web.CompoundContext = openerp.web.Class.extend({
}
});
-openerp.web.CompoundDomain = openerp.web.Class.extend({
+instance.web.CompoundDomain = instance.web.Class.extend({
init: function () {
this.__ref = "compound_domain";
this.__domains = [];
diff --git a/addons/web/static/src/js/data_export.js b/addons/web/static/src/js/data_export.js
index 3d15a4e3607..ebe82ddb4b4 100644
--- a/addons/web/static/src/js/data_export.js
+++ b/addons/web/static/src/js/data_export.js
@@ -1,14 +1,14 @@
-openerp.web.data_export = function(openerp) {
-var QWeb = openerp.web.qweb,
- _t = openerp.web._t;
-openerp.web.DataExport = openerp.web.Dialog.extend({
+openerp.web.data_export = function(instance) {
+var QWeb = instance.web.qweb,
+ _t = instance.web._t;
+instance.web.DataExport = instance.web.Dialog.extend({
template: 'ExportTreeView',
dialog_title: {toString: function () { return _t("Export Data"); }},
init: function(parent, dataset) {
this._super(parent);
this.records = {};
this.dataset = dataset;
- this.exports = new openerp.web.DataSetSearch(
+ this.exports = new instance.web.DataSetSearch(
this, 'ir.exports', this.dataset.get_context());
},
start: function() {
diff --git a/addons/web/static/src/js/data_import.js b/addons/web/static/src/js/data_import.js
index 3054a7784c4..30f9323f723 100644
--- a/addons/web/static/src/js/data_import.js
+++ b/addons/web/static/src/js/data_import.js
@@ -1,6 +1,6 @@
-openerp.web.data_import = function(openerp) {
-var QWeb = openerp.web.qweb,
- _t = openerp.web._t;
+openerp.web.data_import = function(instance) {
+var QWeb = instance.web.qweb,
+ _t = instance.web._t;
/**
* Safari does not deal well at all with raw JSON data being returned. As a
* result, we're going to cheat by using a pseudo-jsonp: instead of getting
@@ -29,7 +29,7 @@ function jsonp(form, attributes, callback) {
$(form).ajaxSubmit(attributes);
}
-openerp.web.DataImport = openerp.web.Dialog.extend({
+instance.web.DataImport = instance.web.Dialog.extend({
template: 'ImportDataView',
dialog_title: {toString: function () { return _t("Import Data"); }},
init: function(parent, dataset){
@@ -79,10 +79,10 @@ openerp.web.DataImport = openerp.web.Dialog.extend({
this.$element.delegate('fieldset legend', 'click', function() {
$(this).parent().toggleClass('oe-closed');
});
- this.ready.push(new openerp.web.DataSet(this, this.model).call(
+ this.ready.push(new instance.web.DataSet(this, this.model).call(
'fields_get', [], function (fields) {
self.graft_fields(fields);
- self.ready.push(new openerp.web.DataSet(self, self.model)
+ self.ready.push(new instance.web.DataSet(self, self.model)
.default_get(_.pluck(self.fields, 'id')).then(function (fields) {
_.each(fields, function(val, key) {
if (val) {
@@ -140,7 +140,7 @@ openerp.web.DataImport = openerp.web.Dialog.extend({
f.fields = [];
// only fetch sub-fields to a depth of 2 levels
if (level < 2) {
- self.ready.push(new openerp.web.DataSet(self, field.relation).call(
+ self.ready.push(new instance.web.DataSet(self, field.relation).call(
'fields_get', [], function (fields) {
self.graft_fields(fields, f, level+1);
}));
@@ -151,7 +151,7 @@ openerp.web.DataImport = openerp.web.Dialog.extend({
});
},
toggle_import_button: function (newstate) {
- openerp.web.dialog(this.$element, 'widget')
+ instance.web.dialog(this.$element, 'widget')
.find('.oe-dialog-import-button')
.button('option', 'disabled', !newstate);
},
diff --git a/addons/web/static/src/js/dates.js b/addons/web/static/src/js/dates.js
index d61223113f8..3db48c8412a 100644
--- a/addons/web/static/src/js/dates.js
+++ b/addons/web/static/src/js/dates.js
@@ -1,5 +1,5 @@
-openerp.web.dates = function(openerp) {
+openerp.web.dates = function(instance) {
/**
* Converts a string to a Date javascript object using OpenERP's
@@ -11,7 +11,7 @@ openerp.web.dates = function(openerp) {
* @param {String} str A string representing a datetime.
* @returns {Date}
*/
-openerp.web.str_to_datetime = function(str) {
+instance.web.str_to_datetime = function(str) {
if(!str) {
return str;
}
@@ -38,7 +38,7 @@ openerp.web.str_to_datetime = function(str) {
* @param {String} str A string representing a date.
* @returns {Date}
*/
-openerp.web.str_to_date = function(str) {
+instance.web.str_to_date = function(str) {
if(!str) {
return str;
}
@@ -65,7 +65,7 @@ openerp.web.str_to_date = function(str) {
* @param {String} str A string representing a time.
* @returns {Date}
*/
-openerp.web.str_to_time = function(str) {
+instance.web.str_to_time = function(str) {
if(!str) {
return str;
}
@@ -104,7 +104,7 @@ var zpad = function(str, size) {
* @param {Date} obj
* @returns {String} A string representing a datetime.
*/
-openerp.web.datetime_to_str = function(obj) {
+instance.web.datetime_to_str = function(obj) {
if (!obj) {
return false;
}
@@ -124,7 +124,7 @@ openerp.web.datetime_to_str = function(obj) {
* @param {Date} obj
* @returns {String} A string representing a date.
*/
-openerp.web.date_to_str = function(obj) {
+instance.web.date_to_str = function(obj) {
if (!obj) {
return false;
}
@@ -143,7 +143,7 @@ openerp.web.date_to_str = function(obj) {
* @param {Date} obj
* @returns {String} A string representing a time.
*/
-openerp.web.time_to_str = function(obj) {
+instance.web.time_to_str = function(obj) {
if (!obj) {
return false;
}
diff --git a/addons/web/static/src/js/formats.js b/addons/web/static/src/js/formats.js
index 53863e63e97..107a923b625 100644
--- a/addons/web/static/src/js/formats.js
+++ b/addons/web/static/src/js/formats.js
@@ -1,6 +1,6 @@
-openerp.web.formats = function(openerp) {
-var _t = openerp.web._t;
+openerp.web.formats = function(instance) {
+var _t = instance.web._t;
/**
* Intersperses ``separator`` in ``str`` at the positions indicated by
@@ -23,7 +23,7 @@ var _t = openerp.web._t;
* @param {String} separator
* @returns {String}
*/
-openerp.web.intersperse = function (str, indices, separator) {
+instance.web.intersperse = function (str, indices, separator) {
separator = separator || '';
var result = [], last = str.length;
@@ -55,10 +55,10 @@ openerp.web.intersperse = function (str, indices, separator) {
* @param {String} num
* @returns {String}
*/
-openerp.web.insert_thousand_seps = function (num) {
+instance.web.insert_thousand_seps = function (num) {
var negative = num[0] === '-';
num = (negative ? num.slice(1) : num);
- return (negative ? '-' : '') + openerp.web.intersperse(
+ return (negative ? '-' : '') + instance.web.intersperse(
num, _t.database.parameters.grouping, _t.database.parameters.thousands_sep);
};
@@ -69,7 +69,7 @@ openerp.web.insert_thousand_seps = function (num) {
*
* @param {String} value original format
*/
-openerp.web.strip_raw_chars = function (value) {
+instance.web.strip_raw_chars = function (value) {
var isletter = /[a-zA-Z]/, output = [];
for(var index=0; index < value.length; ++index) {
var character = value[index];
@@ -81,7 +81,7 @@ openerp.web.strip_raw_chars = function (value) {
return output.join('');
};
var normalize_format = function (format) {
- return Date.normalizeFormat(openerp.web.strip_raw_chars(format));
+ return Date.normalizeFormat(instance.web.strip_raw_chars(format));
};
/**
* Formats a single atomic value based on a field descriptor
@@ -93,7 +93,7 @@ var normalize_format = function (format) {
* @param {Object} [descriptor.digits] used for the formatting of floats
* @param {String} [value_if_empty=''] returned if the ``value`` argument is considered empty
*/
-openerp.web.format_value = function (value, descriptor, value_if_empty) {
+instance.web.format_value = function (value, descriptor, value_if_empty) {
// If NaN value, display as with a `false` (empty cell)
if (typeof value === 'number' && isNaN(value)) {
value = false;
@@ -115,12 +115,12 @@ openerp.web.format_value = function (value, descriptor, value_if_empty) {
case 'id':
return value.toString();
case 'integer':
- return openerp.web.insert_thousand_seps(
+ return instance.web.insert_thousand_seps(
_.str.sprintf('%d', value));
case 'float':
var precision = descriptor.digits ? descriptor.digits[1] : 2;
var formatted = _.str.sprintf('%.' + precision + 'f', value).split('.');
- formatted[0] = openerp.web.insert_thousand_seps(formatted[0]);
+ formatted[0] = instance.web.insert_thousand_seps(formatted[0]);
return formatted.join(l10n.decimal_point);
case 'float_time':
var pattern = '%02d:%02d';
@@ -136,17 +136,17 @@ openerp.web.format_value = function (value, descriptor, value_if_empty) {
return value[1];
case 'datetime':
if (typeof(value) == "string")
- value = openerp.web.auto_str_to_date(value);
+ value = instance.web.auto_str_to_date(value);
return value.toString(normalize_format(l10n.date_format)
+ ' ' + normalize_format(l10n.time_format));
case 'date':
if (typeof(value) == "string")
- value = openerp.web.auto_str_to_date(value);
+ value = instance.web.auto_str_to_date(value);
return value.toString(normalize_format(l10n.date_format));
case 'time':
if (typeof(value) == "string")
- value = openerp.web.auto_str_to_date(value);
+ value = instance.web.auto_str_to_date(value);
return value.toString(normalize_format(l10n.time_format));
case 'selection': case 'statusbar':
// Each choice is [value, label]
@@ -163,7 +163,7 @@ openerp.web.format_value = function (value, descriptor, value_if_empty) {
}
};
-openerp.web.parse_value = function (value, descriptor, value_if_empty) {
+instance.web.parse_value = function (value, descriptor, value_if_empty) {
var date_pattern = normalize_format(_t.database.parameters.date_format),
time_pattern = normalize_format(_t.database.parameters.time_format);
switch (value) {
@@ -176,7 +176,7 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) {
var tmp;
do {
tmp = value;
- value = value.replace(openerp.web._t.database.parameters.thousands_sep, "");
+ value = value.replace(instance.web._t.database.parameters.thousands_sep, "");
} while(tmp !== value);
tmp = Number(value);
if (isNaN(tmp))
@@ -190,9 +190,9 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) {
var tmp2 = value;
do {
tmp = tmp2;
- tmp2 = tmp.replace(openerp.web._t.database.parameters.thousands_sep, "");
+ tmp2 = tmp.replace(instance.web._t.database.parameters.thousands_sep, "");
} while(tmp !== tmp2);
- var reformatted_value = tmp.replace(openerp.web._t.database.parameters.decimal_point, ".");
+ var reformatted_value = tmp.replace(instance.web._t.database.parameters.decimal_point, ".");
var parsed = Number(reformatted_value);
if (isNaN(parsed))
throw new Error(value + " is not a correct float");
@@ -205,62 +205,62 @@ openerp.web.parse_value = function (value, descriptor, value_if_empty) {
}
var float_time_pair = value.split(":");
if (float_time_pair.length != 2)
- return factor * openerp.web.parse_value(value, {type: "float"});
- var hours = openerp.web.parse_value(float_time_pair[0], {type: "integer"});
- var minutes = openerp.web.parse_value(float_time_pair[1], {type: "integer"});
+ return factor * instance.web.parse_value(value, {type: "float"});
+ var hours = instance.web.parse_value(float_time_pair[0], {type: "integer"});
+ var minutes = instance.web.parse_value(float_time_pair[1], {type: "integer"});
return factor * (hours + (minutes / 60));
case 'progressbar':
- return openerp.web.parse_value(value, {type: "float"});
+ return instance.web.parse_value(value, {type: "float"});
case 'datetime':
var datetime = Date.parseExact(
value, (date_pattern + ' ' + time_pattern));
if (datetime !== null)
- return openerp.web.datetime_to_str(datetime);
+ return instance.web.datetime_to_str(datetime);
datetime = Date.parse(value);
if (datetime !== null)
- return openerp.web.datetime_to_str(datetime);
+ return instance.web.datetime_to_str(datetime);
throw new Error(value + " is not a valid datetime");
case 'date':
var date = Date.parseExact(value, date_pattern);
if (date !== null)
- return openerp.web.date_to_str(date);
+ return instance.web.date_to_str(date);
date = Date.parse(value);
if (date !== null)
- return openerp.web.date_to_str(date);
+ return instance.web.date_to_str(date);
throw new Error(value + " is not a valid date");
case 'time':
var time = Date.parseExact(value, time_pattern);
if (time !== null)
- return openerp.web.time_to_str(time);
+ return instance.web.time_to_str(time);
time = Date.parse(value);
if (time !== null)
- return openerp.web.time_to_str(time);
+ return instance.web.time_to_str(time);
throw new Error(value + " is not a valid time");
}
return value;
};
-openerp.web.auto_str_to_date = function(value, type) {
+instance.web.auto_str_to_date = function(value, type) {
try {
- return openerp.web.str_to_datetime(value);
+ return instance.web.str_to_datetime(value);
} catch(e) {}
try {
- return openerp.web.str_to_date(value);
+ return instance.web.str_to_date(value);
} catch(e) {}
try {
- return openerp.web.str_to_time(value);
+ return instance.web.str_to_time(value);
} catch(e) {}
throw new Error("'" + value + "' is not a valid date, datetime nor time");
};
-openerp.web.auto_date_to_str = function(value, type) {
+instance.web.auto_date_to_str = function(value, type) {
switch(type) {
case 'datetime':
- return openerp.web.datetime_to_str(value);
+ return instance.web.datetime_to_str(value);
case 'date':
- return openerp.web.date_to_str(value);
+ return instance.web.date_to_str(value);
case 'time':
- return openerp.web.time_to_str(value);
+ return instance.web.time_to_str(value);
default:
throw new Error(type + " is not convertible to date, datetime nor time");
}
@@ -290,7 +290,7 @@ openerp.web.auto_date_to_str = function(value, type) {
* @param {Number} [options.id] current record's id
*
*/
-openerp.web.format_cell = function (row_data, column, options) {
+instance.web.format_cell = function (row_data, column, options) {
options = options || {};
var attrs = {};
if (options.process_modifiers !== false) {
@@ -303,9 +303,9 @@ openerp.web.format_cell = function (row_data, column, options) {
'<img src="<%-prefix%>/web/static/src/img/icons/<%-icon%>.png" alt="<%-alt%>"/>' +
'</button>', {
title: column.string || '',
- additional_attributes: isNaN(row_data["id"].value) && openerp.web.BufferedDataSet.virtual_id_regex.test(row_data["id"].value) ?
+ additional_attributes: isNaN(row_data["id"].value) && instance.web.BufferedDataSet.virtual_id_regex.test(row_data["id"].value) ?
'disabled="disabled" class="oe-listview-button-disabled"' : '',
- prefix: openerp.connection.prefix,
+ prefix: instance.connection.prefix,
icon: column.icon,
alt: column.string || ''
});
@@ -320,11 +320,11 @@ openerp.web.format_cell = function (row_data, column, options) {
row_data[column.id].value ? 'checked="checked"' : '');
case "binary":
var text = _t("Download"),
- download_url = _.str.sprintf('/web/binary/saveas?session_id=%s&model=%s&field=%s&id=%d', openerp.connection.session_id, options.model, column.id, options.id);
+ download_url = _.str.sprintf('/web/binary/saveas?session_id=%s&model=%s&field=%s&id=%d', instance.connection.session_id, options.model, column.id, options.id);
if (column.filename) {
download_url += '&filename_field=' + column.filename;
if (row_data[column.filename]) {
- text = _.str.sprintf(_t("Download \"%s\""), openerp.web.format_value(
+ text = _.str.sprintf(_t("Download \"%s\""), instance.web.format_value(
row_data[column.filename].value, {type: 'char'}));
}
}
@@ -340,7 +340,7 @@ openerp.web.format_cell = function (row_data, column, options) {
});
}
- return _.escape(openerp.web.format_value(
+ return _.escape(instance.web.format_value(
row_data[column.id].value, column, options.value_if_empty));
}
diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js
index 6e1026b48a1..18ac6b78de5 100644
--- a/addons/web/static/src/js/search.js
+++ b/addons/web/static/src/js/search.js
@@ -1,7 +1,7 @@
-openerp.web.search = function(openerp) {
-var QWeb = openerp.web.qweb,
- _t = openerp.web._t,
- _lt = openerp.web._lt;
+openerp.web.search = function(instance) {
+var QWeb = instance.web.qweb,
+ _t = instance.web._t,
+ _lt = instance.web._lt;
_.mixin({
sum: function (obj) { return _.reduce(obj, function (a, b) { return a + b; }, 0); }
});
@@ -70,11 +70,11 @@ _.extend(VS.model.SearchFacet.prototype, {
}
});
-openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.SearchView# */{
+instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.SearchView# */{
template: "SearchView",
/**
- * @constructs openerp.web.SearchView
- * @extends openerp.web.OldWidget
+ * @constructs instance.web.SearchView
+ * @extends instance.web.OldWidget
*
* @param parent
* @param element_id
@@ -178,7 +178,7 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
var running_count = 0;
// get total filters count
- var is_group = function (i) { return i instanceof openerp.web.search.FilterGroup; };
+ var is_group = function (i) { return i instanceof instance.web.search.FilterGroup; };
var filters_count = _(this.controls).chain()
.flatten()
.filter(is_group)
@@ -212,12 +212,12 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
name: _t("Custom Filters"),
filters: _.map(this.custom_filters, function (filter) {
// FIXME: handling of ``disabled`` being set
- var f = new openerp.web.search.Filter({attrs: {
+ var f = new instance.web.search.Filter({attrs: {
string: filter.name,
context: filter.context,
domain: filter.domain
}}, self);
- return new openerp.web.search.FilterGroup([f], self);
+ return new instance.web.search.FilterGroup([f], self);
}),
length: 3
});
@@ -225,7 +225,7 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
return $.when(
this.render_column(col1, $('<div>').appendTo($filters)),
this.render_column(col2, $('<div>').appendTo($filters)),
- (new openerp.web.search.Advanced(this).appendTo($drawer)));
+ (new instance.web.search.Advanced(this).appendTo($drawer)));
},
render_column: function (column, $el) {
return $.when.apply(null, _(column).map(function (group) {
@@ -314,10 +314,10 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
* @param {VS.model.SearchFacet} options.model facet object to render
*/
make_visualsearch_facet: function (options) {
- return new openerp.web.search.FilterGroupFacet(options);
+ return new instance.web.search.FilterGroupFacet(options);
-// if (options.model.get('field') instanceof openerp.web.search.FilterGroup) {
-// return new openerp.web.search.FilterGroupFacet(options);
+// if (options.model.get('field') instanceof instance.web.search.FilterGroup) {
+// return new instance.web.search.FilterGroupFacet(options);
// }
// return new VS.ui.SearchFacet(options);
},
@@ -363,7 +363,7 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
var filters = [];
_.each(items, function (item) {
if (filters.length && item.tag !== 'filter') {
- group.push(new openerp.web.search.FilterGroup(filters, this));
+ group.push(new instance.web.search.FilterGroup(filters, this));
filters = [];
}
@@ -371,7 +371,7 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
case 'separator': case 'newline':
break;
case 'filter':
- filters.push(new openerp.web.search.Filter(item, this));
+ filters.push(new instance.web.search.Filter(item, this));
break;
case 'group':
self.make_widgets(item.children, fields, item.attrs.string);
@@ -385,7 +385,7 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
}, this);
if (filters.length) {
- group.push(new openerp.web.search.FilterGroup(filters, this));
+ group.push(new instance.web.search.FilterGroup(filters, this));
}
},
/**
@@ -394,10 +394,10 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
*
* @param {Object} item fields_view_get node for the field
* @param {Object} field fields_get result for the field
- * @returns openerp.web.search.Field
+ * @returns instance.web.search.Field
*/
make_field: function (item, field) {
- var obj = openerp.web.search.fields.get_any( [item.attrs.widget, field.type]);
+ var obj = instance.web.search.fields.get_any( [item.attrs.widget, field.type]);
if(obj) {
return new (obj) (item, field, this);
} else {
@@ -460,11 +460,11 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
break;
case 'save_filter':
var data = this.build_search_data();
- var context = new openerp.web.CompoundContext();
+ var context = new instance.web.CompoundContext();
_.each(data.contexts, function(x) {
context.add(x);
});
- var domain = new openerp.web.CompoundDomain();
+ var domain = new instance.web.CompoundDomain();
_.each(data.domains, function(x) {
domain.add(x);
});
@@ -472,7 +472,7 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
context.add({"group_by": groupbys});
var dial_html = QWeb.render("SearchView.managed-filters.add");
var $dial = $(dial_html);
- openerp.web.dialog($dial, {
+ instance.web.dialog($dial, {
modal: true,
title: _t("Filter Entry"),
buttons: [
@@ -525,13 +525,13 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
on_add_to_dashboard: function() {
this.$element.find(".oe_search-view-filters-management")[0].selectedIndex = 0;
var self = this,
- menu = openerp.webclient.menu,
+ menu = instance.webclient.menu,
$dialog = $(QWeb.render("SearchView.add_to_dashboard", {
dashboards : menu.data.data.children,
selected_menu_id : menu.$element.find('a.active').data('menu')
}));
$dialog.find('input').val(this.fields_view.name);
- openerp.web.dialog($dialog, {
+ instance.web.dialog($dialog, {
modal: true,
title: _t("Add to Dashboard"),
buttons: [
@@ -543,8 +543,8 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
var menu_id = $(this).find("select").val(),
title = $(this).find("input").val(),
data = self.build_search_data(),
- context = new openerp.web.CompoundContext(),
- domain = new openerp.web.CompoundDomain();
+ context = new instance.web.CompoundContext(),
+ domain = new instance.web.CompoundDomain();
_.each(data.contexts, function(x) {
context.add(x);
});
@@ -573,10 +573,10 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
* Performs the search view collection of widget data.
*
* If the collection went well (all fields are valid), then triggers
- * :js:func:`openerp.web.SearchView.on_search`.
+ * :js:func:`instance.web.SearchView.on_search`.
*
* If at least one field failed its validation, triggers
- * :js:func:`openerp.web.SearchView.on_invalid` instead.
+ * :js:func:`instance.web.SearchView.on_invalid` instead.
*
* @param e jQuery event object coming from the "Search" button
*/
@@ -599,7 +599,7 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
groupbys.push.apply(groupbys, group_by);
}
} catch (e) {
- if (e instanceof openerp.web.search.Invalid) {
+ if (e instanceof instance.web.search.Invalid) {
errors.push(e);
} else {
throw e;
@@ -648,9 +648,9 @@ openerp.web.SearchView = openerp.web.Widget.extend(/** @lends openerp.web.Search
});
/** @namespace */
-openerp.web.search = {};
+instance.web.search = {};
-openerp.web.search.FilterGroupFacet = VS.ui.SearchFacet.extend({
+instance.web.search.FilterGroupFacet = VS.ui.SearchFacet.extend({
events: _.extend({
'click': 'selectFacet'
}, VS.ui.SearchFacet.prototype.events),
@@ -682,30 +682,30 @@ openerp.web.search.FilterGroupFacet = VS.ui.SearchFacet.extend({
}
});
/**
- * Registry of search fields, called by :js:class:`openerp.web.SearchView` to
+ * Registry of search fields, called by :js:class:`instance.web.SearchView` to
* find and instantiate its field widgets.
*/
-openerp.web.search.fields = new openerp.web.Registry({
- 'char': 'openerp.web.search.CharField',
- 'text': 'openerp.web.search.CharField',
- 'boolean': 'openerp.web.search.BooleanField',
- 'integer': 'openerp.web.search.IntegerField',
- 'id': 'openerp.web.search.IntegerField',
- 'float': 'openerp.web.search.FloatField',
- 'selection': 'openerp.web.search.SelectionField',
- 'datetime': 'openerp.web.search.DateTimeField',
- 'date': 'openerp.web.search.DateField',
- 'many2one': 'openerp.web.search.ManyToOneField',
- 'many2many': 'openerp.web.search.CharField',
- 'one2many': 'openerp.web.search.CharField'
+instance.web.search.fields = new instance.web.Registry({
+ 'char': 'instance.web.search.CharField',
+ 'text': 'instance.web.search.CharField',
+ 'boolean': 'instance.web.search.BooleanField',
+ 'integer': 'instance.web.search.IntegerField',
+ 'id': 'instance.web.search.IntegerField',
+ 'float': 'instance.web.search.FloatField',
+ 'selection': 'instance.web.search.SelectionField',
+ 'datetime': 'instance.web.search.DateTimeField',
+ 'date': 'instance.web.search.DateField',
+ 'many2one': 'instance.web.search.ManyToOneField',
+ 'many2many': 'instance.web.search.CharField',
+ 'one2many': 'instance.web.search.CharField'
});
-openerp.web.search.Invalid = openerp.web.Class.extend( /** @lends openerp.web.search.Invalid# */{
+instance.web.search.Invalid = instance.web.Class.extend( /** @lends instance.web.search.Invalid# */{
/**
* Exception thrown by search widgets when they hold invalid values,
* which they can not return when asked.
*
- * @constructs openerp.web.search.Invalid
- * @extends openerp.web.Class
+ * @constructs instance.web.search.Invalid
+ * @extends instance.web.Class
*
* @param field the name of the field holding an invalid value
* @param value the invalid value
@@ -723,13 +723,13 @@ openerp.web.search.Invalid = openerp.web.Class.extend( /** @lends openerp.web.se
);
}
});
-openerp.web.search.Widget = openerp.web.OldWidget.extend( /** @lends openerp.web.search.Widget# */{
+instance.web.search.Widget = instance.web.OldWidget.extend( /** @lends instance.web.search.Widget# */{
template: null,
/**
* Root class of all search widgets
*
- * @constructs openerp.web.search.Widget
- * @extends openerp.web.OldWidget
+ * @constructs instance.web.search.Widget
+ * @extends instance.web.OldWidget
*
* @param view the ancestor view of this widget
*/
@@ -738,14 +738,14 @@ openerp.web.search.Widget = openerp.web.OldWidget.extend( /** @lends openerp.web
this.view = view;
}
});
-openerp.web.search.add_expand_listener = function($root) {
+instance.web.search.add_expand_listener = function($root) {
$root.find('a.searchview_group_string').click(function (e) {
$root.toggleClass('folded expanded');
e.stopPropagation();
e.preventDefault();
});
};
-openerp.web.search.Group = openerp.web.search.Widget.extend({
+instance.web.search.Group = instance.web.search.Widget.extend({
template: 'SearchView.group',
init: function (view_section, view, fields) {
this._super(view);
@@ -755,10 +755,10 @@ openerp.web.search.Group = openerp.web.search.Widget.extend({
}
});
-openerp.web.search.Input = openerp.web.search.Widget.extend( /** @lends openerp.web.search.Input# */{
+instance.web.search.Input = instance.web.search.Widget.extend( /** @lends instance.web.search.Input# */{
/**
- * @constructs openerp.web.search.Input
- * @extends openerp.web.search.Widget
+ * @constructs instance.web.search.Input
+ * @extends instance.web.search.Widget
*
* @param view
*/
@@ -784,7 +784,7 @@ openerp.web.search.Input = openerp.web.search.Widget.extend( /** @lends openerp.
* they apply to this widget, or null if they don't.
*
* This default implementation will try calling
- * :js:func:`openerp.web.search.Input#facet_for` if the widget's name
+ * :js:func:`instance.web.search.Input#facet_for` if the widget's name
* matches the input key
*
* @param {Object} defaults
@@ -820,17 +820,17 @@ openerp.web.search.Input = openerp.web.search.Widget.extend( /** @lends openerp.
this.attrs = attrs;
}
});
-openerp.web.search.FilterGroup = openerp.web.search.Input.extend(/** @lends openerp.web.search.FilterGroup# */{
+instance.web.search.FilterGroup = instance.web.search.Input.extend(/** @lends instance.web.search.FilterGroup# */{
template: 'SearchView.filters',
/**
* Inclusive group of filters, creates a continuous "button" with clickable
* sections (the normal display for filters is to be a self-contained button)
*
- * @constructs openerp.web.search.FilterGroup
- * @extends openerp.web.search.Input
+ * @constructs instance.web.search.FilterGroup
+ * @extends instance.web.search.Input
*
- * @param {Array<openerp.web.search.Filter>} filters elements of the group
- * @param {openerp.web.SearchView} view view in which the filters are contained
+ * @param {Array<instance.web.search.Filter>} filters elements of the group
+ * @param {instance.web.SearchView} view view in which the filters are contained
*/
init: function (filters, view) {
this._super(view);
@@ -868,7 +868,7 @@ openerp.web.search.FilterGroup = openerp.web.search.Input.extend(/** @lends open
if (!contexts.length) { return; }
if (contexts.length === 1) { return contexts[0]; }
- return _.extend(new openerp.web.CompoundContext, {
+ return _.extend(new instance.web.CompoundContext, {
__contexts: contexts
});
},
@@ -901,7 +901,7 @@ openerp.web.search.FilterGroup = openerp.web.search.Input.extend(/** @lends open
for (var i=domains.length; --i;) {
domains.unshift(['|']);
}
- return _.extend(new openerp.web.CompoundDomain(), {
+ return _.extend(new instance.web.CompoundDomain(), {
__domains: domains
});
},
@@ -945,7 +945,7 @@ openerp.web.search.FilterGroup = openerp.web.search.Input.extend(/** @lends open
});
}
});
-openerp.web.search.Filter = openerp.web.search.Input.extend(/** @lends openerp.web.search.Filter# */{
+instance.web.search.Filter = instance.web.search.Input.extend(/** @lends instance.web.search.Filter# */{
template: 'SearchView.filter',
/**
* Implementation of the OpenERP filters (button with a context and/or
@@ -955,8 +955,8 @@ openerp.web.search.Filter = openerp.web.search.Input.extend(/** @lends openerp.w
* domains and contexts, converting between facets and filters) is
* performed by the filter group.
*
- * @constructs openerp.web.search.Filter
- * @extends openerp.web.search.Input
+ * @constructs instance.web.search.Filter
+ * @extends instance.web.search.Input
*
* @param node
* @param view
@@ -969,12 +969,12 @@ openerp.web.search.Filter = openerp.web.search.Input.extend(/** @lends openerp.w
get_context: function () { },
get_domain: function () { },
});
-openerp.web.search.Field = openerp.web.search.Input.extend( /** @lends openerp.web.search.Field# */ {
+instance.web.search.Field = instance.web.search.Input.extend( /** @lends instance.web.search.Field# */ {
template: 'SearchView.field',
default_operator: '=',
/**
- * @constructs openerp.web.search.Field
- * @extends openerp.web.search.Input
+ * @constructs instance.web.search.Field
+ * @extends instance.web.search.Input
*
* @param view_section
* @param field
@@ -1005,7 +1005,7 @@ openerp.web.search.Field = openerp.web.search.Input.extend( /** @lends openerp.w
if (!(has_value && context)) {
return;
}
- return new openerp.web.CompoundContext(context)
+ return new instance.web.CompoundContext(context)
.set_eval_context({self: val});
},
get_groupby: function () { },
@@ -1036,7 +1036,7 @@ openerp.web.search.Field = openerp.web.search.Input.extend( /** @lends openerp.w
this.attrs.operator || this.default_operator,
facet);
}
- return new openerp.web.CompoundDomain(domain)
+ return new instance.web.CompoundDomain(domain)
.set_eval_context({self: val});
}
});
@@ -1048,9 +1048,9 @@ openerp.web.search.Field = openerp.web.search.Input.extend( /** @lends openerp.w
* * The Javascript and the HTML values are identical (strings)
*
* @class
- * @extends openerp.web.search.Field
+ * @extends instance.web.search.Field
*/
-openerp.web.search.CharField = openerp.web.search.Field.extend( /** @lends openerp.web.search.CharField# */ {
+instance.web.search.CharField = instance.web.search.Field.extend( /** @lends instance.web.search.CharField# */ {
default_operator: 'ilike',
complete: function (value) {
if (_.isEmpty(value)) { return $.when(null); }
@@ -1066,7 +1066,7 @@ openerp.web.search.CharField = openerp.web.search.Field.extend( /** @lends opene
}]);
}
});
-openerp.web.search.NumberField = openerp.web.search.Field.extend(/** @lends openerp.web.search.NumberField# */{
+instance.web.search.NumberField = instance.web.search.Field.extend(/** @lends instance.web.search.NumberField# */{
get_value: function () {
if (!this.$element.val()) {
return null;
@@ -1075,7 +1075,7 @@ openerp.web.search.NumberField = openerp.web.search.Field.extend(/** @lends open
check = Number(this.$element.val());
if (isNaN(val) || val !== check) {
this.$element.addClass('error');
- throw new openerp.web.search.Invalid(
+ throw new instance.web.search.Invalid(
this.attrs.name, this.$element.val(), this.error_message);
}
this.$element.removeClass('error');
@@ -1084,13 +1084,13 @@ openerp.web.search.NumberField = openerp.web.search.Field.extend(/** @lends open
});
/**
* @class
- * @extends openerp.web.search.NumberField
+ * @extends instance.web.search.NumberField
*/
-openerp.web.search.IntegerField = openerp.web.search.NumberField.extend(/** @lends openerp.web.search.IntegerField# */{
+instance.web.search.IntegerField = instance.web.search.NumberField.extend(/** @lends instance.web.search.IntegerField# */{
error_message: _t("not a valid integer"),
parse: function (value) {
try {
- return openerp.web.parse_value(value, {'widget': 'integer'});
+ return instance.web.parse_value(value, {'widget': 'integer'});
} catch (e) {
return NaN;
}
@@ -1098,13 +1098,13 @@ openerp.web.search.IntegerField = openerp.web.search.NumberField.extend(/** @len
});
/**
* @class
- * @extends openerp.web.search.NumberField
+ * @extends instance.web.search.NumberField
*/
-openerp.web.search.FloatField = openerp.web.search.NumberField.extend(/** @lends openerp.web.search.FloatField# */{
+instance.web.search.FloatField = instance.web.search.NumberField.extend(/** @lends instance.web.search.FloatField# */{
error_message: _t("not a valid number"),
parse: function (value) {
try {
- return openerp.web.parse_value(value, {'widget': 'float'});
+ return instance.web.parse_value(value, {'widget': 'float'});
} catch (e) {
return NaN;
}
@@ -1112,9 +1112,9 @@ openerp.web.search.FloatField = openerp.web.search.NumberField.extend(/** @lends
});
/**
* @class
- * @extends openerp.web.search.Field
+ * @extends instance.web.search.Field
*/
-openerp.web.search.SelectionField = openerp.web.search.Field.extend(/** @lends openerp.web.search.SelectionField# */{
+instance.web.search.SelectionField = instance.web.search.Field.extend(/** @lends instance.web.search.SelectionField# */{
// This implementation is a basic <select> field, but it may have to be
// altered to be more in line with the GTK client, which uses a combo box
// (~ jquery.autocomplete):
@@ -1171,10 +1171,10 @@ openerp.web.search.SelectionField = openerp.web.search.Field.extend(/** @lends o
return facet.get('json');
}
});
-openerp.web.search.BooleanField = openerp.web.search.SelectionField.extend(/** @lends openerp.web.search.BooleanField# */{
+instance.web.search.BooleanField = instance.web.search.SelectionField.extend(/** @lends instance.web.search.BooleanField# */{
/**
- * @constructs openerp.web.search.BooleanField
- * @extends openerp.web.search.BooleanField
+ * @constructs instance.web.search.BooleanField
+ * @extends instance.web.search.BooleanField
*/
init: function () {
this._super.apply(this, arguments);
@@ -1193,16 +1193,16 @@ openerp.web.search.BooleanField = openerp.web.search.SelectionField.extend(/** @
});
/**
* @class
- * @extends openerp.web.search.DateField
+ * @extends instance.web.search.DateField
*/
-openerp.web.search.DateField = openerp.web.search.Field.extend(/** @lends openerp.web.search.DateField# */{
+instance.web.search.DateField = instance.web.search.Field.extend(/** @lends instance.web.search.DateField# */{
get_value: function (facet) {
- return openerp.web.date_to_str(facet.get('json'));
+ return instance.web.date_to_str(facet.get('json'));
},
complete: function (needle) {
var d = Date.parse(needle);
if (!d) { return $.when(null); }
- var value = openerp.web.format_value(d, this.attrs);
+ var value = instance.web.format_value(d, this.attrs);
var label = _.str.sprintf(_.str.escapeHTML(
_t("Search %(field)s at: %(value)s")), {
field: '<em>' + this.attrs.string + '</em>',
@@ -1225,17 +1225,17 @@ openerp.web.search.DateField = openerp.web.search.Field.extend(/** @lends opener
* spanning the whole day selected by the date widget
*
* @class
- * @extends openerp.web.DateField
+ * @extends instance.web.DateField
*/
-openerp.web.search.DateTimeField = openerp.web.search.DateField.extend(/** @lends openerp.web.search.DateTimeField# */{
+instance.web.search.DateTimeField = instance.web.search.DateField.extend(/** @lends instance.web.search.DateTimeField# */{
get_value: function (facet) {
- return openerp.web.datetime_to_str(facet.get('json'));
+ return instance.web.datetime_to_str(facet.get('json'));
}
});
-openerp.web.search.ManyToOneField = openerp.web.search.CharField.extend({
+instance.web.search.ManyToOneField = instance.web.search.CharField.extend({
init: function (view_section, field, view) {
this._super(view_section, field, view);
- this.model = new openerp.web.Model(this.attrs.relation);
+ this.model = new instance.web.Model(this.attrs.relation);
},
complete: function (needle) {
var self = this;
@@ -1289,7 +1289,7 @@ openerp.web.search.ManyToOneField = openerp.web.search.CharField.extend({
}
});
-openerp.web.search.Advanced = openerp.web.search.Input.extend({
+instance.web.search.Advanced = instance.web.search.Input.extend({
template: 'SearchView.advanced',
start: function () {
var self = this;
@@ -1314,7 +1314,7 @@ openerp.web.search.Advanced = openerp.web.search.Input.extend({
});
},
append_proposition: function () {
- return (new openerp.web.search.ExtendedSearchProposition(this, this.fields))
+ return (new instance.web.search.ExtendedSearchProposition(this, this.fields))
.appendTo(this.$element.find('ul'));
},
commit_search: function () {
@@ -1323,14 +1323,14 @@ openerp.web.search.Advanced = openerp.web.search.Input.extend({
var children = this.getChildren(),
domain = _.invoke(children, 'get_proposition');
var filters = _(domain).map(function (section) {
- return new openerp.web.search.Filter({attrs: {
+ return new instance.web.search.Filter({attrs: {
string: _.str.sprintf('%s(%s)%s',
section[0], section[1], section[2]),
domain: [section]
}}, self.view);
});
// Create Filter (& FilterGroup around it) with that domain
- var f = new openerp.web.search.FilterGroup(filters, this.view);
+ var f = new instance.web.search.FilterGroup(filters, this.view);
// add group to query
this.view.vs.searchQuery.add({
category: _t("Advanced"),
@@ -1349,11 +1349,11 @@ openerp.web.search.Advanced = openerp.web.search.Input.extend({
}
});
-openerp.web.search.ExtendedSearchProposition = openerp.web.OldWidget.extend(/** @lends openerp.web.search.ExtendedSearchProposition# */{
+instance.web.search.ExtendedSearchProposition = instance.web.OldWidget.extend(/** @lends instance.web.search.ExtendedSearchProposition# */{
template: 'SearchView.extended_search.proposition',
/**
- * @constructs openerp.web.search.ExtendedSearchProposition
- * @extends openerp.web.OldWidget
+ * @constructs instance.web.search.ExtendedSearchProposition
+ * @extends instance.web.OldWidget
*
* @param parent
* @param fields
@@ -1401,10 +1401,10 @@ openerp.web.search.ExtendedSearchProposition = openerp.web.OldWidget.extend(/**
}
var type = field.type;
- var obj = openerp.web.search.custom_filters.get_object(type);
+ var obj = instance.web.search.custom_filters.get_object(type);
if(obj === null) {
console.log('Unknow field type ' + e.key);
- obj = openerp.web.search.custom_filters.get_object("char");
+ obj = instance.web.search.custom_filters.get_object("char");
}
this.value = new (obj) (this);
if(this.value.set_field) {
@@ -1430,12 +1430,12 @@ openerp.web.search.ExtendedSearchProposition = openerp.web.OldWidget.extend(/**
}
});
-openerp.web.search.ExtendedSearchProposition.Field = openerp.web.OldWidget.extend({
+instance.web.search.ExtendedSearchProposition.Field = instance.web.OldWidget.extend({
start: function () {
this.$element = $("#" + this.element_id);
}
});
-openerp.web.search.ExtendedSearchProposition.Char = openerp.web.search.ExtendedSearchProposition.Field.extend({
+instance.web.search.ExtendedSearchProposition.Char = instance.web.search.ExtendedSearchProposition.Field.extend({
template: 'SearchView.extended_search.proposition.char',
operators: [
{value: "ilike", text: _lt("contains")},
@@ -1447,7 +1447,7 @@ openerp.web.search.ExtendedSearchProposition.Char = openerp.web.search.ExtendedS
return this.$element.val();
}
});
-openerp.web.search.ExtendedSearchProposition.DateTime = openerp.web.search.ExtendedSearchProposition.Field.extend({
+instance.web.search.ExtendedSearchProposition.DateTime = instance.web.search.ExtendedSearchProposition.Field.extend({
template: 'SearchView.extended_search.proposition.empty',
operators: [
{value: "=", text: _lt("is equal to")},
@@ -1462,11 +1462,11 @@ openerp.web.search.ExtendedSearchProposition.DateTime = openerp.web.search.Exten
},
start: function() {
this._super();
- this.datewidget = new openerp.web.DateTimeWidget(this);
+ this.datewidget = new instance.web.DateTimeWidget(this);
this.datewidget.prependTo(this.$element);
}
});
-openerp.web.search.ExtendedSearchProposition.Date = openerp.web.search.ExtendedSearchProposition.Field.extend({
+instance.web.search.ExtendedSearchProposition.Date = instance.web.search.ExtendedSearchProposition.Field.extend({
template: 'SearchView.extended_search.proposition.empty',
operators: [
{value: "=", text: _lt("is equal to")},
@@ -1481,11 +1481,11 @@ openerp.web.search.ExtendedSearchProposition.Date = openerp.web.search.ExtendedS
},
start: function() {
this._super();
- this.datewidget = new openerp.web.DateWidget(this);
+ this.datewidget = new instance.web.DateWidget(this);
this.datewidget.prependTo(this.$element);
}
});
-openerp.web.search.ExtendedSearchProposition.Integer = openerp.web.search.ExtendedSearchProposition.Field.extend({
+instance.web.search.ExtendedSearchProposition.Integer = instance.web.search.ExtendedSearchProposition.Field.extend({
template: 'SearchView.extended_search.proposition.integer',
operators: [
{value: "=", text: _lt("is equal to")},
@@ -1497,16 +1497,16 @@ openerp.web.search.ExtendedSearchProposition.Integer = openerp.web.search.Extend
],
get_value: function() {
try {
- return openerp.web.parse_value(this.$element.val(), {'widget': 'integer'});
+ return instance.web.parse_value(this.$element.val(), {'widget': 'integer'});
} catch (e) {
return "";
}
}
});
-openerp.web.search.ExtendedSearchProposition.Id = openerp.web.search.ExtendedSearchProposition.Integer.extend({
+instance.web.search.ExtendedSearchProposition.Id = instance.web.search.ExtendedSearchProposition.Integer.extend({
operators: [{value: "=", text: _lt("is")}]
});
-openerp.web.search.ExtendedSearchProposition.Float = openerp.web.search.ExtendedSearchProposition.Field.extend({
+instance.web.search.ExtendedSearchProposition.Float = instance.web.search.ExtendedSearchProposition.Field.extend({
template: 'SearchView.extended_search.proposition.float',
operators: [
{value: "=", text: _lt("is equal to")},
@@ -1518,13 +1518,13 @@ openerp.web.search.ExtendedSearchProposition.Float = openerp.web.search.Extended
],
get_value: function() {
try {
- return openerp.web.parse_value(this.$element.val(), {'widget': 'float'});
+ return instance.web.parse_value(this.$element.val(), {'widget': 'float'});
} catch (e) {
return "";
}
}
});
-openerp.web.search.ExtendedSearchProposition.Selection = openerp.web.search.ExtendedSearchProposition.Field.extend({
+instance.web.search.ExtendedSearchProposition.Selection = instance.web.search.ExtendedSearchProposition.Field.extend({
template: 'SearchView.extended_search.proposition.selection',
operators: [
{value: "=", text: _lt("is")},
@@ -1537,7 +1537,7 @@ openerp.web.search.ExtendedSearchProposition.Selection = openerp.web.search.Exte
return this.$element.val();
}
});
-openerp.web.search.ExtendedSearchProposition.Boolean = openerp.web.search.ExtendedSearchProposition.Field.extend({
+instance.web.search.ExtendedSearchProposition.Boolean = instance.web.search.ExtendedSearchProposition.Field.extend({
template: 'SearchView.extended_search.proposition.boolean',
operators: [
{value: "=", text: _lt("is true")},
@@ -1548,21 +1548,21 @@ openerp.web.search.ExtendedSearchProposition.Boolean = openerp.web.search.Extend
}
});
-openerp.web.search.custom_filters = new openerp.web.Registry({
- 'char': 'openerp.web.search.ExtendedSearchProposition.Char',
- 'text': 'openerp.web.search.ExtendedSearchProposition.Char',
- 'one2many': 'openerp.web.search.ExtendedSearchProposition.Char',
- 'many2one': 'openerp.web.search.ExtendedSearchProposition.Char',
- 'many2many': 'openerp.web.search.ExtendedSearchProposition.Char',
+instance.web.search.custom_filters = new instance.web.Registry({
+ 'char': 'instance.web.search.ExtendedSearchProposition.Char',
+ 'text': 'instance.web.search.ExtendedSearchProposition.Char',
+ 'one2many': 'instance.web.search.ExtendedSearchProposition.Char',
+ 'many2one': 'instance.web.search.ExtendedSearchProposition.Char',
+ 'many2many': 'instance.web.search.ExtendedSearchProposition.Char',
- 'datetime': 'openerp.web.search.ExtendedSearchProposition.DateTime',
- 'date': 'openerp.web.search.ExtendedSearchProposition.Date',
- 'integer': 'openerp.web.search.ExtendedSearchProposition.Integer',
- 'float': 'openerp.web.search.ExtendedSearchProposition.Float',
- 'boolean': 'openerp.web.search.ExtendedSearchProposition.Boolean',
- 'selection': 'openerp.web.search.ExtendedSearchProposition.Selection',
+ 'datetime': 'instance.web.search.ExtendedSearchProposition.DateTime',
+ 'date': 'instance.web.search.ExtendedSearchProposition.Date',
+ 'integer': 'instance.web.search.ExtendedSearchProposition.Integer',
+ 'float': 'instance.web.search.ExtendedSearchProposition.Float',
+ 'boolean': 'instance.web.search.ExtendedSearchProposition.Boolean',
+ 'selection': 'instance.web.search.ExtendedSearchProposition.Selection',
- 'id': 'openerp.web.search.ExtendedSearchProposition.Id'
+ 'id': 'instance.web.search.ExtendedSearchProposition.Id'
});
};
diff --git a/addons/web/static/src/js/view_editor.js b/addons/web/static/src/js/view_editor.js
index ae531c8c925..6a14c0ef7f9 100644
--- a/addons/web/static/src/js/view_editor.js
+++ b/addons/web/static/src/js/view_editor.js
@@ -1,15 +1,15 @@
-openerp.web.view_editor = function(openerp) {
-var _t = openerp.web._t;
-var QWeb = openerp.web.qweb;
-openerp.web.ViewEditor = openerp.web.OldWidget.extend({
+openerp.web.view_editor = function(instance) {
+var _t = instance.web._t;
+var QWeb = instance.web.qweb;
+instance.web.ViewEditor = instance.web.OldWidget.extend({
init: function(parent, element_id, dataset, view, options) {
this._super(parent);
this.element_id = element_id;
this.parent = parent;
- this.dataset = new openerp.web.DataSetSearch(this, 'ir.ui.view', null, null),
+ this.dataset = new instance.web.DataSetSearch(this, 'ir.ui.view', null, null),
this.model = dataset.model;
this.xml_element_id = 0;
- this.property = openerp.web.ViewEditor.property_widget;
+ this.property = instance.web.ViewEditor.property_widget;
this.one_object = false;
},
start: function() {
@@ -39,7 +39,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
select_view_id: self.parent.fields_view.view_id
}
};
- this.view_edit_dialog = new openerp.web.Dialog(this, {
+ this.view_edit_dialog = new instance.web.Dialog(this, {
title: action_title,
width: 850,
buttons: [
@@ -51,7 +51,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
}).open();
this.view_edit_dialog.on_close.add_last(function(){window.location.reload();});
this.main_view_id = this.parent.fields_view.view_id;
- this.action_manager = new openerp.web.ActionManager(this);
+ this.action_manager = new instance.web.ActionManager(this);
this.action_manager.appendTo(this.view_edit_dialog);
$.when(this.action_manager.do_action(action)).then(function() {
var viewmanager = self.action_manager.inner_viewmanager,
@@ -67,7 +67,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
},
on_create_view: function() {
var self = this;
- this.create_view_dialog = new openerp.web.Dialog(this, {
+ this.create_view_dialog = new instance.web.Dialog(this, {
title: _.str.sprintf(_t("Create a view (%s)"), self.model),
buttons: [
{text: _t("Save"), click: function () {
@@ -115,8 +115,8 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
},
do_save_view: function(values) {
def = $.Deferred();
- var field_dataset = new openerp.web.DataSetSearch(this, this.model, null, null);
- var model_dataset = new openerp.web.DataSetSearch(this, 'ir.model', null, null);
+ var field_dataset = new instance.web.DataSetSearch(this, this.model, null, null);
+ var model_dataset = new instance.web.DataSetSearch(this, 'ir.model', null, null);
var view_string = "", field_name = false, self = this;
field_dataset.call( 'fields_get', [], function(fields) {
_.each(['name', 'x_name'], function(value) {
@@ -360,7 +360,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
edit_view: function(one_object) {
var self = this;
this.one_object = one_object;
- this.edit_xml_dialog = new openerp.web.Dialog(this, {
+ this.edit_xml_dialog = new instance.web.Dialog(this, {
title: _.str.sprintf(_t("View Editor %d - %s"), self.main_view_id, self.model),
height: '90%',
buttons: [
@@ -392,7 +392,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
action_buttons: false
}
};
- var action_manager = new openerp.web.ActionManager(self);
+ var action_manager = new instance.web.ActionManager(self);
action_manager.do_action(action);
}},
{text: _t("Close"), click: function(){
@@ -517,7 +517,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
var self = this;
var tr = self.get_object_by_id(this.one_object.clicked_tr_id, this.one_object['main_object'], [])[0].att_list[0];
var parent_tr = ($(side).prevAll("tr[level=" + String(this.one_object.clicked_tr_level - 1) + "]"))[0];
- var field_dataset = new openerp.web.DataSetSearch(this, this.model, null, null);
+ var field_dataset = new instance.web.DataSetSearch(this, this.model, null, null);
parent_tr = $(parent_tr).find('a').text();
field_dataset.call( 'fields_get', [], function(result) {
var fields = _.keys(result);
@@ -811,7 +811,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
},
on_edit_node: function(properties){
var self = this;
- this.edit_node_dialog = new openerp.web.Dialog(this,{
+ this.edit_node_dialog = new instance.web.Dialog(this,{
title: _t("Properties"),
width: 450,
buttons: [
@@ -881,7 +881,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
this.edit_widget = [];
self.ready = $.when(self.on_groups(properties)).then(function () {
_PROPERTIES_ATTRIBUTES['groups']['selection'] = self.groups;
- var values = _.keys( openerp.web.form.widgets.map);
+ var values = _.keys( instance.web.form.widgets.map);
values.push('');
values.sort();
_PROPERTIES_ATTRIBUTES['widget']['selection'] = values;
@@ -909,8 +909,8 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
def.resolve();
}
var group_ids = [], group_names = {}, groups = [];
- var res_groups = new openerp.web.DataSetSearch(this,'res.groups', null, null),
- model_data = new openerp.web.DataSetSearch(self,'ir.model.data', null, null);
+ var res_groups = new instance.web.DataSetSearch(this,'res.groups', null, null),
+ model_data = new instance.web.DataSetSearch(self,'ir.model.data', null, null);
res_groups.read_slice([], {}).done(function (res_grp) {
_.each(res_grp, function (res) {
var key = res.id;
@@ -936,7 +936,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
{'name': 'field_value','selection': fields, 'value': false, 'string': '','type': 'selection'},
{'name': 'position','selection': ['After','Before','Inside'], 'value': false, 'string': 'Position','type': 'selection'}];
this.add_widget = [];
- this.add_node_dialog = new openerp.web.Dialog(this,{
+ this.add_node_dialog = new instance.web.Dialog(this,{
title: _t("Properties"),
width: 450,
buttons: [
@@ -981,7 +981,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
});
table_selector.find("td[id^=]").attr("width","100px");
self.add_node_dialog.$element.find('#new_field').click(function() {
- model_data = new openerp.web.DataSetSearch(self,'ir.model', null, null);
+ model_data = new instance.web.DataSetSearch(self,'ir.model', null, null);
model_data.read_slice([], {domain: [['model','=', self.model]]}).then(function(result) {
self.render_new_field(result[0].id);
});
@@ -999,7 +999,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
action_buttons: true
}
};
- var action_manager = new openerp.web.ActionManager(self);
+ var action_manager = new instance.web.ActionManager(self);
$.when(action_manager.do_action(action)).then(function() {
var controller = action_manager.dialog_viewmanager.views['form'].controller;
controller.on_button_cancel.add_last(function(){
@@ -1016,7 +1016,7 @@ openerp.web.ViewEditor = openerp.web.OldWidget.extend({
});
}
});
-openerp.web.ViewEditor.Field = openerp.web.Class.extend({
+instance.web.ViewEditor.Field = instance.web.Class.extend({
init: function(view, widget) {
this.$element = view.$element;
this.dirty = false;
@@ -1042,7 +1042,7 @@ openerp.web.ViewEditor.Field = openerp.web.Class.extend({
validate: function() {
this.is_invalid = false;
try {
- var value = openerp.web.parse_value(this.get_value(), this, '');
+ var value = instance.web.parse_value(this.get_value(), this, '');
this.is_invalid = this.required && value === '';
} catch(e) {
this.is_invalid = true;
@@ -1052,7 +1052,7 @@ openerp.web.ViewEditor.Field = openerp.web.Class.extend({
return _.str.sprintf("<td id = %s>%s</td>", this.name, QWeb.render(this.template, {widget: this}))
}
});
-openerp.web.ViewEditor.FieldBoolean = openerp.web.ViewEditor.Field.extend({
+instance.web.ViewEditor.FieldBoolean = instance.web.ViewEditor.Field.extend({
template : "vieweditor_boolean",
start: function() {
var self = this;
@@ -1070,7 +1070,7 @@ openerp.web.ViewEditor.FieldBoolean = openerp.web.ViewEditor.Field.extend({
return this.$element.find("input[id=" + this.name + "]").is(':checked')? "1" : null;
}
});
-openerp.web.ViewEditor.FieldChar = openerp.web.ViewEditor.Field.extend({
+instance.web.ViewEditor.FieldChar = instance.web.ViewEditor.Field.extend({
template : "vieweditor_char",
start: function () {
var self = this;
@@ -1086,7 +1086,7 @@ openerp.web.ViewEditor.FieldChar = openerp.web.ViewEditor.Field.extend({
return this.$element.find("input[id=" + this.name + "]").val();
}
});
-openerp.web.ViewEditor.FieldSelect = openerp.web.ViewEditor.Field.extend({
+instance.web.ViewEditor.FieldSelect = instance.web.ViewEditor.Field.extend({
template : "vieweditor_selection",
start: function () {
var self = this;
@@ -1116,7 +1116,7 @@ openerp.web.ViewEditor.FieldSelect = openerp.web.ViewEditor.Field.extend({
return this.$element.find("select[id=" + this.name + "]").val();
}
});
-openerp.web.ViewEditor.FieldSelectMulti = openerp.web.ViewEditor.FieldSelect.extend({
+instance.web.ViewEditor.FieldSelectMulti = instance.web.ViewEditor.FieldSelect.extend({
start: function () {
this._super();
this.$element.find("select[id=" + this.name + "]").css('height', '100px').attr("multiple", true);
@@ -1132,7 +1132,7 @@ openerp.web.ViewEditor.FieldSelectMulti = openerp.web.ViewEditor.FieldSelect.ext
});
}
});
-openerp.web.ViewEditor.FieldFloat = openerp.web.ViewEditor.FieldChar.extend({
+instance.web.ViewEditor.FieldFloat = instance.web.ViewEditor.FieldChar.extend({
});
var _PROPERTIES = {
@@ -1197,11 +1197,11 @@ var _ICONS = ['','STOCK_ABOUT', 'STOCK_ADD', 'STOCK_APPLY', 'STOCK_BOLD',
'terp-sale', 'terp-tools', 'terp-administration', 'terp-hr', 'terp-partner',
'terp-project', 'terp-report', 'terp-stock', 'terp-calendar', 'terp-graph'
];
-openerp.web.ViewEditor.property_widget = new openerp.web.Registry({
- 'boolean' : 'openerp.web.ViewEditor.FieldBoolean',
- 'selection_multi' : 'openerp.web.ViewEditor.FieldSelectMulti',
- 'selection' : 'openerp.web.ViewEditor.FieldSelect',
- 'char' : 'openerp.web.ViewEditor.FieldChar',
- 'float' : 'openerp.web.ViewEditor.FieldFloat'
+instance.web.ViewEditor.property_widget = new instance.web.Registry({
+ 'boolean' : 'instance.web.ViewEditor.FieldBoolean',
+ 'selection_multi' : 'instance.web.ViewEditor.FieldSelectMulti',
+ 'selection' : 'instance.web.ViewEditor.FieldSelect',
+ 'char' : 'instance.web.ViewEditor.FieldChar',
+ 'float' : 'instance.web.ViewEditor.FieldFloat'
});
};
diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js
index a3f0d82bb63..3f9ef8301fd 100644
--- a/addons/web/static/src/js/view_form.js
+++ b/addons/web/static/src/js/view_form.js
@@ -1,13 +1,13 @@
-openerp.web.form = function (openerp) {
-var _t = openerp.web._t,
- _lt = openerp.web._lt;
-var QWeb = openerp.web.qweb;
+openerp.web.form = function (instance) {
+var _t = instance.web._t,
+ _lt = instance.web._lt;
+var QWeb = instance.web.qweb;
/** @namespace */
-openerp.web.form = {};
+instance.web.form = {};
-openerp.web.views.add('form', 'openerp.web.FormView');
-openerp.web.FormView = openerp.web.View.extend({
+instance.web.views.add('form', 'instance.web.FormView');
+instance.web.FormView = instance.web.View.extend({
/**
* Indicates that this view is not searchable, and thus that no search
* view should be displayed (if there is one active).
@@ -17,17 +17,17 @@ openerp.web.FormView = openerp.web.View.extend({
display_name: _lt('Form'),
view_type: "form",
/**
- * @constructs openerp.web.FormView
- * @extends openerp.web.View
+ * @constructs instance.web.FormView
+ * @extends instance.web.View
*
- * @param {openerp.web.Session} session the current openerp session
- * @param {openerp.web.DataSet} dataset the dataset this view will work with
+ * @param {instance.web.Session} session the current openerp session
+ * @param {instance.web.DataSet} dataset the dataset this view will work with
* @param {String} view_id the identifier of the OpenERP view object
* @param {Object} options
* - sidebar : [true|false]
* - resize_textareas : [true|false|max_height]
*
- * @property {openerp.web.Registry} registry=openerp.web.form.widgets widgets registry for this form view instance
+ * @property {instance.web.Registry} registry=instance.web.form.widgets widgets registry for this form view instance
*/
init: function(parent, dataset, view_id, options) {
this._super(parent);
@@ -41,8 +41,8 @@ openerp.web.FormView = openerp.web.View.extend({
this.datarecord = {};
this.default_focus_field = null;
this.default_focus_button = null;
- this.fields_registry = openerp.web.form.widgets;
- this.tags_registry = openerp.web.form.tags;
+ this.fields_registry = instance.web.form.widgets;
+ this.tags_registry = instance.web.form.tags;
this.has_been_loaded = $.Deferred();
this.translatable_fields = [];
_.defaults(this.options, {
@@ -54,7 +54,7 @@ openerp.web.FormView = openerp.web.View.extend({
this.on_change_mutex = new $.Mutex();
this.reload_mutex = new $.Mutex();
this.mode = null;
- this.rendering_engine = new openerp.web.form.FormRenderingEngineReadonly(this);
+ this.rendering_engine = new instance.web.form.FormRenderingEngineReadonly(this);
this.qweb = null; // A QWeb instance will be created if the view is a QWeb template
},
destroy: function() {
@@ -110,9 +110,11 @@ openerp.web.FormView = openerp.web.View.extend({
});
if (!this.sidebar && this.options.sidebar) {
- this.sidebar = new openerp.web.Sidebar(this);
+ this.sidebar = new instance.web.Sidebar(this);
this.sidebar.appendTo(this.$sidebar);
- this.sidebar.add_toolbar(this.fields_view.toolbar);
+ if(this.fields_view.toolbar) {
+ this.sidebar.add_toolbar(this.fields_view.toolbar);
+ }
this.sidebar.add_items('other', [{
label: _t('Set Default'),
form: this,
@@ -131,7 +133,7 @@ openerp.web.FormView = openerp.web.View.extend({
var child = fvg.arch.children[i];
if (child.tag === "templates") {
this.qweb = new QWeb2.Engine();
- this.qweb.add_template(openerp.web.json_node_to_xml(child));
+ this.qweb.add_template(instance.web.json_node_to_xml(child));
if (!this.qweb.has_template('form')) {
throw new Error("No QWeb template found for form view");
}
@@ -144,20 +146,20 @@ openerp.web.FormView = openerp.web.View.extend({
get_fvg_from_qweb: function(record) {
var view = this.qweb.render('form', this.get_qweb_context(record));
var fvg = _.clone(this.fields_view);
- fvg.arch = openerp.web.xml_to_json(openerp.web.str_to_xml(view).firstChild);
+ fvg.arch = instance.web.xml_to_json(instance.web.str_to_xml(view).firstChild);
return fvg;
},
get_qweb_context: function(record) {
var self = this,
new_record = {};
- _.each(record, function(value, name) {
+ _.each(record, function(value_, name) {
var r = _.clone(self.fields_view.fields[name] || {});
- if ((r.type === 'date' || r.type === 'datetime') && value) {
- r.raw_value = openerp.web.auto_str_to_date(value);
+ if ((r.type === 'date' || r.type === 'datetime') && value_) {
+ r.raw_value = instance.web.auto_str_to_date(value_);
} else {
- r.raw_value = value;
+ r.raw_value = value_;
}
- r.value = openerp.web.format_value(value, r);
+ r.value = instance.web.format_value(value_, r);
new_record[name] = r;
});
return {
@@ -337,7 +339,7 @@ openerp.web.FormView = openerp.web.View.extend({
'None': function () {return null;},
'context': function (i) {
context_index = i;
- var ctx = new openerp.web.CompoundContext(self.dataset.get_context(), widget.build_context() ? widget.build_context() : {});
+ var ctx = new instance.web.CompoundContext(self.dataset.get_context(), widget.build_context() ? widget.build_context() : {});
return ctx;
}
};
@@ -355,8 +357,8 @@ openerp.web.FormView = openerp.web.View.extend({
}
// form field
if (self.fields[field]) {
- var value = self.fields[field].get_value();
- return value == null ? false : value;
+ var value_ = self.fields[field].get_value();
+ return value_ == null ? false : value_;
}
// parent field
var splitted = field.split('.');
@@ -419,17 +421,17 @@ openerp.web.FormView = openerp.web.View.extend({
}
if (widget.field['change_default']) {
- var fieldname = widget.name, value;
+ var fieldname = widget.name, value_;
if (response.value && (fieldname in response.value)) {
// Use value from onchange if onchange executed
- value = response.value[fieldname];
+ value_ = response.value[fieldname];
} else {
// otherwise get form value for field
- value = self.fields[fieldname].get_value();
+ value_ = self.fields[fieldname].get_value();
}
- var condition = fieldname + '=' + value;
+ var condition = fieldname + '=' + value_;
- if (value) {
+ if (value_) {
can_process_onchange = self.rpc({
url: '/web/dataset/call',
async: false
@@ -470,9 +472,9 @@ openerp.web.FormView = openerp.web.View.extend({
var field = this.fields[f];
// If field is not defined in the view, just ignore it
if (field) {
- var value = result.value[f];
- if (field.get_value() != value) {
- field.set_value(value);
+ var value_ = result.value[f];
+ if (field.get_value() != value_) {
+ field.set_value(value_);
field.dirty = true;
if (!_.contains(processed, field.name)) {
this.do_onchange(field, processed);
@@ -483,7 +485,7 @@ openerp.web.FormView = openerp.web.View.extend({
this.on_form_changed();
}
if (!_.isEmpty(result.warning)) {
- openerp.web.dialog($(QWeb.render("CrashManagerWarning", result.warning)), {
+ instance.web.dialog($(QWeb.render("CrashManagerWarning", result.warning)), {
modal: true,
buttons: [
{text: _t("Ok"), click: function() { $(this).dialog("close"); }}
@@ -703,7 +705,7 @@ openerp.web.FormView = openerp.web.View.extend({
if (this.sidebar) {
this.sidebar.do_attachement_update(this.dataset, this.datarecord.id);
}
- //openerp.log("The record has been created with id #" + this.datarecord.id);
+ //instance.log("The record has been created with id #" + this.datarecord.id);
this.reload();
return $.when(_.extend(r, {created: true})).then(success);
}
@@ -729,7 +731,7 @@ openerp.web.FormView = openerp.web.View.extend({
},
get_widgets: function() {
return _.filter(this.getChildren(), function(obj) {
- return obj instanceof openerp.web.form.Widget;
+ return obj instanceof instance.web.form.Widget;
});
},
get_fields_values: function(blacklist) {
@@ -737,10 +739,10 @@ openerp.web.FormView = openerp.web.View.extend({
var values = {};
var ids = this.get_selected_ids();
values["id"] = ids.length > 0 ? ids[0] : false;
- _.each(this.fields, function(value, key) {
+ _.each(this.fields, function(value_, key) {
if (_.include(blacklist, key))
return;
- var val = value.get_value();
+ var val = value_.get_value();
values[key] = val;
});
return values;
@@ -757,8 +759,8 @@ openerp.web.FormView = openerp.web.View.extend({
});
},
is_dirty: function() {
- return _.any(this.fields, function (value) {
- return value.is_dirty();
+ return _.any(this.fields, function (value_) {
+ return value_.is_dirty();
});
},
is_interactible_record: function() {
@@ -767,7 +769,7 @@ openerp.web.FormView = openerp.web.View.extend({
if (this.options.not_interactible_on_create)
return false;
} else if (typeof(id) === "string") {
- if(openerp.web.BufferedDataSet.virtual_id_regex.test(id))
+ if(instance.web.BufferedDataSet.virtual_id_regex.test(id))
return false;
}
return true;
@@ -779,10 +781,10 @@ openerp.web.FormView = openerp.web.View.extend({
var self = this;
var fields = _.chain(this.fields)
.map(function (field, name) {
- var value = field.get_value();
+ var value_ = field.get_value();
// ignore fields which are empty, invisible, readonly, o2m
// or m2m
- if (!value
+ if (!value_
|| field.get('invisible')
|| field.get("readonly")
|| field.field.type === 'one2many'
@@ -793,20 +795,20 @@ openerp.web.FormView = openerp.web.View.extend({
switch(field.field.type) {
case 'selection':
displayed = _(field.values).find(function (option) {
- return option[0] === value;
+ return option[0] === value_;
})[1];
break;
case 'many2one':
- displayed = field.value[1] || value;
+ displayed = value_;
break;
default:
- displayed = value;
+ displayed = value_;
}
return {
name: name,
string: field.node_atts.string,
- value: value,
+ value: value_,
displayed: displayed,
// convert undefined to false
change_default: !!field.field.change_default
@@ -819,7 +821,7 @@ openerp.web.FormView = openerp.web.View.extend({
.filter(function (field) { return field.change_default; })
.value();
- var d = new openerp.web.Dialog(this, {
+ var d = new instance.web.Dialog(this, {
title: _t("Set Default"),
args: {
fields: fields,
@@ -836,7 +838,7 @@ openerp.web.FormView = openerp.web.View.extend({
}
var condition = d.$element.find('#formview_default_conditions').val(),
all_users = d.$element.find('#formview_default_all').is(':checked');
- new openerp.web.DataSet(self, 'ir.values').call(
+ new instance.web.DataSet(self, 'ir.values').call(
'set_default', [
self.dataset.model,
field_to_set,
@@ -850,13 +852,26 @@ openerp.web.FormView = openerp.web.View.extend({
});
d.template = 'FormView.set_default';
d.open();
- }
+ },
+ register_field: function(field, name) {
+ this.fields[name] = field;
+ this.fields_order.push(name);
+ if (this.get_field(name).translate) {
+ this.translatable_fields.push(field);
+ }
+ },
+ get_field: function(field_name) {
+ return this.fields_view.fields[field_name];
+ },
+ is_create_mode: function() {
+ return !this.datarecord.id;
+ },
});
/**
* Interface to be implemented by rendering engines for the form view.
*/
-openerp.web.form.FormRenderingEngineInterface = {
+instance.web.form.FormRenderingEngineInterface = {
set_fields_view: function(fields_view) {},
set_fields_registry: function(fields_registry) {},
render_to: function($element) {},
@@ -867,7 +882,7 @@ openerp.web.form.FormRenderingEngineInterface = {
*
* It is necessary to set the view using set_view() before usage.
*/
-openerp.web.form.FormRenderingEngine = openerp.web.Class.extend({
+instance.web.form.FormRenderingEngine = instance.web.Class.extend({
init: function(view) {
this.view = view;
},
@@ -886,7 +901,7 @@ openerp.web.form.FormRenderingEngine = openerp.web.Class.extend({
// TODO: I know this will save the world and all the kitten for a moment,
// but one day, we will have to get rid of xml2json
- var xml = openerp.web.json_node_to_xml(this.fvg.arch);
+ var xml = instance.web.json_node_to_xml(this.fvg.arch);
this.$form = $('<div class="oe_form">' + xml + '</div>');
if (this.fvg.arch.attrs && this.fvg.arch.attrs['layout'] !== 'manual') {
this.$form.attr('layout', 'auto');
@@ -908,18 +923,19 @@ openerp.web.form.FormRenderingEngine = openerp.web.Class.extend({
if (!obj) {
throw new Error("Widget type '"+ key + "' is not implemented");
}
- var w = new (obj)(self.view, openerp.web.xml_to_json($elem[0]));
+ var w = new (obj)(self.view, instance.web.xml_to_json($elem[0]));
var $label = self.labels[$elem.attr("name")];
if ($label) {
w.set_input_id($label.attr("for"));
}
self.alter_field(w);
+ self.view.register_field(w, $elem.attr("name"));
w.replace($elem);
});
_.each(this.tags_to_init, function($elem) {
var tag_name = $elem[0].tagName.toLowerCase();
var obj = self.tags_registry.get_object(tag_name);
- var w = new (obj)(self.view, openerp.web.xml_to_json($elem[0]));
+ var w = new (obj)(self.view, instance.web.xml_to_json($elem[0]));
w.replace($elem);
})
// TODO: return a deferred
@@ -1178,18 +1194,18 @@ openerp.web.form.FormRenderingEngine = openerp.web.Class.extend({
var str_modifiers = $node.attr("modifiers") || "{}"
var modifiers = JSON.parse(str_modifiers);
if (modifiers.invisible !== undefined)
- new openerp.web.form.InvisibilityChanger(this.view, this.view, modifiers.invisible, $new_element);
+ new instance.web.form.InvisibilityChanger(this.view, this.view, modifiers.invisible, $new_element);
$new_element.addClass($node.attr("class") || "");
},
});
-openerp.web.form.FormRenderingEngineReadonly = openerp.web.form.FormRenderingEngine.extend({
+instance.web.form.FormRenderingEngineReadonly = instance.web.form.FormRenderingEngine.extend({
alter_field: function(field) {
field.set({"force_readonly": true});
},
});
-openerp.web.form.FormDialog = openerp.web.Dialog.extend({
+instance.web.form.FormDialog = instance.web.Dialog.extend({
init: function(parent, options, view_id, dataset) {
this._super(parent, options);
this.dataset = dataset;
@@ -1198,7 +1214,7 @@ openerp.web.form.FormDialog = openerp.web.Dialog.extend({
},
start: function() {
this._super();
- this.form = new openerp.web.FormView(this, this.dataset, this.view_id, {
+ this.form = new instance.web.FormView(this, this.dataset, this.view_id, {
sidebar: false,
pager: false
});
@@ -1220,7 +1236,7 @@ openerp.web.form.FormDialog = openerp.web.Dialog.extend({
}
});
-openerp.web.form.compute_domain = function(expr, fields) {
+instance.web.form.compute_domain = function(expr, fields) {
var stack = [];
for (var i = expr.length - 1; i >= 0; i--) {
var ex = expr[i];
@@ -1249,7 +1265,7 @@ openerp.web.form.compute_domain = function(expr, fields) {
_t("Unknown field %s in domain %s"),
ex[0], JSON.stringify(expr)));
}
- var field_value = field.get_value ? fields[ex[0]].get_value() : fields[ex[0]].value;
+ var field_value = field.get_value();
var op = ex[1];
var val = ex[2];
@@ -1296,13 +1312,13 @@ openerp.web.form.compute_domain = function(expr, fields) {
*
* Apply the result of the "invisible" domain to this.$element.
*/
-openerp.web.form.InvisibilityChangerMixin = {
+instance.web.form.InvisibilityChangerMixin = {
init: function(field_manager, invisible_domain) {
this._ic_field_manager = field_manager
this._ic_invisible_modifier = invisible_domain;
this._ic_field_manager.on("view_content_has_changed", this, function() {
var result = this._ic_invisible_modifier === undefined ? false :
- openerp.web.form.compute_domain(this._ic_invisible_modifier, this._ic_field_manager.fields);
+ instance.web.form.compute_domain(this._ic_invisible_modifier, this._ic_field_manager.fields);
this.set({"invisible": result});
});
this.set({invisible: this._ic_invisible_modifier === true});
@@ -1320,20 +1336,20 @@ openerp.web.form.InvisibilityChangerMixin = {
},
};
-openerp.web.form.InvisibilityChanger = openerp.web.Class.extend(_.extend({}, openerp.web.GetterSetterMixin, openerp.web.form.InvisibilityChangerMixin, {
+instance.web.form.InvisibilityChanger = instance.web.Class.extend(_.extend({}, instance.web.GetterSetterMixin, instance.web.form.InvisibilityChangerMixin, {
init: function(parent, field_manager, invisible_domain, $element) {
this.setParent(parent);
- openerp.web.GetterSetterMixin.init.call(this);
- openerp.web.form.InvisibilityChangerMixin.init.call(this, field_manager, invisible_domain);
+ instance.web.GetterSetterMixin.init.call(this);
+ instance.web.form.InvisibilityChangerMixin.init.call(this, field_manager, invisible_domain);
this.$element = $element;
this.start();
},
}));
-openerp.web.form.Widget = openerp.web.Widget.extend(_.extend({}, openerp.web.form.InvisibilityChangerMixin, {
+instance.web.form.Widget = instance.web.Widget.extend(_.extend({}, instance.web.form.InvisibilityChangerMixin, {
/**
- * @constructs openerp.web.form.Widget
- * @extends openerp.web.Widget
+ * @constructs instance.web.form.Widget
+ * @extends instance.web.Widget
*
* @param view
* @param node
@@ -1343,7 +1359,7 @@ openerp.web.form.Widget = openerp.web.Widget.extend(_.extend({}, openerp.web.for
this.view = view;
this.node = node;
this.modifiers = JSON.parse(this.node.attrs.modifiers || '{}');
- openerp.web.form.InvisibilityChangerMixin.init.call(this, view, this.modifiers.invisible);
+ instance.web.form.InvisibilityChangerMixin.init.call(this, view, this.modifiers.invisible);
this.view.on("view_content_has_changed", this, this.process_modifiers);
},
@@ -1353,14 +1369,14 @@ openerp.web.form.Widget = openerp.web.Widget.extend(_.extend({}, openerp.web.for
},
start: function() {
this._super();
- openerp.web.form.InvisibilityChangerMixin.start.call(this);
+ instance.web.form.InvisibilityChangerMixin.start.call(this);
},
destroy: function() {
$.fn.tipsy.clear();
this._super.apply(this, arguments);
},
process_modifiers: function() {
- var compute_domain = openerp.web.form.compute_domain;
+ var compute_domain = instance.web.form.compute_domain;
var to_set = {};
for (var a in this.modifiers) {
if (!_.include(["invisible"], a)) {
@@ -1385,7 +1401,7 @@ openerp.web.form.Widget = openerp.web.Widget.extend(_.extend({}, openerp.web.for
template = 'WidgetLabel.tooltip';
}
return QWeb.render(template, {
- debug: openerp.connection.debug,
+ debug: instance.connection.debug,
widget: widget
})},
gravity: $.fn.tipsy.autoBounds(50, 'nw'),
@@ -1412,7 +1428,7 @@ openerp.web.form.Widget = openerp.web.Widget.extend(_.extend({}, openerp.web.for
},
_build_eval_context: function(blacklist) {
var a_dataset = this.view.dataset;
- return new openerp.web.CompoundContext(a_dataset.get_context(), this._build_view_fields_values(blacklist));
+ return new instance.web.CompoundContext(a_dataset.get_context(), this._build_view_fields_values(blacklist));
},
/**
* Builds a new context usable for operations related to fields by merging
@@ -1427,7 +1443,7 @@ openerp.web.form.Widget = openerp.web.Widget.extend(_.extend({}, openerp.web.for
if (v_context.__ref || true) { //TODO: remove true
var fields_values = this._build_eval_context(blacklist);
- v_context = new openerp.web.CompoundContext(v_context).set_eval_context(fields_values);
+ v_context = new instance.web.CompoundContext(v_context).set_eval_context(fields_values);
}
return v_context;
},
@@ -1438,13 +1454,13 @@ openerp.web.form.Widget = openerp.web.Widget.extend(_.extend({}, openerp.web.for
var final_domain = n_domain !== null ? n_domain : f_domain;
if (!(final_domain instanceof Array) || true) { //TODO: remove true
var fields_values = this._build_eval_context();
- final_domain = new openerp.web.CompoundDomain(final_domain).set_eval_context(fields_values);
+ final_domain = new instance.web.CompoundDomain(final_domain).set_eval_context(fields_values);
}
return final_domain;
}
}));
-openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({
+instance.web.form.WidgetButton = instance.web.form.Widget.extend({
template: 'WidgetButton',
init: function(view, node) {
this._super(view, node);
@@ -1458,7 +1474,7 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({
start: function() {
this._super.apply(this, arguments);
this.$element.click(this.on_click);
- if (this.node.attrs.help || openerp.connection.debug) {
+ if (this.node.attrs.help || instance.connection.debug) {
this.do_attach_tooltip();
}
},
@@ -1476,7 +1492,7 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({
var exec_action = function() {
if (self.node.attrs.confirm) {
var def = $.Deferred();
- var dialog = openerp.web.dialog($('<div/>').text(self.node.attrs.confirm), {
+ var dialog = instance.web.dialog($('<div/>').text(self.node.attrs.confirm), {
title: _t('Confirm'),
modal: true,
buttons: [
@@ -1510,7 +1526,7 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({
var context = this.node.attrs.context;
if (context && context.__ref) {
- context = new openerp.web.CompoundContext(context);
+ context = new instance.web.CompoundContext(context);
context.set_eval_context(this._build_eval_context());
}
@@ -1541,8 +1557,19 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({
* - view_content_has_changed : when the values of the fields have changed. When
* this event is triggered all fields should reprocess their modifiers.
*/
-openerp.web.form.FieldManagerInterface = {
-
+instance.web.form.FieldManagerInterface = {
+ /**
+ * Must return the asked field as in fields_get.
+ */
+ get_field: function(field_name) {},
+ /**
+ * Called by the field when the translate button is clicked.
+ */
+ open_translate_dialog: function(field) {},
+ /**
+ * Returns true when the view is in create mode.
+ */
+ is_create_mode: function() {},
};
/**
@@ -1556,7 +1583,7 @@ openerp.web.form.FieldManagerInterface = {
* - ...
*
*/
-openerp.web.form.FieldInterface = {
+instance.web.form.FieldInterface = {
/**
* Constructor takes 2 arguments:
* - field_manager: Implements FieldManagerInterface
@@ -1579,7 +1606,7 @@ openerp.web.form.FieldInterface = {
* as well as any format commonly returned in a on_change. It must be able to autodetect those formats as
* no information is ever given to know which format is used.
*/
- set_value: function(value) {},
+ set_value: function(value_) {},
/**
* Get the current value of the widget.
*
@@ -1613,21 +1640,20 @@ openerp.web.form.FieldInterface = {
* the values of the "readonly" property and the "force_readonly" property on the field manager.
*
*/
-openerp.web.form.AbstractField = openerp.web.form.Widget.extend(/** @lends openerp.web.form.AbstractField# */{
+instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends instance.web.form.AbstractField# */{
/**
- * @constructs openerp.web.form.AbstractField
- * @extends openerp.web.form.Widget
+ * @constructs instance.web.form.AbstractField
+ * @extends instance.web.form.Widget
*
* @param field_manager
* @param node
*/
init: function(field_manager, node) {
this._super(field_manager, node);
+ this.field_manager = field_manager;
this.name = this.node.attrs.name;
- this.value = false;
- this.view.fields[this.name] = this;
- this.view.fields_order.push(this.name);
- this.field = this.view.fields_view.fields[this.name] || {};
+ this.set({'value': false});
+ this.field = this.field_manager.get_field(this.name);
this.set({required: this.modifiers['required'] === true});
this.invalid = this.dirty = false;
@@ -1640,16 +1666,22 @@ openerp.web.form.AbstractField = openerp.web.form.Widget.extend(/** @lends opene
this.on("change:readonly", this, test_effective_readonly);
this.on("change:force_readonly", this, test_effective_readonly);
_.bind(test_effective_readonly, this)();
+
+ this.on("change:value", this, function() {
+ if (this._field_is_started && ! this._inhibit_on_change)
+ this._on_ui_change();
+ });
},
start: function() {
this._super.apply(this, arguments);
+ // quick hack, will change later
+ this._field_is_started = true;
if (this.field.translate) {
- this.view.translatable_fields.push(this);
this.$element.addClass('oe_form_field_translatable');
this.$element.find('.oe_field_translate').click(this.on_translate);
}
- if (this.node.attrs.nolabel && openerp.connection.debug) {
- this.do_attach_tooltip(this, this.$label || this.$element);
+ if (instance.connection.debug) {
+ this.do_attach_tooltip(this, this.$element);
}
if (!this.disable_utility_classes) {
var set_required = function() {
@@ -1659,22 +1691,18 @@ openerp.web.form.AbstractField = openerp.web.form.Widget.extend(/** @lends opene
_.bind(set_required, this)();
}
},
- set_value: function(value) {
- this.value = value;
+ set_value: function(value_) {
+ this._inhibit_on_change = true;
+ this.set({'value': value_});
+ this._inhibit_on_change = false;
this.invalid = false;
this.update_dom();
- this.on_value_changed();
- },
- set_value_from_ui: function() {
- this.on_value_changed();
- },
- on_value_changed: function() {
},
on_translate: function() {
- this.view.open_translate_dialog(this);
+ this.field_manager.open_translate_dialog(this);
},
get_value: function() {
- return this.value;
+ return this.get('value');
},
is_valid: function() {
return !this.invalid;
@@ -1685,7 +1713,7 @@ openerp.web.form.AbstractField = openerp.web.form.Widget.extend(/** @lends opene
update_dom: function(show_invalid) {
this._super.apply(this, arguments);
if (this.field.translate) {
- this.$element.find('.oe_field_translate').toggle(!!this.view.datarecord.id);
+ this.$element.find('.oe_field_translate').toggle(!this.field_manager.is_create_mode());
}
if (!this.disable_utility_classes) {
if (show_invalid) {
@@ -1693,11 +1721,10 @@ openerp.web.form.AbstractField = openerp.web.form.Widget.extend(/** @lends opene
}
}
},
- on_ui_change: function() {
+ _on_ui_change: function() {
this.dirty = true;
this.validate();
if (this.is_valid()) {
- this.set_value_from_ui();
this.view.do_onchange(this);
this.view.on_form_changed(true);
this.view.do_notify_change();
@@ -1734,7 +1761,7 @@ openerp.web.form.AbstractField = openerp.web.form.Widget.extend(/** @lends opene
* A mixin to apply on any field that has to completely re-render when its readonly state
* switch.
*/
-openerp.web.form.ReinitializeFieldMixin = {
+instance.web.form.ReinitializeFieldMixin = {
/**
* Default implementation of start(), use it or call explicitly initialize_field().
*/
@@ -1767,21 +1794,24 @@ openerp.web.form.ReinitializeFieldMixin = {
render_value: function() {},
};
-openerp.web.form.FieldChar = openerp.web.form.AbstractField.extend(_.extend({}, openerp.web.form.ReinitializeFieldMixin, {
+instance.web.form.FieldChar = instance.web.form.AbstractField.extend(_.extend({}, instance.web.form.ReinitializeFieldMixin, {
template: 'FieldChar',
init: function (view, node) {
this._super(view, node);
this.password = this.node.attrs.password === 'True' || this.node.attrs.password === '1';
},
initialize_content: function() {
- this.$element.find('input').change(this.on_ui_change);
+ var self = this;
+ this.$element.find('input').change(function() {
+ self.set({'value': instance.web.parse_value(self.$element.find('input').val(), self)});
+ });
},
- set_value: function(value) {
- this._super.apply(this, arguments);
+ set_value: function(value_) {
+ this._super(value_);
this.render_value();
},
render_value: function() {
- var show_value = openerp.web.format_value(this.value, this, '');
+ var show_value = instance.web.format_value(this.get('value'), this, '');
if (!this.get("effective_readonly")) {
this.$element.find('input').val(show_value);
} else {
@@ -1791,16 +1821,12 @@ openerp.web.form.FieldChar = openerp.web.form.AbstractField.extend(_.extend({},
this.$element.text(show_value);
}
},
- set_value_from_ui: function() {
- this.value = openerp.web.parse_value(this.$element.find('input').val(), this);
- this._super();
- },
validate: function() {
this.invalid = false;
if (!this.get("effective_readonly")) {
try {
- var value = openerp.web.parse_value(this.$element.find('input').val(), this, '');
- this.invalid = this.get("required") && value === '';
+ var value_ = instance.web.parse_value(this.$element.find('input').val(), this, '');
+ this.invalid = this.get("required") && value_ === '';
} catch(e) {
this.invalid = true;
}
@@ -1811,11 +1837,11 @@ openerp.web.form.FieldChar = openerp.web.form.AbstractField.extend(_.extend({},
}
}));
-openerp.web.form.FieldID = openerp.web.form.FieldChar.extend({
+instance.web.form.FieldID = instance.web.form.FieldChar.extend({
});
-openerp.web.form.FieldEmail = openerp.web.form.FieldChar.extend({
+instance.web.form.FieldEmail = instance.web.form.FieldChar.extend({
template: 'FieldEmail',
initialize_content: function() {
this._super();
@@ -1826,20 +1852,20 @@ openerp.web.form.FieldEmail = openerp.web.form.FieldChar.extend({
this._super();
} else {
this.$element.find('a')
- .attr('href', 'mailto:' + this.value)
- .text(this.value);
+ .attr('href', 'mailto:' + this.get('value'))
+ .text(this.get('value'));
}
},
on_button_clicked: function() {
- if (!this.value || !this.is_valid()) {
+ if (!this.get('value') || !this.is_valid()) {
this.do_warn("E-mail error", "Can't send email to invalid e-mail address");
} else {
- location.href = 'mailto:' + this.value;
+ location.href = 'mailto:' + this.get('value');
}
}
});
-openerp.web.form.FieldUrl = openerp.web.form.FieldChar.extend({
+instance.web.form.FieldUrl = instance.web.form.FieldChar.extend({
template: 'FieldUrl',
initialize_content: function() {
this._super();
@@ -1849,19 +1875,19 @@ openerp.web.form.FieldUrl = openerp.web.form.FieldChar.extend({
if (!this.get("effective_readonly")) {
this._super();
} else {
- var tmp = this.value;
+ var tmp = this.get('value');
var s = /(\w+):(.+)/.exec(tmp);
if (!s) {
- tmp = "http://" + this.value;
+ tmp = "http://" + this.get('value');
}
this.$element.find('a').attr('href', tmp).text(tmp);
}
},
on_button_clicked: function() {
- if (!this.value) {
+ if (!this.get('value')) {
this.do_warn("Resource error", "This resource is empty");
} else {
- var url = $.trim(this.value);
+ var url = $.trim(this.get('value'));
if(/^www\./i.test(url))
url = 'http://'+url;
window.open(url);
@@ -1869,27 +1895,27 @@ openerp.web.form.FieldUrl = openerp.web.form.FieldChar.extend({
}
});
-openerp.web.form.FieldFloat = openerp.web.form.FieldChar.extend({
+instance.web.form.FieldFloat = instance.web.form.FieldChar.extend({
is_field_number: true,
init: function (view, node) {
this._super(view, node);
- this.value = 0;
+ this.set({'value': 0});
if (this.node.attrs.digits) {
this.digits = py.eval(node.attrs.digits);
} else {
this.digits = this.field.digits;
}
},
- set_value: function(value) {
- if (value === false || value === undefined) {
+ set_value: function(value_) {
+ if (value_ === false || value_ === undefined) {
// As in GTK client, floats default to 0
- value = 0;
+ value_ = 0;
}
- this._super.apply(this, [value]);
+ this._super.apply(this, [value_]);
}
});
-openerp.web.DateTimeWidget = openerp.web.OldWidget.extend({
+instance.web.DateTimeWidget = instance.web.OldWidget.extend({
template: "web.datetimepicker",
jqueryui_object: 'datetimepicker',
type_of_date: "datetime",
@@ -1911,32 +1937,32 @@ openerp.web.DateTimeWidget = openerp.web.OldWidget.extend({
});
this.$element.find('img.oe_datepicker_trigger').click(function() {
if (!self.get("effective_readonly") && !self.picker('widget').is(':visible')) {
- self.picker('setDate', self.value ? openerp.web.auto_str_to_date(self.value) : new Date());
+ self.picker('setDate', self.get('value') ? instance.web.auto_str_to_date(self.get('value')) : new Date());
self.$input_picker.show();
self.picker('show');
self.$input_picker.hide();
}
});
this.set_readonly(false);
- this.value = false;
+ this.set({'value': false});
},
picker: function() {
return $.fn[this.jqueryui_object].apply(this.$input_picker, arguments);
},
- on_picker_select: function(text, instance) {
+ on_picker_select: function(text, instance_) {
var date = this.picker('getDate');
this.$input.val(date ? this.format_client(date) : '').change();
},
- set_value: function(value) {
- this.value = value;
- this.$input.val(value ? this.format_client(value) : '');
+ set_value: function(value_) {
+ this.set({'value': value_});
+ this.$input.val(value_ ? this.format_client(value_) : '');
},
get_value: function() {
- return this.value;
+ return this.get('value');
},
- set_value_from_ui: function() {
- var value = this.$input.val() || false;
- this.value = this.parse_client(value);
+ set_value_from_ui_: function() {
+ var value_ = this.$input.val() || false;
+ this.set({'value': this.parse_client(value_)});
},
set_readonly: function(readonly) {
this.readonly = readonly;
@@ -1944,12 +1970,12 @@ openerp.web.DateTimeWidget = openerp.web.OldWidget.extend({
this.$element.find('img.oe_datepicker_trigger').toggleClass('oe_input_icon_disabled', readonly);
},
is_valid: function() {
- var value = this.$input.val();
- if (value === "") {
+ var value_ = this.$input.val();
+ if (value_ === "") {
return true;
} else {
try {
- this.parse_client(value);
+ this.parse_client(value_);
return true;
} catch(e) {
return false;
@@ -1957,27 +1983,27 @@ openerp.web.DateTimeWidget = openerp.web.OldWidget.extend({
}
},
parse_client: function(v) {
- return openerp.web.parse_value(v, {"widget": this.type_of_date});
+ return instance.web.parse_value(v, {"widget": this.type_of_date});
},
format_client: function(v) {
- return openerp.web.format_value(v, {"widget": this.type_of_date});
+ return instance.web.format_value(v, {"widget": this.type_of_date});
},
on_change: function() {
if (this.is_valid()) {
- this.set_value_from_ui();
+ this.set_value_from_ui_();
}
}
});
-openerp.web.DateWidget = openerp.web.DateTimeWidget.extend({
+instance.web.DateWidget = instance.web.DateTimeWidget.extend({
jqueryui_object: 'datepicker',
type_of_date: "date"
});
-openerp.web.form.FieldDatetime = openerp.web.form.AbstractField.extend(_.extend({}, openerp.web.form.ReinitializeFieldMixin, {
+instance.web.form.FieldDatetime = instance.web.form.AbstractField.extend(_.extend({}, instance.web.form.ReinitializeFieldMixin, {
template: "EmptyComponent",
build_widget: function() {
- return new openerp.web.DateTimeWidget(this);
+ return new instance.web.DateTimeWidget(this);
},
destroy_content: function() {
if (this.datewidget) {
@@ -1988,26 +2014,21 @@ openerp.web.form.FieldDatetime = openerp.web.form.AbstractField.extend(_.extend(
initialize_content: function() {
if (!this.get("effective_readonly")) {
this.datewidget = this.build_widget();
- this.datewidget.on_change.add_last(this.on_ui_change);
+ this.datewidget.on_change.add_last(_.bind(function() {
+ this.set({'value': this.datewidget.get_value()});
+ }, this));
this.datewidget.appendTo(this.$element);
}
},
- set_value: function(value) {
- this._super(value);
+ set_value: function(value_) {
+ this._super(value_);
this.render_value();
},
render_value: function() {
if (!this.get("effective_readonly")) {
- this.datewidget.set_value(this.value);
- } else {
- this.$element.text(openerp.web.format_value(this.value, this, ''));
- }
- },
- get_value: function() {
- if (!this.get("effective_readonly")) {
- return this.datewidget.get_value();
+ this.datewidget.set_value(this.get('value'));
} else {
- return this.value;
+ this.$element.text(instance.web.format_value(this.get('value'), this, ''));
}
},
validate: function() {
@@ -2021,27 +2042,30 @@ openerp.web.form.FieldDatetime = openerp.web.form.AbstractField.extend(_.extend(
}
}));
-openerp.web.form.FieldDate = openerp.web.form.FieldDatetime.extend({
+instance.web.form.FieldDate = instance.web.form.FieldDatetime.extend({
build_widget: function() {
- return new openerp.web.DateWidget(this);
+ return new instance.web.DateWidget(this);
}
});
-openerp.web.form.FieldText = openerp.web.form.AbstractField.extend(_.extend({}, openerp.web.form.ReinitializeFieldMixin, {
+instance.web.form.FieldText = instance.web.form.AbstractField.extend(_.extend({}, instance.web.form.ReinitializeFieldMixin, {
template: 'FieldText',
initialize_content: function() {
this.$textarea = undefined;
if (!this.get("effective_readonly")) {
- this.$textarea = this.$element.find('textarea').change(this.on_ui_change);
+ this.$textarea = this.$element.find('textarea');
+ this.$textarea.change(_.bind(function() {
+ this.set({'value': instance.web.parse_value(this.$textarea.val(), this)});
+ }, this));
this.resized = false;
}
},
- set_value: function(value) {
+ set_value: function(value_) {
this._super.apply(this, arguments);
this.render_value();
},
render_value: function() {
- var show_value = openerp.web.format_value(this.value, this, '');
+ var show_value = instance.web.format_value(this.get('value'), this, '');
if (!this.get("effective_readonly")) {
this.$textarea.val(show_value);
if (!this.resized && this.view.options.resize_textareas) {
@@ -2052,16 +2076,12 @@ openerp.web.form.FieldText = openerp.web.form.AbstractField.extend(_.extend({},
this.$element.text(show_value);
}
},
- set_value_from_ui: function() {
- this.value = openerp.web.parse_value(this.$textarea.val(), this);
- this._super();
- },
validate: function() {
this.invalid = false;
if (!this.get("effective_readonly")) {
try {
- var value = openerp.web.parse_value(this.$textarea.val(), this, '');
- this.invalid = this.get("required") && value === '';
+ var value_ = instance.web.parse_value(this.$textarea.val(), this, '');
+ this.invalid = this.get("required") && value_ === '';
} catch(e) {
this.invalid = true;
}
@@ -2095,56 +2115,54 @@ openerp.web.form.FieldText = openerp.web.form.AbstractField.extend(_.extend({},
}
}));
-openerp.web.form.FieldBoolean = openerp.web.form.AbstractField.extend({
+instance.web.form.FieldBoolean = instance.web.form.AbstractField.extend({
template: 'FieldBoolean',
start: function() {
this._super.apply(this, arguments);
this.$checkbox = $("input", this.$element);
- this.$element.click(this.on_ui_change);
+ this.$element.click(_.bind(function() {
+ this.set({'value': this.$checkbox.is(':checked')});
+ }, this));
var check_readonly = function() {
this.$checkbox.prop('disabled', this.get("effective_readonly"));
};
this.on("change:effective_readonly", this, check_readonly);
_.bind(check_readonly, this)();
},
- set_value: function(value) {
- this._super.apply(this, arguments);
- this.$checkbox[0].checked = value;
- },
- set_value_from_ui: function() {
- this.value = this.$checkbox.is(':checked');
+ set_value: function(value_) {
this._super.apply(this, arguments);
+ this.$checkbox[0].checked = value_;
},
focus: function($element) {
this._super($element || this.$checkbox);
}
});
-openerp.web.form.FieldProgressBar = openerp.web.form.AbstractField.extend({
+instance.web.form.FieldProgressBar = instance.web.form.AbstractField.extend({
template: 'FieldProgressBar',
start: function() {
this._super.apply(this, arguments);
this.$element.progressbar({
- value: this.value,
+ value: this.get('value'),
disabled: this.get("effective_readonly")
});
},
- set_value: function(value) {
+ set_value: function(value_) {
this._super.apply(this, arguments);
- var show_value = Number(value);
+ var show_value = Number(value_);
if (isNaN(show_value)) {
show_value = 0;
}
- var formatted_value = openerp.web.format_value(show_value, { type : 'float' }, '0');
+ var formatted_value = instance.web.format_value(show_value, { type : 'float' }, '0');
this.$element.progressbar('option', 'value', show_value).find('span').html(formatted_value + '%');
}
});
-openerp.web.form.FieldTextXml = openerp.web.form.AbstractField.extend({
+instance.web.form.FieldTextXml = instance.web.form.AbstractField.extend({
// to replace view editor
});
-openerp.web.form.FieldSelection = openerp.web.form.AbstractField.extend(_.extend({}, openerp.web.form.ReinitializeFieldMixin, {
+instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(_.extend({}, instance.web.form.ReinitializeFieldMixin, {
template: 'FieldSelection',
init: function(view, node) {
var self = this;
@@ -2171,7 +2189,9 @@ openerp.web.form.FieldSelection = openerp.web.form.AbstractField.extend(_.extend
// row
var ischanging = false;
this.$element.find('select')
- .change(this.on_ui_change)
+ .change(_.bind(function() {
+ this.set({'value': this.values[this.$element.find('select')[0].selectedIndex][0]});
+ }, this))
.change(function () { ischanging = true; })
.click(function () { ischanging = false; })
.keyup(function (e) {
@@ -2180,37 +2200,33 @@ openerp.web.form.FieldSelection = openerp.web.form.AbstractField.extend(_.extend
ischanging = false;
});
},
- set_value: function(value) {
- value = value === null ? false : value;
- value = value instanceof Array ? value[0] : value;
- this._super(value);
+ set_value: function(value_) {
+ value_ = value_ === null ? false : value_;
+ value_ = value_ instanceof Array ? value_[0] : value_;
+ this._super(value_);
this.render_value();
},
render_value: function() {
if (!this.get("effective_readonly")) {
var index = 0;
for (var i = 0, ii = this.values.length; i < ii; i++) {
- if (this.values[i][0] === this.value) index = i;
+ if (this.values[i][0] === this.get('value')) index = i;
}
this.$element.find('select')[0].selectedIndex = index;
} else {
var self = this;
var option = _(this.values)
- .detect(function (record) { return record[0] === self.value; });
+ .detect(function (record) { return record[0] === self.get('value'); });
this.$element.text(option ? option[1] : this.values[0][1]);
}
},
- set_value_from_ui: function() {
- this.value = this.values[this.$element.find('select')[0].selectedIndex][0];
- this._super();
- },
validate: function() {
if (this.get("effective_readonly")) {
this.invalid = false;
return;
}
- var value = this.values[this.$element.find('select')[0].selectedIndex];
- this.invalid = !(value && !(this.get("required") && value[0] === false));
+ var value_ = this.values[this.$element.find('select')[0].selectedIndex];
+ this.invalid = !(value_ && !(this.get("required") && value_[0] === false));
},
focus: function($element) {
this._super($element || this.$element.find('select:first'));
@@ -2224,8 +2240,8 @@ openerp.web.form.FieldSelection = openerp.web.form.AbstractField.extend(_.extend
function filter( array, term ) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
- return $.grep( array, function(value) {
- return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
+ return $.grep( array, function(value_) {
+ return matcher.test( $( "<div>" ).html( value_.label || value_.value || value_ ).text() );
});
}
@@ -2249,22 +2265,22 @@ openerp.web.form.FieldSelection = openerp.web.form.AbstractField.extend(_.extend
});
})();
-openerp.web.form.dialog = function(content, options) {
+instance.web.form.dialog = function(content, options) {
options = _.extend({
width: '90%',
height: 'auto',
min_width: '800px'
}, options || {});
- var dialog = new openerp.web.Dialog(null, options, content).open();
+ var dialog = new instance.web.Dialog(null, options, content).open();
return dialog.$element;
};
-openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend({}, openerp.web.form.ReinitializeFieldMixin, {
+instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(_.extend({}, instance.web.form.ReinitializeFieldMixin, {
template: "FieldMany2One",
init: function(view, node) {
this._super(view, node);
this.limit = 7;
- this.set({value: false});
+ this.set({'value': false});
this.display_value = {};
this.last_search = [];
this.floating = false;
@@ -2272,13 +2288,10 @@ openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend(
},
start: function() {
this._super();
- openerp.web.form.ReinitializeFieldMixin.start.call(this);
+ instance.web.form.ReinitializeFieldMixin.start.call(this);
this.on("change:value", this, function() {
this.floating = false;
this.render_value();
- if (! this.inhibit_on_change) {
- this.on_ui_change();
- }
});
},
initialize_content: function() {
@@ -2305,7 +2318,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend(
if (!self.get('value')) {
return;
}
- var pop = new openerp.web.form.FormOpenPopup(self.view);
+ var pop = new instance.web.form.FormOpenPopup(self.view);
pop.show_element(
self.field.relation,
self.get("value"),
@@ -2424,7 +2437,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend(
this.abort_last();
delete this.abort_last;
}
- var dataset = new openerp.web.DataSetStatic(this, this.field.relation, self.build_context());
+ var dataset = new instance.web.DataSetStatic(this, this.field.relation, self.build_context());
dataset.name_search(search_val, self.build_domain(), 'ilike',
this.limit + 1, function(data) {
@@ -2474,7 +2487,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend(
self._search_create_popup("form", undefined, {"default_name": name});
};
if (self.get_definition_options().quick_create === undefined || self.get_definition_options().quick_create) {
- var dataset = new openerp.web.DataSetStatic(this, this.field.relation, self.build_context());
+ var dataset = new instance.web.DataSetStatic(this, this.field.relation, self.build_context());
dataset.name_create(name, function(data) {
self.display_value = {};
self.display_value["" + data[0]] = data[1];
@@ -2489,7 +2502,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend(
// all search/create popup handling
_search_create_popup: function(view, ids, context) {
var self = this;
- var pop = new openerp.web.form.SelectCreatePopup(this);
+ var pop = new instance.web.form.SelectCreatePopup(this);
pop.select_element(
self.field.relation,
{
@@ -2499,7 +2512,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend(
disable_multiple_selection: true
},
self.build_domain(),
- new openerp.web.CompoundContext(self.build_context(), context || {})
+ new instance.web.CompoundContext(self.build_context(), context || {})
);
pop.on_select_elements.add(function(element_ids) {
self.set({value: element_ids[0]});
@@ -2517,7 +2530,7 @@ openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend(
return;
}
if (! no_recurse) {
- var dataset = new openerp.web.DataSetStatic(this, this.field.relation, self.view.dataset.get_context());
+ var dataset = new instance.web.DataSetStatic(this, this.field.relation, self.view.dataset.get_context());
dataset.name_get([self.get("value")], function(data) {
self.display_value["" + self.get("value")] = data[0][1];
self.render_value(true);
@@ -2545,21 +2558,17 @@ openerp.web.form.FieldMany2One = openerp.web.form.AbstractField.extend(_.extend(
});
}
},
- set_value: function(value) {
+ set_value: function(value_) {
var self = this;
- if (value instanceof Array) {
+ if (value_ instanceof Array) {
this.display_value = {};
- this.display_value["" + value[0]] = value[1];
- value = value[0];
+ this.display_value["" + value_[0]] = value_[1];
+ value_ = value_[0];
}
- value = value || false;
+ value_ = value_ || false;
this.inhibit_on_change = true;
- this.set({value: value});
+ this._super(value_);
this.inhibit_on_change = false;
- this._super(value);
- },
- get_value: function() {
- return this.get("value");
},
validate: function() {
this.invalid = this.get("required") && ! this.get("value");
@@ -2614,7 +2623,7 @@ var commands = {
return [6, false, ids];
}
};
-openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
+instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({
multi_selection: false,
disable_utility_classes: true,
init: function(view, node) {
@@ -2631,7 +2640,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
var self = this;
- this.dataset = new openerp.web.form.One2ManyDataSet(this, this.field.relation);
+ this.dataset = new instance.web.form.One2ManyDataSet(this, this.field.relation);
this.dataset.o2m = this;
this.dataset.parent_view = this.view;
this.dataset.child_name = this.name;
@@ -2657,7 +2666,7 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
trigger_on_change: function() {
var tmp = this.doing_on_change;
this.doing_on_change = true;
- this.on_ui_change();
+ this._on_ui_change();
this.doing_on_change = tmp;
},
load_views: function() {
@@ -2692,12 +2701,12 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
});
this.views = views;
- this.viewmanager = new openerp.web.ViewManager(this, this.dataset, views, {});
+ this.viewmanager = new instance.web.ViewManager(this, this.dataset, views, {});
this.viewmanager.template = 'One2Many.viewmanager';
- this.viewmanager.registry = openerp.web.views.extend({
- list: 'openerp.web.form.One2ManyListView',
- form: 'openerp.web.form.One2ManyFormView',
- kanban: 'openerp.web.form.One2ManyKanbanView',
+ this.viewmanager.registry = instance.web.views.extend({
+ list: 'instance.web.form.One2ManyListView',
+ form: 'instance.web.form.One2ManyFormView',
+ kanban: 'instance.web.form.One2ManyKanbanView',
});
var once = $.Deferred().then(function() {
self.init_form_last_update.resolve();
@@ -2759,13 +2768,13 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
}
}, undefined);
},
- set_value: function(value) {
- value = value || [];
+ set_value: function(value_) {
+ value_ = value_ || [];
var self = this;
this.dataset.reset_ids([]);
- if(value.length >= 1 && value[0] instanceof Array) {
+ if(value_.length >= 1 && value_[0] instanceof Array) {
var ids = [];
- _.each(value, function(command) {
+ _.each(value_, function(command) {
var obj = {values: command[2]};
switch (command[0]) {
case commands.CREATE:
@@ -2794,10 +2803,10 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
});
this._super(ids);
this.dataset.set_ids(ids);
- } else if (value.length >= 1 && typeof(value[0]) === "object") {
+ } else if (value_.length >= 1 && typeof(value_[0]) === "object") {
var ids = [];
this.dataset.delete_all = true;
- _.each(value, function(command) {
+ _.each(value_, function(command) {
var obj = {values: command};
obj['id'] = _.uniqueId(self.dataset.virtual_id_prefix);
obj.defaults = {};
@@ -2808,8 +2817,8 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
this._super(ids);
this.dataset.set_ids(ids);
} else {
- this._super(value);
- this.dataset.reset_ids(value);
+ this._super(value_);
+ this.dataset.reset_ids(value_);
}
if (this.dataset.index === null && this.dataset.ids.length > 0) {
this.dataset.index = 0;
@@ -2891,21 +2900,21 @@ openerp.web.form.FieldOne2Many = openerp.web.form.AbstractField.extend({
}
});
-openerp.web.form.One2ManyDataSet = openerp.web.BufferedDataSet.extend({
+instance.web.form.One2ManyDataSet = instance.web.BufferedDataSet.extend({
get_context: function() {
this.context = this.o2m.build_context([this.o2m.name]);
return this.context;
}
});
-openerp.web.form.One2ManyListView = openerp.web.ListView.extend({
+instance.web.form.One2ManyListView = instance.web.ListView.extend({
_template: 'One2Many.listview',
do_add_record: function () {
if (this.options.editable) {
this._super.apply(this, arguments);
} else {
var self = this;
- var pop = new openerp.web.form.SelectCreatePopup(this);
+ var pop = new instance.web.form.SelectCreatePopup(this);
pop.on_default_get.add(self.dataset.on_default_get);
pop.select_element(
self.o2m.field.relation,
@@ -2936,7 +2945,7 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({
},
do_activate_record: function(index, id) {
var self = this;
- var pop = new openerp.web.form.FormOpenPopup(self.o2m.view);
+ var pop = new instance.web.form.FormOpenPopup(self.o2m.view);
pop.show_element(self.o2m.field.relation, id, self.o2m.build_context(), {
title: _t("Open: ") + self.name,
auto_write: false,
@@ -2962,7 +2971,7 @@ openerp.web.form.One2ManyListView = openerp.web.ListView.extend({
}
});
-openerp.web.form.One2ManyFormView = openerp.web.FormView.extend({
+instance.web.form.One2ManyFormView = instance.web.FormView.extend({
form_template: 'One2Many.formview',
on_loaded: function(data) {
this._super(data);
@@ -2981,12 +2990,12 @@ openerp.web.form.One2ManyFormView = openerp.web.FormView.extend({
});
var lazy_build_o2m_kanban_view = function() {
-if (! openerp.web_kanban || openerp.web.form.One2ManyKanbanView)
+if (! instance.web_kanban || instance.web.form.One2ManyKanbanView)
return;
-openerp.web.form.One2ManyKanbanView = openerp.web_kanban.KanbanView.extend({
+instance.web.form.One2ManyKanbanView = instance.web_kanban.KanbanView.extend({
open_record: function(id) {
var self = this;
- var pop = new openerp.web.form.FormOpenPopup(self.o2m.view);
+ var pop = new instance.web.form.FormOpenPopup(self.o2m.view);
pop.show_element(self.o2m.field.relation, id, self.o2m.build_context(), {
title: _t("Open: ") + self.name,
auto_write: false,
@@ -3012,7 +3021,7 @@ openerp.web.form.One2ManyKanbanView = openerp.web_kanban.KanbanView.extend({
/*
* TODO niv: clean those deferred stuff, it could be better
*/
-openerp.web.form.FieldMany2Many = openerp.web.form.AbstractField.extend({
+instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({
multi_selection: false,
disable_utility_classes: true,
init: function(view, node) {
@@ -3026,10 +3035,10 @@ openerp.web.form.FieldMany2Many = openerp.web.form.AbstractField.extend({
var self = this;
- this.dataset = new openerp.web.form.Many2ManyDataSet(this, this.field.relation);
+ this.dataset = new instance.web.form.Many2ManyDataSet(this, this.field.relation);
this.dataset.m2m = this;
this.dataset.on_unlink.add_last(function(ids) {
- self.on_ui_change();
+ self.dataset_changed();
});
this.is_setted.then(function() {
@@ -3046,26 +3055,23 @@ openerp.web.form.FieldMany2Many = openerp.web.form.AbstractField.extend({
});
})
},
- set_value: function(value) {
- value = value || [];
- if (value.length >= 1 && value[0] instanceof Array) {
- value = value[0][2];
+ set_value: function(value_) {
+ value_ = value_ || [];
+ if (value_.length >= 1 && value_[0] instanceof Array) {
+ value_ = value_[0][2];
}
- this._super(value);
- this.dataset.set_ids(value);
+ this._super(value_);
+ this.dataset.set_ids(value_);
var self = this;
self.reload_content();
this.is_setted.resolve();
},
- get_value: function() {
- return [commands.replace_with(this.dataset.ids)];
- },
validate: function() {
this.invalid = false;
},
load_view: function() {
var self = this;
- this.list_view = new openerp.web.form.Many2ManyListView(this, this.dataset, false, {
+ this.list_view = new instance.web.form.Many2ManyListView(this, this.dataset, false, {
'addable': self.get("effective_readonly") ? null : _t("Add"),
'deletable': self.get("effective_readonly") ? false : true,
'selectable': self.multi_selection,
@@ -3092,9 +3098,12 @@ openerp.web.form.FieldMany2Many = openerp.web.form.AbstractField.extend({
return self.list_view.reload_content();
});
},
+ dataset_changed: function() {
+ this.set({'value': [commands.replace_with(this.dataset.ids)]});
+ },
});
-openerp.web.form.Many2ManyDataSet = openerp.web.DataSetStatic.extend({
+instance.web.form.Many2ManyDataSet = instance.web.DataSetStatic.extend({
get_context: function() {
this.context = this.m2m.build_context();
return this.context;
@@ -3103,17 +3112,17 @@ openerp.web.form.Many2ManyDataSet = openerp.web.DataSetStatic.extend({
/**
* @class
- * @extends openerp.web.ListView
+ * @extends instance.web.ListView
*/
-openerp.web.form.Many2ManyListView = openerp.web.ListView.extend(/** @lends openerp.web.form.Many2ManyListView# */{
+instance.web.form.Many2ManyListView = instance.web.ListView.extend(/** @lends instance.web.form.Many2ManyListView# */{
do_add_record: function () {
- var pop = new openerp.web.form.SelectCreatePopup(this);
+ var pop = new instance.web.form.SelectCreatePopup(this);
pop.select_element(
this.model,
{
title: _t("Add: ") + this.name
},
- new openerp.web.CompoundDomain(this.m2m_field.build_domain(), ["!", ["id", "in", this.m2m_field.dataset.ids]]),
+ new instance.web.CompoundDomain(this.m2m_field.build_domain(), ["!", ["id", "in", this.m2m_field.dataset.ids]]),
this.m2m_field.build_context()
);
var self = this;
@@ -3121,7 +3130,7 @@ openerp.web.form.Many2ManyListView = openerp.web.ListView.extend(/** @lends open
_.each(element_ids, function(one_id) {
if(! _.detect(self.dataset.ids, function(x) {return x == one_id;})) {
self.dataset.set_ids([].concat(self.dataset.ids, [one_id]));
- self.m2m_field.on_ui_change();
+ self.m2m_field.dataset_changed();
self.reload_content();
}
});
@@ -3129,7 +3138,7 @@ openerp.web.form.Many2ManyListView = openerp.web.ListView.extend(/** @lends open
},
do_activate_record: function(index, id) {
var self = this;
- var pop = new openerp.web.form.FormOpenPopup(this);
+ var pop = new instance.web.form.FormOpenPopup(this);
pop.show_element(this.dataset.model, id, this.m2m_field.build_context(), {
title: _t("Open: ") + this.name,
readonly: this.getParent().get("effective_readonly")
@@ -3142,9 +3151,9 @@ openerp.web.form.Many2ManyListView = openerp.web.ListView.extend(/** @lends open
/**
* @class
- * @extends openerp.web.OldWidget
+ * @extends instance.web.OldWidget
*/
-openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends openerp.web.form.SelectCreatePopup# */{
+instance.web.form.SelectCreatePopup = instance.web.OldWidget.extend(/** @lends instance.web.form.SelectCreatePopup# */{
template: "SelectCreatePopup",
/**
* options:
@@ -3170,7 +3179,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
this.initial_ids = this.options.initial_ids;
this.created_elements = [];
this.renderElement();
- openerp.web.form.dialog(this.$element, {
+ instance.web.form.dialog(this.$element, {
close: function() {
self.check_exit();
},
@@ -3181,7 +3190,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
start: function() {
this._super();
var self = this;
- this.dataset = new openerp.web.ProxyDataSet(this, this.model,
+ this.dataset = new instance.web.ProxyDataSet(this, this.model,
this.context);
this.dataset.create_function = function() {
return self.options.create_function.apply(null, arguments).then(function(r) {
@@ -3201,10 +3210,10 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
contexts: [this.context]
}, function (results) {
var search_defaults = {};
- _.each(results.context, function (value, key) {
+ _.each(results.context, function (value_, key) {
var match = /^search_default_(.*)$/.exec(key);
if (match) {
- search_defaults[match[1]] = value;
+ search_defaults[match[1]] = value_;
}
});
self.setup_search_view(search_defaults);
@@ -3222,7 +3231,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
if (this.searchview) {
this.searchview.destroy();
}
- this.searchview = new openerp.web.SearchView(this,
+ this.searchview = new instance.web.SearchView(this,
this.dataset, false, search_defaults);
this.searchview.on_search.add(function(domains, contexts, groupbys) {
if (self.initial_ids) {
@@ -3234,7 +3243,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
}
});
this.searchview.on_loaded.add_last(function () {
- self.view_list = new openerp.web.form.SelectCreateListView(self,
+ self.view_list = new instance.web.form.SelectCreateListView(self,
self.dataset, false,
_.extend({'deletable': false,
'selectable': !self.options.disable_multiple_selection
@@ -3276,14 +3285,14 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
},
create_row: function() {
var self = this;
- var wdataset = new openerp.web.DataSetSearch(this, this.model, this.context, this.domain);
+ var wdataset = new instance.web.DataSetSearch(this, this.model, this.context, this.domain);
wdataset.parent_view = this.options.parent_view;
wdataset.child_name = this.options.child_name;
return wdataset.create.apply(wdataset, arguments);
},
write_row: function() {
var self = this;
- var wdataset = new openerp.web.DataSetSearch(this, this.model, this.context, this.domain);
+ var wdataset = new instance.web.DataSetSearch(this, this.model, this.context, this.domain);
wdataset.parent_view = this.options.parent_view;
wdataset.child_name = this.options.child_name;
return wdataset.write.apply(wdataset, arguments);
@@ -3307,7 +3316,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
this.view_list.$element.hide();
}
this.dataset.index = null;
- this.view_form = new openerp.web.FormView(this, this.dataset, false, self.options.form_view_options);
+ this.view_form = new instance.web.FormView(this, this.dataset, false, self.options.form_view_options);
if (this.options.alternative_form_view) {
this.view_form.set_embedded_view(this.options.alternative_form_view);
}
@@ -3347,7 +3356,7 @@ openerp.web.form.SelectCreatePopup = openerp.web.OldWidget.extend(/** @lends ope
on_default_get: function(res) {}
});
-openerp.web.form.SelectCreateListView = openerp.web.ListView.extend({
+instance.web.form.SelectCreateListView = instance.web.ListView.extend({
do_add_record: function () {
this.popup.new_object();
},
@@ -3363,9 +3372,9 @@ openerp.web.form.SelectCreateListView = openerp.web.ListView.extend({
/**
* @class
- * @extends openerp.web.OldWidget
+ * @extends instance.web.OldWidget
*/
-openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp.web.form.FormOpenPopup# */{
+instance.web.form.FormOpenPopup = instance.web.OldWidget.extend(/** @lends instance.web.form.FormOpenPopup# */{
template: "FormOpenPopup",
/**
* options:
@@ -3383,7 +3392,7 @@ openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp
this.context = context || {};
this.options = _.defaults(options || {}, {"auto_write": true});
this.renderElement();
- openerp.web.dialog(this.$element, {
+ instance.web.dialog(this.$element, {
title: options.title || '',
modal: true,
width: 960,
@@ -3393,7 +3402,7 @@ openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp
},
start: function() {
this._super();
- this.dataset = new openerp.web.form.FormOpenDataset(this, this.model, this.context);
+ this.dataset = new instance.web.form.FormOpenDataset(this, this.model, this.context);
this.dataset.fop = this;
this.dataset.ids = [this.row_id];
this.dataset.index = 0;
@@ -3405,7 +3414,7 @@ openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp
if (!this.options.auto_write)
return;
var self = this;
- var wdataset = new openerp.web.DataSetSearch(this, this.model, this.context, this.domain);
+ var wdataset = new instance.web.DataSetSearch(this, this.model, this.context, this.domain);
wdataset.parent_view = this.options.parent_view;
wdataset.child_name = this.options.child_name;
wdataset.write(id, data, {}, function(r) {
@@ -3415,7 +3424,7 @@ openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp
on_write_completed: function() {},
setup_form_view: function() {
var self = this;
- var FormClass = openerp.web.views.get_object('form');
+ var FormClass = instance.web.views.get_object('form');
var options = _.clone(self.options.form_view_options);
options.initial_mode = this.options.readonly ? "view" : "edit";
this.view_form = new FormClass(this, this.dataset, false, options);
@@ -3446,7 +3455,7 @@ openerp.web.form.FormOpenPopup = openerp.web.OldWidget.extend(/** @lends openerp
}
});
-openerp.web.form.FormOpenDataset = openerp.web.ProxyDataSet.extend({
+instance.web.form.FormOpenDataset = instance.web.ProxyDataSet.extend({
read_ids: function() {
if (this.fop.options.read_function) {
return this.fop.options.read_function.apply(null, arguments);
@@ -3456,7 +3465,7 @@ openerp.web.form.FormOpenDataset = openerp.web.ProxyDataSet.extend({
}
});
-openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend(_.extend({}, openerp.web.form.ReinitializeFieldMixin, {
+instance.web.form.FieldReference = instance.web.form.AbstractField.extend(_.extend({}, instance.web.form.ReinitializeFieldMixin, {
template: 'FieldReference',
init: function(view, node) {
this._super(view, node);
@@ -3485,7 +3494,7 @@ openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend(_.extend
if (this.reference_ready) {
var sel = this.selection.get_value();
this.m2o.field.relation = sel;
- this.m2o.set_value(null);
+ this.m2o.set_value(false);
this.m2o.$element.toggle(sel !== false);
}
},
@@ -3500,22 +3509,22 @@ openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend(_.extend
}
},
initialize_content: function() {
- this.selection = new openerp.web.form.FieldSelection(this, { attrs: {
+ this.selection = new instance.web.form.FieldSelection(this, { attrs: {
name: 'selection',
widget: 'selection'
}});
this.selection.set({readonly: this.get('effective_readonly')});
- this.selection.on_value_changed.add_last(this.on_selection_changed);
+ this.selection.on("change:value", this, this.on_selection_changed);
this.selection.$element = $(".oe_form_view_reference_selection", this.$element);
this.selection.renderElement();
this.selection.start();
- this.m2o = new openerp.web.form.FieldMany2One(this, { attrs: {
+ this.m2o = new instance.web.form.FieldMany2One(this, { attrs: {
name: 'm2o',
widget: 'many2one'
}});
this.m2o.set({"readonly": this.get("effective_readonly")});
- this.m2o.on_ui_change.add_last(this.on_ui_change);
+ this.m2o.on("change:value", this, this.data_changed);
this.m2o.$element = $(".oe_form_view_reference_m2o", this.$element);
this.m2o.renderElement();
this.m2o.start();
@@ -3526,15 +3535,15 @@ openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend(_.extend
is_dirty: function() {
return this.selection.is_dirty() || this.m2o.is_dirty();
},
- set_value: function(value) {
- this._super(value);
+ set_value: function(value_) {
+ this._super(value_);
this.render_value();
},
render_value: function() {
this.reference_ready = false;
var vals = [], sel_val, m2o_val;
- if (typeof(this.value) === 'string') {
- vals = this.value.split(',');
+ if (typeof(this.get('value')) === 'string') {
+ vals = this.get('value').split(',');
}
sel_val = vals[0] || false;
m2o_val = vals[1] ? parseInt(vals[1], 10) : false;
@@ -3546,18 +3555,18 @@ openerp.web.form.FieldReference = openerp.web.form.AbstractField.extend(_.extend
this.m2o.$element.toggle(sel_val !== false);
this.reference_ready = true;
},
- get_value: function() {
+ data_changed: function() {
var model = this.selection.get_value(),
id = this.m2o.get_value();
if (typeof(model) === 'string' && typeof(id) === 'number') {
- return model + ',' + id;
+ this.set({'value': model + ',' + id});
} else {
- return false;
+ this.set({'value': false});
}
- }
+ },
}));
-openerp.web.form.FieldBinary = openerp.web.form.AbstractField.extend(_.extend({}, openerp.web.form.ReinitializeFieldMixin, {
+instance.web.form.FieldBinary = instance.web.form.AbstractField.extend(_.extend({}, instance.web.form.ReinitializeFieldMixin, {
init: function(view, node) {
this._super(view, node);
this.iframe = this.element_id + '_iframe';
@@ -3597,7 +3606,6 @@ openerp.web.form.FieldBinary = openerp.web.form.AbstractField.extend(_.extend({}
console.warn("Error while uploading file : ", name);
} else {
this.on_file_uploaded_and_valid.apply(this, arguments);
- this.on_ui_change();
}
this.$element.find('.oe-binary-progress').hide();
this.$element.find('.oe-binary').show();
@@ -3616,34 +3624,33 @@ openerp.web.form.FieldBinary = openerp.web.form.AbstractField.extend(_.extend({}
context: this.view.dataset.get_context()
})},
complete: $.unblockUI,
- error: openerp.webclient.crashmanager.on_rpc_error
+ error: instance.webclient.crashmanager.on_rpc_error
});
},
on_clear: function() {
- if (this.value !== false) {
- this.value = false;
+ if (this.get('value') !== false) {
this.binary_value = false;
- this.on_ui_change();
+ this.set({'value': false});
}
return false;
}
}));
-openerp.web.form.FieldBinaryFile = openerp.web.form.FieldBinary.extend({
+instance.web.form.FieldBinaryFile = instance.web.form.FieldBinary.extend({
template: 'FieldBinaryFile',
initialize_content: function() {
this._super();
if (this.get("effective_readonly")) {
var self = this;
this.$element.find('a').click(function() {
- if (self.value) {
+ if (self.get('value')) {
self.on_save_as();
}
return false;
});
}
},
- set_value: function(value) {
+ set_value: function(value_) {
this._super.apply(this, arguments);
this.render_value();
},
@@ -3653,29 +3660,28 @@ openerp.web.form.FieldBinaryFile = openerp.web.form.FieldBinary.extend({
if (this.node.attrs.filename) {
show_value = this.view.datarecord[this.node.attrs.filename] || '';
} else {
- show_value = (this.value != null && this.value !== false) ? this.value : '';
+ show_value = (this.get('value') != null && this.get('value') !== false) ? this.get('value') : '';
}
this.$element.find('input').eq(0).val(show_value);
} else {
- this.$element.find('a').show(!!this.value);
- if (this.value) {
+ this.$element.find('a').show(!!this.get('value'));
+ if (this.get('value')) {
var show_value = _t("Download") + " " + (this.view.datarecord[this.node.attrs.filename] || '');
this.$element.find('a').text(show_value);
}
}
},
on_file_uploaded_and_valid: function(size, name, content_type, file_base64) {
- this.value = file_base64;
this.binary_value = true;
+ this.set({'value': file_base64});
var show_value = name + " (" + this.human_filesize(size) + ")";
this.$element.find('input').eq(0).val(show_value);
this.set_filename(name);
},
- set_filename: function(value) {
+ set_filename: function(value_) {
var filename = this.node.attrs.filename;
if (this.view.fields[filename]) {
- this.view.fields[filename].set_value(value);
- this.view.fields[filename].on_ui_change();
+ this.view.fields[filename].set({value: value_});
}
},
on_clear: function() {
@@ -3685,7 +3691,7 @@ openerp.web.form.FieldBinaryFile = openerp.web.form.FieldBinary.extend({
}
});
-openerp.web.form.FieldBinaryImage = openerp.web.form.FieldBinary.extend({
+instance.web.form.FieldBinaryImage = instance.web.form.FieldBinary.extend({
template: 'FieldBinaryImage',
initialize_content: function() {
this._super();
@@ -3695,15 +3701,15 @@ openerp.web.form.FieldBinaryImage = openerp.web.form.FieldBinary.extend({
else
this.$element.find('.oe-binary').hide();
},
- set_value: function(value) {
+ set_value: function(value_) {
this._super.apply(this, arguments);
this.render_value();
},
render_value: function() {
var url;
- if (this.value && this.value.substr(0, 10).indexOf(' ') == -1) {
- url = 'data:image/png;base64,' + this.value;
- } else if (this.value) {
+ if (this.get('value') && this.get('value').substr(0, 10).indexOf(' ') == -1) {
+ url = 'data:image/png;base64,' + this.get('value');
+ } else if (this.get('value')) {
url = '/web/binary/image?session_id=' + this.session.session_id + '&model=' +
this.view.dataset.model +'&id=' + (this.view.datarecord.id || '') + '&field=' + this.name + '&t=' + (new Date().getTime());
} else {
@@ -3717,7 +3723,7 @@ openerp.web.form.FieldBinaryImage = openerp.web.form.FieldBinary.extend({
this._super.apply(this, arguments);
},
on_file_uploaded_and_valid: function(size, name, content_type, file_base64) {
- this.value = file_base64;
+ this.set({'value': file_base64});
this.binary_value = true;
this.render_value();
},
@@ -3727,7 +3733,7 @@ openerp.web.form.FieldBinaryImage = openerp.web.form.FieldBinary.extend({
}
});
-openerp.web.form.FieldStatus = openerp.web.form.AbstractField.extend({
+instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({
template: "EmptyComponent",
start: function() {
this._super();
@@ -3735,9 +3741,9 @@ openerp.web.form.FieldStatus = openerp.web.form.AbstractField.extend({
this.render_list();
},
- set_value: function(value) {
- this._super(value);
- this.selected_value = value;
+ set_value: function(value_) {
+ this._super(value_);
+ this.selected_value = value_;
this.render_list();
},
@@ -3755,7 +3761,7 @@ openerp.web.form.FieldStatus = openerp.web.form.AbstractField.extend({
});
}
- var content = openerp.web.qweb.render("FieldStatus.content", {widget: this, _:_});
+ var content = instance.web.qweb.render("FieldStatus.content", {widget: this, _:_});
this.$element.html(content);
var colors = JSON.parse((this.node.attrs || {}).statusbar_colors || "{}");
@@ -3793,34 +3799,34 @@ openerp.web.form.FieldStatus = openerp.web.form.AbstractField.extend({
});
/**
- * Registry of form widgets, called by :js:`openerp.web.FormView`
+ * Registry of form widgets, called by :js:`instance.web.FormView`
*/
-openerp.web.form.widgets = new openerp.web.Registry({
- 'char' : 'openerp.web.form.FieldChar',
- 'id' : 'openerp.web.form.FieldID',
- 'email' : 'openerp.web.form.FieldEmail',
- 'url' : 'openerp.web.form.FieldUrl',
- 'text' : 'openerp.web.form.FieldText',
- 'date' : 'openerp.web.form.FieldDate',
- 'datetime' : 'openerp.web.form.FieldDatetime',
- 'selection' : 'openerp.web.form.FieldSelection',
- 'many2one' : 'openerp.web.form.FieldMany2One',
- 'many2many' : 'openerp.web.form.FieldMany2Many',
- 'one2many' : 'openerp.web.form.FieldOne2Many',
- 'one2many_list' : 'openerp.web.form.FieldOne2Many',
- 'reference' : 'openerp.web.form.FieldReference',
- 'boolean' : 'openerp.web.form.FieldBoolean',
- 'float' : 'openerp.web.form.FieldFloat',
- 'integer': 'openerp.web.form.FieldFloat',
- 'float_time': 'openerp.web.form.FieldFloat',
- 'progressbar': 'openerp.web.form.FieldProgressBar',
- 'image': 'openerp.web.form.FieldBinaryImage',
- 'binary': 'openerp.web.form.FieldBinaryFile',
- 'statusbar': 'openerp.web.form.FieldStatus'
+instance.web.form.widgets = new instance.web.Registry({
+ 'char' : 'instance.web.form.FieldChar',
+ 'id' : 'instance.web.form.FieldID',
+ 'email' : 'instance.web.form.FieldEmail',
+ 'url' : 'instance.web.form.FieldUrl',
+ 'text' : 'instance.web.form.FieldText',
+ 'date' : 'instance.web.form.FieldDate',
+ 'datetime' : 'instance.web.form.FieldDatetime',
+ 'selection' : 'instance.web.form.FieldSelection',
+ 'many2one' : 'instance.web.form.FieldMany2One',
+ 'many2many' : 'instance.web.form.FieldMany2Many',
+ 'one2many' : 'instance.web.form.FieldOne2Many',
+ 'one2many_list' : 'instance.web.form.FieldOne2Many',
+ 'reference' : 'instance.web.form.FieldReference',
+ 'boolean' : 'instance.web.form.FieldBoolean',
+ 'float' : 'instance.web.form.FieldFloat',
+ 'integer': 'instance.web.form.FieldFloat',
+ 'float_time': 'instance.web.form.FieldFloat',
+ 'progressbar': 'instance.web.form.FieldProgressBar',
+ 'image': 'instance.web.form.FieldBinaryImage',
+ 'binary': 'instance.web.form.FieldBinaryFile',
+ 'statusbar': 'instance.web.form.FieldStatus'
});
-openerp.web.form.tags = new openerp.web.Registry({
- 'button' : 'openerp.web.form.WidgetButton',
+instance.web.form.tags = new instance.web.Registry({
+ 'button' : 'instance.web.form.WidgetButton',
});
};
diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js
index deec710092c..de8b25fafe8 100644
--- a/addons/web/static/src/js/view_list.js
+++ b/addons/web/static/src/js/view_list.js
@@ -1,9 +1,9 @@
-openerp.web.list = function (openerp) {
-var _t = openerp.web._t,
- _lt = openerp.web._lt;
-var QWeb = openerp.web.qweb;
-openerp.web.views.add('list', 'openerp.web.ListView');
-openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# */ {
+openerp.web.list = function (instance) {
+var _t = instance.web._t,
+ _lt = instance.web._lt;
+var QWeb = instance.web.qweb;
+instance.web.views.add('list', 'instance.web.ListView');
+instance.web.ListView = instance.web.View.extend( /** @lends instance.web.ListView# */ {
_template: 'ListView',
display_name: _lt('List'),
defaults: {
@@ -33,11 +33,11 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
* See constructor parameters and method documentations for information on
* the default behaviors and possible options for the list view.
*
- * @constructs openerp.web.ListView
- * @extends openerp.web.View
+ * @constructs instance.web.ListView
+ * @extends instance.web.View
*
* @param parent parent object
- * @param {openerp.web.DataSet} dataset the dataset the view should work with
+ * @param {instance.web.DataSet} dataset the dataset the view should work with
* @param {String} view_id the listview's identifier, if any
* @param {Object} options A set of options used to configure the view
* @param {Boolean} [options.selectable=true] determines whether view rows are selectable (e.g. via a checkbox)
@@ -62,12 +62,12 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
this.records = new Collection();
- this.set_groups(new openerp.web.ListView.Groups(this));
+ this.set_groups(new instance.web.ListView.Groups(this));
- if (this.dataset instanceof openerp.web.DataSetStatic) {
- this.groups.datagroup = new openerp.web.StaticDataGroup(this.dataset);
+ if (this.dataset instanceof instance.web.DataSetStatic) {
+ this.groups.datagroup = new instance.web.StaticDataGroup(this.dataset);
} else {
- this.groups.datagroup = new openerp.web.DataGroup(
+ this.groups.datagroup = new instance.web.DataGroup(
this, this.model,
dataset.get_domain(),
dataset.get_context(),
@@ -105,7 +105,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
/**
* Set a custom Group construct as the root of the List View.
*
- * @param {openerp.web.ListView.Groups} groups
+ * @param {instance.web.ListView.Groups} groups
*/
set_groups: function (groups) {
var self = this;
@@ -330,7 +330,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
// Sidebar
if (!this.sidebar && this.options.sidebar && this.options.$sidebar) {
- this.sidebar = new openerp.web.Sidebar(this);
+ this.sidebar = new instance.web.Sidebar(this);
this.sidebar.appendTo(this.options.$sidebar);
this.sidebar.add_toolbar(this.fields_view.toolbar);
}
@@ -340,7 +340,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
*
* Horrifying side-effect: sets the dataset's data on this.dataset?
*
- * @param {openerp.web.DataSet} dataset
+ * @param {instance.web.DataSet} dataset
*/
configure_pager: function (dataset) {
this.dataset.ids = dataset.ids;
@@ -364,7 +364,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
* @param {Boolean} [grouped] Should the grouping columns (group and count) be displayed
*/
setup_columns: function (fields, grouped) {
- var domain_computer = openerp.web.form.compute_domain;
+ var domain_computer = instance.web.form.compute_domain;
var noop = function () { return {}; };
var field_to_column = function (field) {
@@ -433,7 +433,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
*
* The default implementation asks the list view's view manager to switch
* to a different view (by calling
- * :js:func:`~openerp.web.ViewManager.on_mode_switch`), using the
+ * :js:func:`~instance.web.ViewManager.on_mode_switch`), using the
* provided record index (within the current list view's dataset).
*
* If the index is null, ``switch_to_record`` asks for the creation of a
@@ -554,7 +554,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
*/
do_search: function (domain, context, group_by) {
this.page = 0;
- this.groups.datagroup = new openerp.web.DataGroup(
+ this.groups.datagroup = new instance.web.DataGroup(
this, this.model, domain, context, group_by);
this.groups.datagroup.sort = this.dataset._sort;
@@ -626,7 +626,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
return;
}
- var c = new openerp.web.CompoundContext();
+ var c = new instance.web.CompoundContext();
c.set_eval_context(_.extend({
active_id: id,
active_ids: [id],
@@ -643,7 +643,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
*
* @param {Number} index index of the record in the dataset
* @param {Object} id identifier of the activated record
- * @param {openerp.web.DataSet} dataset dataset in which the record is available (may not be the listview's dataset in case of nested groups)
+ * @param {instance.web.DataSet} dataset dataset in which the record is available (may not be the listview's dataset in case of nested groups)
*/
do_activate_record: function (index, id, dataset, view) {
this.dataset.ids = dataset.ids;
@@ -667,11 +667,11 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
/**
* Computes the aggregates for the current list view, either on the
* records provided or on the records of the internal
- * :js:class:`~openerp.web.ListView.Group`, by calling
- * :js:func:`~openerp.web.ListView.group.get_records`.
+ * :js:class:`~instance.web.ListView.Group`, by calling
+ * :js:func:`~instance.web.ListView.group.get_records`.
*
* Then displays the aggregates in the table through
- * :js:method:`~openerp.web.ListView.display_aggregates`.
+ * :js:method:`~instance.web.ListView.display_aggregates`.
*
* @param {Array} [records]
*/
@@ -747,7 +747,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
}
$footer_cells.filter(_.str.sprintf('[data-field=%s]', column.id))
- .html(openerp.web.format_cell(aggregation, column, {
+ .html(instance.web.format_cell(aggregation, column, {
process_modifiers: false
}));
});
@@ -800,7 +800,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView#
}
}
});
-openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.ListView.List# */{
+instance.web.ListView.List = instance.web.Class.extend( /** @lends instance.web.ListView.List# */{
/**
* List display for the ListView, handles basic DOM events and transforms
* them in the relevant higher-level events, to which the list view (or
@@ -825,10 +825,10 @@ openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.Lis
* Triggered when a row of the table is clicked, provides the index (in
* the rows array) and id of the selected record to the handle function.
*
- * @constructs openerp.web.ListView.List
- * @extends openerp.web.Class
+ * @constructs instance.web.ListView.List
+ * @extends instance.web.Class
*
- * @param {Object} opts display options, identical to those of :js:class:`openerp.web.ListView`
+ * @param {Object} opts display options, identical to those of :js:class:`instance.web.ListView`
*/
init: function (group, opts) {
var self = this;
@@ -943,7 +943,7 @@ openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.Lis
// to get a correctly displayable value in the field
var model = ref_match[1],
id = parseInt(ref_match[2], 10);
- new openerp.web.DataSet(this.view, model).name_get([id], function(names) {
+ new instance.web.DataSet(this.view, model).name_get([id], function(names) {
if (!names.length) { return; }
record.set(column.id, names[0][1]);
});
@@ -958,14 +958,14 @@ openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.Lis
// fetch the name, set it on the record (in the right field)
// and let the various registered events handle refreshing the
// row
- new openerp.web.DataSet(this.view, column.relation)
+ new instance.web.DataSet(this.view, column.relation)
.name_get([value], function (names) {
if (!names.length) { return; }
record.set(column.id, names[0]);
});
}
}
- return openerp.web.format_cell(record.toForm().data, column, {
+ return instance.web.format_cell(record.toForm().data, column, {
model: this.dataset.model,
id: record.get('id')
});
@@ -1119,19 +1119,19 @@ openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.Lis
});
}
});
-openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.ListView.Groups# */{
+instance.web.ListView.Groups = instance.web.Class.extend( /** @lends instance.web.ListView.Groups# */{
passtrough_events: 'action deleted row_link',
/**
* Grouped display for the ListView. Handles basic DOM events and interacts
- * with the :js:class:`~openerp.web.DataGroup` bound to it.
+ * with the :js:class:`~instance.web.DataGroup` bound to it.
*
* Provides events similar to those of
- * :js:class:`~openerp.web.ListView.List`
+ * :js:class:`~instance.web.ListView.List`
*
- * @constructs openerp.web.ListView.Groups
- * @extends openerp.web.Class
+ * @constructs instance.web.ListView.Groups
+ * @extends instance.web.Class
*
- * @param {openerp.web.ListView} view
+ * @param {instance.web.ListView} view
* @param {Object} [options]
* @param {Collection} [options.records]
* @param {Object} [options.options]
@@ -1242,7 +1242,7 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L
self.records.proxy(group.value).reset();
delete self.children[group.value];
}
- var child = self.children[group.value] = new openerp.web.ListView.Groups(self.view, {
+ var child = self.children[group.value] = new instance.web.ListView.Groups(self.view, {
records: self.records.proxy(group.value),
options: self.options,
columns: self.columns
@@ -1278,7 +1278,7 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L
var group_column = _(self.columns).detect(function (column) {
return column.id === group.grouped_on; });
try {
- $group_column.html(openerp.web.format_cell(
+ $group_column.html(instance.web.format_cell(
row_data, group_column, {
value_if_empty: _t("Undefined"),
process_modifiers: false
@@ -1315,7 +1315,7 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L
var r = {};
r[column.id] = {value: group.aggregates[column.id]};
$('<td class="oe-number">')
- .html(openerp.web.format_cell(
+ .html(instance.web.format_cell(
r, column, {process_modifiers: false}))
.appendTo($row);
} else {
@@ -1348,7 +1348,7 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L
},
render_dataset: function (dataset) {
var self = this,
- list = new openerp.web.ListView.List(this, {
+ list = new instance.web.ListView.List(this, {
options: this.options,
columns: this.columns,
dataset: dataset,
@@ -1561,10 +1561,10 @@ var Events = /** @lends Events# */{
return this;
}
};
-var Record = openerp.web.Class.extend(/** @lends Record# */{
+var Record = instance.web.Class.extend(/** @lends Record# */{
/**
* @constructs Record
- * @extends openerp.web.Class
+ * @extends instance.web.Class
*
* @mixes Events
* @param {Object} [data]
@@ -1642,7 +1642,7 @@ var Record = openerp.web.Class.extend(/** @lends Record# */{
}
});
Record.include(Events);
-var Collection = openerp.web.Class.extend(/** @lends Collection# */{
+var Collection = instance.web.Class.extend(/** @lends Collection# */{
/**
* Smarter collections, with events, very strongly inspired by Backbone's.
*
@@ -1650,7 +1650,7 @@ var Collection = openerp.web.Class.extend(/** @lends Collection# */{
* various serious
*
* @constructs Collection
- * @extends openerp.web.Class
+ * @extends instance.web.Class
*
* @mixes Events
* @param {Array} [records] records to initialize the collection with
@@ -1682,19 +1682,19 @@ var Collection = openerp.web.Class.extend(/** @lends Collection# */{
var records = record instanceof Array ? record : [record];
for(var i=0, length=records.length; i<length; ++i) {
- var instance = (records[i] instanceof Record) ? records[i] : new Record(records[i]);
- instance.bind(null, this._onRecordEvent);
- this._byId[instance.get('id')] = instance;
+ var instance_ = (records[i] instanceof Record) ? records[i] : new Record(records[i]);
+ instance_.bind(null, this._onRecordEvent);
+ this._byId[instance_.get('id')] = instance_;
if (options.at == undefined) {
- this.records.push(instance);
+ this.records.push(instance_);
if (!options.silent) {
- this.trigger('add', this, instance, this.records.length-1);
+ this.trigger('add', this, instance_, this.records.length-1);
}
} else {
var insertion_index = options.at + i;
- this.records.splice(insertion_index, 0, instance);
+ this.records.splice(insertion_index, 0, instance_);
if (!options.silent) {
- this.trigger('add', this, instance, insertion_index);
+ this.trigger('add', this, instance_, insertion_index);
}
}
this.length++;
@@ -1825,7 +1825,7 @@ var Collection = openerp.web.Class.extend(/** @lends Collection# */{
}
});
Collection.include(Events);
-openerp.web.list = {
+instance.web.list = {
Events: Events,
Record: Record,
Collection: Collection
diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js
index aea7f6837c1..ac19e3f341d 100644
--- a/addons/web/static/src/js/view_list_editable.js
+++ b/addons/web/static/src/js/view_list_editable.js
@@ -2,16 +2,16 @@
* handles editability case for lists, because it depends on form and forms already depends on lists it had to be split out
* @namespace
*/
-openerp.web.list_editable = function (openerp) {
+openerp.web.list_editable = function (instance) {
var KEY_RETURN = 13,
KEY_ESCAPE = 27;
- var QWeb = openerp.web.qweb;
+ var QWeb = instance.web.qweb;
// editability status of list rows
- openerp.web.ListView.prototype.defaults.editable = null;
+ instance.web.ListView.prototype.defaults.editable = null;
// TODO: not sure second @lends on existing item is correct, to check
- openerp.web.ListView.include(/** @lends openerp.web.ListView# */{
+ instance.web.ListView.include(/** @lends instance.web.ListView# */{
init: function () {
var self = this;
this._super.apply(this, arguments);
@@ -37,7 +37,7 @@ openerp.web.list_editable = function (openerp) {
*
* @param {Number} index index of the record in the dataset
* @param {Object} id identifier of the record being edited
- * @param {openerp.web.DataSet} dataset dataset in which the record is available
+ * @param {instance.web.DataSet} dataset dataset in which the record is available
*/
do_edit: function (index, id, dataset) {
_.extend(this.dataset, dataset);
@@ -93,8 +93,8 @@ openerp.web.list_editable = function (openerp) {
}
});
- openerp.web.ListView.Groups.include(/** @lends openerp.web.ListView.Groups# */{
- passtrough_events: openerp.web.ListView.Groups.prototype.passtrough_events + " edit saved",
+ instance.web.ListView.Groups.include(/** @lends instance.web.ListView.Groups# */{
+ passtrough_events: instance.web.ListView.Groups.prototype.passtrough_events + " edit saved",
new_record: function () {
// TODO: handle multiple children
this.children[null].new_record();
@@ -113,7 +113,7 @@ openerp.web.list_editable = function (openerp) {
}
});
- openerp.web.ListView.List.include(/** @lends openerp.web.ListView.List# */{
+ instance.web.ListView.List.include(/** @lends instance.web.ListView.List# */{
row_clicked: function (event) {
if (!this.options.editable) {
return this._super.apply(this, arguments);
@@ -236,7 +236,7 @@ openerp.web.list_editable = function (openerp) {
self.edition = true;
self.edition_id = record_id;
$new_row.addClass("oe_form_container");
- self.edition_form = new openerp.web.ListEditableFormView(self.view, self.dataset, false);
+ self.edition_form = new instance.web.ListEditableFormView(self.view, self.dataset, false);
self.edition_form.$element = $new_row;
self.edition_form.editable_list = self;
// HO HO
@@ -274,7 +274,7 @@ openerp.web.list_editable = function (openerp) {
// insert after the source record
var index = self.records.indexOf(
self.records.get(source_record_id)) + 1;
- record = new openerp.web.list.Record({id: id});
+ record = new instance.web.list.Record({id: id});
self.records.add(record, {at: index});
self.dataset.ids.splice(index, 0, id);
}
@@ -368,15 +368,15 @@ openerp.web.list_editable = function (openerp) {
}
});
- openerp.web.ListEditableFormView = openerp.web.FormView.extend({
+ instance.web.ListEditableFormView = instance.web.FormView.extend({
init: function() {
this._super.apply(this, arguments);
- this.rendering_engine = new openerp.web.ListEditableRenderingEngine(this);
+ this.rendering_engine = new instance.web.ListEditableRenderingEngine(this);
},
renderElement: function() {}
});
- openerp.web.ListEditableRenderingEngine = openerp.web.Class.extend({
+ instance.web.ListEditableRenderingEngine = instance.web.Class.extend({
init: function(view) {
this.view = view;
},
@@ -392,7 +392,7 @@ openerp.web.list_editable = function (openerp) {
render_to: function($element) {
var self = this;
- var xml = openerp.web.json_node_to_xml(this.fvg.arch);
+ var xml = instance.web.json_node_to_xml(this.fvg.arch);
var $xml = $(xml);
if (this.view.editable_list.options.selectable)
@@ -412,7 +412,8 @@ openerp.web.list_editable = function (openerp) {
key = $(el).attr('widget') || self.fvg.fields[name].type;
}
var obj = self.view.fields_registry.get_object(key);
- var w = new (obj)(self.view, openerp.web.xml_to_json(el));
+ var w = new (obj)(self.view, instance.web.xml_to_json(el));
+ self.view.register_field(w, $(el).attr("name"));
w.appendTo($td);
$td.appendTo($element);
});
diff --git a/addons/web/static/src/js/view_tree.js b/addons/web/static/src/js/view_tree.js
index 72a643b3d51..9e938fe293a 100644
--- a/addons/web/static/src/js/view_tree.js
+++ b/addons/web/static/src/js/view_tree.js
@@ -2,12 +2,12 @@
* OpenERP web library
*---------------------------------------------------------*/
-openerp.web.view_tree = function(openerp) {
-var QWeb = openerp.web.qweb,
- _lt = openerp.web._lt;
+openerp.web.view_tree = function(instance) {
+var QWeb = instance.web.qweb,
+ _lt = instance.web._lt;
-openerp.web.views.add('tree', 'openerp.web.TreeView');
-openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView# */{
+instance.web.views.add('tree', 'instance.web.TreeView');
+instance.web.TreeView = instance.web.View.extend(/** @lends instance.web.TreeView# */{
display_name: _lt('Tree'),
/**
* Indicates that this view is not searchable, and thus that no search
@@ -17,8 +17,8 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView#
/**
* Genuine tree view (the one displayed as a tree, not the list)
*
- * @constructs openerp.web.TreeView
- * @extends openerp.web.View
+ * @constructs instance.web.TreeView
+ * @extends instance.web.View
*
* @param parent
* @param dataset
@@ -203,7 +203,7 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView#
'fields_view': self.fields_view.arch.children,
'fields': self.fields,
'level': $curr_node.data('level') || 0,
- 'render': openerp.web.format_value,
+ 'render': instance.web.format_value,
'color_for': self.color_for
});
@@ -226,12 +226,12 @@ openerp.web.TreeView = openerp.web.View.extend(/** @lends openerp.web.TreeView#
return this.rpc('/web/treeview/action', {
id: id,
model: this.dataset.model,
- context: new openerp.web.CompoundContext(
+ context: new instance.web.CompoundContext(
this.dataset.get_context(), local_context)
}).pipe(function (actions) {
if (!actions.length) { return; }
var action = actions[0][2];
- var c = new openerp.web.CompoundContext(local_context);
+ var c = new instance.web.CompoundContext(local_context);
if (action.context) {
c.add(action.context);
}
diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js
index 79d3d4cd167..3e4d2056c93 100644
--- a/addons/web/static/src/js/views.js
+++ b/addons/web/static/src/js/views.js
@@ -2,11 +2,11 @@
* OpenERP web library
*---------------------------------------------------------*/
-openerp.web.views = function(session) {
-var QWeb = session.web.qweb,
- _t = session.web._t;
+openerp.web.views = function(instance) {
+var QWeb = instance.web.qweb,
+ _t = instance.web._t;
-session.web.ActionManager = session.web.Widget.extend({
+instance.web.ActionManager = instance.web.Widget.extend({
init: function(parent) {
this._super(parent);
this.inner_action = null;
@@ -52,8 +52,8 @@ session.web.ActionManager = session.web.Widget.extend({
if (run_action) {
this.null_action();
action_loaded = this.do_action(state.action_id);
- session.webclient.menu.has_been_loaded.then(function() {
- session.webclient.menu.open_action(state.action_id);
+ instance.webclient.menu.has_been_loaded.then(function() {
+ instance.webclient.menu.open_action(state.action_id);
});
}
} else if (state.model && state.id) {
@@ -124,31 +124,31 @@ session.web.ActionManager = session.web.Widget.extend({
.contains(action.res_model)) {
var old_close = on_close;
on_close = function () {
- session.webclient.do_reload().then(old_close);
+ instance.webclient.do_reload().then(old_close);
};
}
if (action.target === 'new') {
if (this.dialog == null) {
- this.dialog = new session.web.Dialog(this, { width: '80%' });
+ this.dialog = new instance.web.Dialog(this, { width: '80%' });
if(on_close)
this.dialog.on_close.add(on_close);
} else {
this.dialog_viewmanager.destroy();
}
this.dialog.dialog_title = action.name;
- this.dialog_viewmanager = new session.web.ViewManagerAction(this, action);
+ this.dialog_viewmanager = new instance.web.ViewManagerAction(this, action);
this.dialog_viewmanager.appendTo(this.dialog.$element);
this.dialog.open();
} else {
if(action.menu_id) {
return this.getParent().do_action(action, function () {
- session.webclient.menu.open_menu(action.menu_id);
+ instance.webclient.menu.open_menu(action.menu_id);
});
}
this.dialog_stop();
this.content_stop();
this.inner_action = action;
- this.inner_viewmanager = new session.web.ViewManagerAction(this, action);
+ this.inner_viewmanager = new instance.web.ViewManagerAction(this, action);
this.inner_viewmanager.appendTo(this.$element);
}
},
@@ -170,7 +170,7 @@ session.web.ActionManager = session.web.Widget.extend({
ir_actions_client: function (action) {
this.content_stop();
this.dialog_stop();
- var ClientWidget = session.web.client_actions.get_object(action.tag);
+ var ClientWidget = instance.web.client_actions.get_object(action.tag);
(this.client_widget = new ClientWidget(this, action.params)).appendTo(this.$element);
},
ir_actions_report_xml: function(action, on_closed) {
@@ -192,7 +192,7 @@ session.web.ActionManager = session.web.Widget.extend({
}
self.dialog_stop();
},
- error: session.webclient.crashmanager.on_rpc_error
+ error: instance.webclient.crashmanager.on_rpc_error
})
});
},
@@ -204,7 +204,7 @@ session.web.ActionManager = session.web.Widget.extend({
}
});
-session.web.ViewManager = session.web.Widget.extend({
+instance.web.ViewManager = instance.web.Widget.extend({
template: "ViewManager",
init: function(parent, dataset, views, flags) {
this._super(parent);
@@ -214,7 +214,7 @@ session.web.ViewManager = session.web.Widget.extend({
this.active_view = null;
this.views_src = _.map(views, function(x) {
if (x instanceof Array) {
- var View = session.web.views.get_object(x[1], true);
+ var View = instance.web.views.get_object(x[1], true);
return {
view_id: x[0],
view_type: x[1],
@@ -226,7 +226,7 @@ session.web.ViewManager = session.web.Widget.extend({
});
this.views = {};
this.flags = flags || {};
- this.registry = session.web.views;
+ this.registry = instance.web.views;
this.views_history = [];
},
/**
@@ -376,7 +376,7 @@ session.web.ViewManager = session.web.Widget.extend({
if (this.searchview) {
this.searchview.destroy();
}
- this.searchview = new session.web.SearchView(this, this.dataset, view_id, search_defaults, this.flags.search_view === false);
+ this.searchview = new instance.web.SearchView(this, this.dataset, view_id, search_defaults, this.flags.search_view === false);
this.searchview.on_search.add(this.do_searchview_search);
return this.searchview.appendTo(this.$element.find(".oe_view_manager_view_search"));
@@ -435,13 +435,13 @@ session.web.ViewManager = session.web.Widget.extend({
}
});
-session.web.ViewManagerAction = session.web.ViewManager.extend({
+instance.web.ViewManagerAction = instance.web.ViewManager.extend({
template:"ViewManagerAction",
/**
- * @constructs session.web.ViewManagerAction
- * @extends session.web.ViewManager
+ * @constructs instance.web.ViewManagerAction
+ * @extends instance.web.ViewManager
*
- * @param {session.web.ActionManager} parent parent object/widget
+ * @param {instance.web.ActionManager} parent parent object/widget
* @param {Object} action descriptor for the action this viewmanager needs to manage its views.
*/
init: function(parent, action) {
@@ -466,7 +466,7 @@ session.web.ViewManagerAction = session.web.ViewManager.extend({
this._super(parent, null, action.views, flags);
this.session = parent.session;
this.action = action;
- var dataset = new session.web.DataSetSearch(this, action.res_model, action.context, action.domain);
+ var dataset = new instance.web.DataSetSearch(this, action.res_model, action.context, action.domain);
if (action.res_id) {
dataset.ids.push(action.res_id);
dataset.index = 0;
@@ -507,7 +507,7 @@ session.web.ViewManagerAction = session.web.ViewManager.extend({
this.$element.find('.oe_debug_view').change(this.on_debug_changed);
if (this.action.help && !this.flags.low_profile) {
- var Users = new session.web.DataSet(self, 'res.users'),
+ var Users = new instance.web.DataSet(self, 'res.users'),
$tips = this.$element.find('.oe_view_manager_menu_tips');
$tips.delegate('blockquote button', 'click', function() {
var $this = $(this);
@@ -541,19 +541,19 @@ session.web.ViewManagerAction = session.web.ViewManager.extend({
current_view = this.views[this.active_view].controller;
switch (val) {
case 'fvg':
- var dialog = new session.web.Dialog(this, { title: _t("Fields View Get"), width: '95%' }).open();
- $('<pre>').text(session.web.json_node_to_xml(current_view.fields_view.arch, true)).appendTo(dialog.$element);
+ var dialog = new instance.web.Dialog(this, { title: _t("Fields View Get"), width: '95%' }).open();
+ $('<pre>').text(instance.web.json_node_to_xml(current_view.fields_view.arch, true)).appendTo(dialog.$element);
break;
case 'perm_read':
var ids = current_view.get_selected_ids();
if (ids.length === 1) {
this.dataset.call('perm_read', [ids]).then(function(result) {
- var dialog = new session.web.Dialog(this, {
+ var dialog = new instance.web.Dialog(this, {
title: _.str.sprintf(_t("View Log (%s)"), self.dataset.model),
width: 400
}, QWeb.render('ViewManagerDebugViewLog', {
perm : result[0],
- format : session.web.format_value
+ format : instance.web.format_value
})).open();
});
}
@@ -578,7 +578,7 @@ session.web.ViewManagerAction = session.web.ViewManager.extend({
.append($('<dd style="white-space: pre-wrap;">').text(def));
});
});
- new session.web.Dialog(self, {
+ new instance.web.Dialog(self, {
title: _.str.sprintf(_t("Model %s fields"),
self.dataset.model),
width: '95%'}, $root).open();
@@ -586,7 +586,7 @@ session.web.ViewManagerAction = session.web.ViewManager.extend({
break;
case 'manage_views':
if (current_view.fields_view && current_view.fields_view.arch) {
- var view_editor = new session.web.ViewEditor(current_view, current_view.$element, this.dataset, current_view.fields_view.arch);
+ var view_editor = new instance.web.ViewEditor(current_view, current_view.$element, this.dataset, current_view.fields_view.arch);
view_editor.start();
} else {
this.do_warn(_t("Manage Views"),
@@ -723,7 +723,7 @@ session.web.ViewManagerAction = session.web.ViewManager.extend({
}
});
-session.web.Sidebar = session.web.Widget.extend({
+instance.web.Sidebar = instance.web.Widget.extend({
init: function(parent) {
this._super(parent);
var view = this.getParent();
@@ -832,7 +832,7 @@ session.web.Sidebar = session.web.Widget.extend({
self.getParent().sidebar_context().then(function (context) {
var ids = self.getParent().get_selected_ids();
if (ids.length == 0) {
- session.web.dialog($("<div />").text(_t("You must choose at least one record.")), { title: _t("Warning"), modal: true });
+ instance.web.dialog($("<div />").text(_t("You must choose at least one record.")), { title: _t("Warning"), modal: true });
return false;
}
var additional_context = _.extend({
@@ -860,7 +860,7 @@ session.web.Sidebar = session.web.Widget.extend({
this.on_attachments_loaded([]);
} else {
var dom = [ ['res_model', '=', dataset.model], ['res_id', '=', model_id], ['type', 'in', ['binary', 'url']] ];
- var ds = new session.web.DataSetSearch(this, 'ir.attachment', dataset.get_context(), dom);
+ var ds = new instance.web.DataSetSearch(this, 'ir.attachment', dataset.get_context(), dom);
ds.read_slice(['name', 'url', 'type'], {}).then(this.on_attachments_loaded);
}
},
@@ -908,7 +908,7 @@ session.web.Sidebar = session.web.Widget.extend({
}
});
-session.web.TranslateDialog = session.web.Dialog.extend({
+instance.web.TranslateDialog = instance.web.Dialog.extend({
dialog_title: {toString: function () { return _t("Translations"); }},
init: function(view) {
// TODO fme: should add the language to fields_view_get because between the fields view get
@@ -928,14 +928,14 @@ session.web.TranslateDialog = session.web.Dialog.extend({
this.translatable_fields_keys = _.map(this.view.translatable_fields || [], function(i) { return i.name });
this.languages = null;
this.languages_loaded = $.Deferred();
- (new session.web.DataSetSearch(this, 'res.lang', this.view.dataset.get_context(),
+ (new instance.web.DataSetSearch(this, 'res.lang', this.view.dataset.get_context(),
[['translatable', '=', '1']])).read_slice(['code', 'name'], { sort: 'id' }).then(this.on_languages_loaded);
},
start: function() {
var self = this;
this._super();
$.when(this.languages_loaded).then(function() {
- self.$element.html(session.web.qweb.render('TranslateDialog', { widget: self }));
+ self.$element.html(instance.web.qweb.render('TranslateDialog', { widget: self }));
self.$fields_form = self.$element.find('.oe_translation_form');
self.$fields_form.find('.oe_trad_field').change(function() {
$(this).toggleClass('touched', ($(this).val() != $(this).attr('data-value')));
@@ -1024,7 +1024,7 @@ session.web.TranslateDialog = session.web.Dialog.extend({
}
});
-session.web.View = session.web.Widget.extend({
+instance.web.View = instance.web.Widget.extend({
template: "EmptyComponent",
// name displayed in view switchers
display_name: '',
@@ -1048,7 +1048,7 @@ session.web.View = session.web.Widget.extend({
$.async_when().then(function() {def.resolve(self.embedded_view);});
return def.pipe(this.on_loaded);
} else {
- var context = new session.web.CompoundContext(this.dataset.get_context());
+ var context = new instance.web.CompoundContext(this.dataset.get_context());
if (! this.view_type)
console.warn("view_type is not defined", this);
return this.rpc("/web/view/load", {
@@ -1079,7 +1079,7 @@ session.web.View = session.web.Widget.extend({
},
open_translate_dialog: function(field) {
if (!this.translate_dialog) {
- this.translate_dialog = new session.web.TranslateDialog(this).start();
+ this.translate_dialog = new instance.web.TranslateDialog(this).start();
}
this.translate_dialog.open(field);
},
@@ -1091,7 +1091,7 @@ session.web.View = session.web.Widget.extend({
* @param {String} [action_data.special=null] special action handlers (currently: only ``'cancel'``)
* @param {String} [action_data.type='workflow'] the action type, if present, one of ``'object'``, ``'action'`` or ``'workflow'``
* @param {Object} [action_data.context=null] additional action context, to add to the current context
- * @param {session.web.DataSet} dataset a dataset object used to communicate with the server
+ * @param {instance.web.DataSet} dataset a dataset object used to communicate with the server
* @param {Object} [record_id] the identifier of the object on which the action is to be applied
* @param {Function} on_closed callback to execute when dialog is closed or when the action does not generate any result (no new action)
*/
@@ -1103,12 +1103,12 @@ session.web.View = session.web.Widget.extend({
return self.getParent().on_action_executed.apply(null, arguments);
}
};
- var context = new session.web.CompoundContext(dataset.get_context(), action_data.context || {});
+ var context = new instance.web.CompoundContext(dataset.get_context(), action_data.context || {});
var handler = function (r) {
var action = r.result;
if (action && action.constructor == Object) {
- var ncontext = new session.web.CompoundContext(context);
+ var ncontext = new instance.web.CompoundContext(context);
if (record_id) {
ncontext.add({
active_id: record_id,
@@ -1157,7 +1157,7 @@ session.web.View = session.web.Widget.extend({
/**
* Directly set a view to use instead of calling fields_view_get. This method must
* be called before start(). When an embedded view is set, underlying implementations
- * of session.web.View must use the provided view instead of any other one.
+ * of instance.web.View must use the provided view instead of any other one.
*
* @param embedded_view A view.
*/
@@ -1197,11 +1197,11 @@ session.web.View = session.web.Widget.extend({
do_search: function(view) {
},
on_sidebar_import: function() {
- var import_view = new session.web.DataImport(this, this.dataset);
+ var import_view = new instance.web.DataImport(this, this.dataset);
import_view.start();
},
on_sidebar_export: function() {
- var export_view = new session.web.DataExport(this, this.dataset);
+ var export_view = new instance.web.DataExport(this, this.dataset);
export_view.start();
},
on_sidebar_translate: function() {
@@ -1226,7 +1226,7 @@ session.web.View = session.web.Widget.extend({
}
});
-session.web.xml_to_json = function(node) {
+instance.web.xml_to_json = function(node) {
switch (node.nodeType) {
case 3:
case 4:
@@ -1244,11 +1244,11 @@ session.web.xml_to_json = function(node) {
return {
tag: node.tagName.toLowerCase(),
attrs: attrs,
- children: _.map(node.childNodes, session.web.xml_to_json)
+ children: _.map(node.childNodes, instance.web.xml_to_json)
}
}
}
-session.web.json_node_to_xml = function(node, human_readable, indent) {
+instance.web.json_node_to_xml = function(node, human_readable, indent) {
// For debugging purpose, this function will convert a json node back to xml
// Maybe useful for xml view editor
indent = indent || 0;
@@ -1277,7 +1277,7 @@ session.web.json_node_to_xml = function(node, human_readable, indent) {
r += '>' + cr;
var childs = [];
for (var i = 0, ii = node.children.length; i < ii; i++) {
- childs.push(session.web.json_node_to_xml(node.children[i], human_readable, indent + 1));
+ childs.push(instance.web.json_node_to_xml(node.children[i], human_readable, indent + 1));
}
r += childs.join(cr);
r += cr + sindent + '</' + node.tag + '>';
@@ -1286,14 +1286,14 @@ session.web.json_node_to_xml = function(node, human_readable, indent) {
return r + '/>';
}
}
-session.web.xml_to_str = function(node) {
+instance.web.xml_to_str = function(node) {
if (window.ActiveXObject) {
return node.xml;
} else {
return (new XMLSerializer()).serializeToString(node);
}
}
-session.web.str_to_xml = function(s) {
+instance.web.str_to_xml = function(s) {
if (window.DOMParser) {
var dp = new DOMParser();
var r = dp.parseFromString(s, "text/xml");
@@ -1317,12 +1317,12 @@ session.web.str_to_xml = function(s) {
/**
* Registry for all the client actions key: tag value: widget
*/
-session.web.client_actions = new session.web.Registry();
+instance.web.client_actions = new instance.web.Registry();
/**
* Registry for all the main views
*/
-session.web.views = new session.web.Registry();
+instance.web.views = new instance.web.Registry();
};