From 6371d8f8402fa0acb88f35e53d98038ab16de1d9 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 21 Jun 2011 11:15:29 +0200 Subject: [IMP] remove explicit jquery conversion/parsing during list rendering, wastes time for nothing as .append() can handle taking strings as input directly bzr revid: xmo@openerp.com-20110621091529-rx1pah6y5j3gibdt --- addons/base/static/src/js/list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index b4528de5afd..bd2518dcb66 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -571,7 +571,7 @@ openerp.base.ListView.List = Class.extend( /** @lends openerp.base.ListView.List this.$current.remove(); } this.$current = this.$_element.clone(true); - this.$current.empty().append($(QWeb.render('ListView.rows', this))); + this.$current.empty().append(QWeb.render('ListView.rows', this)); }, get_fields_view: function () { // deep copy of view -- cgit v1.2.3 From 1399d19e3e9ff34dd0fa49aa76de28de3f28cf5d Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 21 Jun 2011 12:22:46 +0200 Subject: [FIX] Reload record in form view on_created and on_saved bzr revid: fme@openerp.com-20110621102246-91w528ppy8jf4bmi --- addons/base/static/src/js/form.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index 90357325928..18d6976e99c 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -1,4 +1,3 @@ - openerp.base.form = function (openerp) { openerp.base.views.add('form', 'openerp.base.FormView'); @@ -299,6 +298,7 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV if (success) { success(r); } + this.reload(); } }, /** @@ -333,6 +333,7 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV if (success) { success(_.extend(r, {created: true})); } + this.reload(); } }, do_search: function (domains, contexts, groupbys) { -- cgit v1.2.3 From 41716a15161f35368111e34f1fb4afb19645219a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 21 Jun 2011 14:07:50 +0200 Subject: [IMP] Improved Dialog controller bzr revid: fme@openerp.com-20110621120750-2fo680iuqrzvjcpk --- addons/base/static/src/js/chrome.js | 71 +++++++++++++++++++++++++------------ 1 file changed, 48 insertions(+), 23 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 84aa4acc325..1b886b34ea8 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -739,36 +739,47 @@ openerp.base.Dialog = openerp.base.BaseWidget.extend({ identifier_prefix: 'dialog', init: function (session, options) { this._super(null, session); - options = _.extend({ + this.options = { modal: true, - title: this.dialog_title, - width: '700px', + width: 'auto', min_width: 0, max_width: '100%', - height: '500px', + height: 'auto', min_height: 0, max_height: '100%', + autoOpen: false, buttons: {} - }, options); - - options.width = this.get_width(options.width); - options.min_width = this.get_width(options.min_width); - options.max_width = this.get_width(options.max_width); - options.height = this.get_height(options.height); - options.min_height = this.get_height(options.min_height); - options.max_height = this.get_height(options.max_height); - - if (options.width > options.max_width) options.width = options.max_width; - if (options.width < options.min_width) options.width = options.min_width; - if (options.height > options.max_height) options.height = options.max_height; - if (options.height < options.min_height) options.height = options.min_height; - + }; for (var f in this) { if (f.substr(0, 10) == 'on_button_') { - options.buttons[f.substr(10)] = this[f]; + this.options.buttons[f.substr(10)] = this[f]; } } - this.options = options; + if (options) { + this.set_options(options); + } + }, + set_options: function(options) { + options = options || {}; + options.width = this.get_width(options.width || this.options.width); + options.min_width = this.get_width(options.min_width || this.options.min_width); + options.max_width = this.get_width(options.max_width || this.options.max_width); + options.height = this.get_height(options.height || this.options.height); + options.min_height = this.get_height(options.min_height || this.options.min_height); + options.max_height = this.get_height(options.max_height || this.options.max_width); + + if (options.width !== 'auto') { + if (options.width > options.max_width) options.width = options.max_width; + if (options.width < options.min_width) options.width = options.min_width; + } + if (options.height !== 'auto') { + if (options.height > options.max_height) options.height = options.max_height; + if (options.height < options.min_height) options.height = options.min_height; + } + if (!options.title && this.dialog_title) { + options.title = this.dialog_title; + } + _.extend(this.options, options); }, get_width: function(val) { return this.get_size(val.toString(), $(window.top).width()); @@ -777,7 +788,7 @@ openerp.base.Dialog = openerp.base.BaseWidget.extend({ return this.get_size(val.toString(), $(window.top).height()); }, get_size: function(val, available_size) { - if (val == 'auto') { + if (val === 'auto') { return val; } else if (val.slice(-1) == "%") { return Math.round(available_size / 100 * parseInt(val.slice(0, -1), 10)); @@ -785,12 +796,26 @@ openerp.base.Dialog = openerp.base.BaseWidget.extend({ return parseInt(val, 10); } }, - start: function () { + start: function (auto_open) { this.$dialog = $('
').dialog(this.options); + if (auto_open !== false) { + this.open(); + } this._super(); }, + open: function(options) { + // TODO fme: bind window on resize + if (this.template) { + this.$element.html(this.render()); + } + this.set_options(options); + this.$dialog.dialog(this.options).dialog('open'); + }, + close: function(options) { + this.$dialog.dialog('close'); + }, stop: function () { - this.$dialog("destroy").remove(); + this.$dialog.dialog('destroy'); } }); -- cgit v1.2.3 From 8e20af033151e31aa33d2b751d8aaf9a59080855 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 21 Jun 2011 14:10:02 +0200 Subject: [IMP] Improved CrashManager bzr revid: fme@openerp.com-20110621121002-bqcsuzdfncyb1v24 --- addons/base/static/src/js/chrome.js | 39 +++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 15 deletions(-) (limited to 'addons/base/static/src/js') diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 1b886b34ea8..2bea20fe972 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -819,24 +819,32 @@ openerp.base.Dialog = openerp.base.BaseWidget.extend({ } }); -openerp.base.CrashManager = openerp.base.Controller.extend({ - init: function(session, element_id) { - this._super(session, element_id); +openerp.base.CrashManager = openerp.base.Dialog.extend({ + identifier_prefix: 'dialog_crash', + init: function(session) { + this._super(session); this.session.on_rpc_error.add(this.on_rpc_error); }, - on_rpc_error: function(error) { - var msg = error.message + "\n" + error.data.debug; - this.display_error(msg); + on_button_Ok: function() { + this.close(); }, - display_error: function(message) { - $('
').text(message).dialog({
-            modal: true,
-            buttons: {
-                OK: function() {
-                    $(this).dialog("close");
-                }
-            }
-        });
+    on_rpc_error: function(error) {
+        this.error = error;
+        if (error.code === 200) {
+            this.dialog_title = "OpenERP Warning";
+            this.template = 'DialogWarning';
+            this.open({
+                width: 'auto',
+                height: 'auto'
+            });
+        } else {
+            this.dialog_title = "OpenERP Error";
+            this.template = 'DialogTraceback';
+            this.open({
+                width: '80%',
+                height: '80%'
+            });
+        }
     }
 });
 
@@ -1066,6 +1074,7 @@ openerp.base.WebClient = openerp.base.Controller.extend({
         this.session = new openerp.base.Session("oe_errors");
         this.loading = new openerp.base.Loading(this.session, "oe_loading");
         this.crashmanager =  new openerp.base.CrashManager(this.session);
+        this.crashmanager.start(false);
 
         // Do you autorize this ?
         openerp.base.Controller.prototype.notification = new openerp.base.Notification("oe_notification");
-- 
cgit v1.2.3


From a47c69c873fabb6f7d306254576097ccdf44192a Mon Sep 17 00:00:00 2001
From: Fabien Meghazi 
Date: Tue, 21 Jun 2011 14:11:16 +0200
Subject: [IMP] Set flags for dialog actions

bzr revid: fme@openerp.com-20110621121116-uvaasm0c01devhrg
---
 addons/base/static/src/js/views.js | 7 +++++++
 1 file changed, 7 insertions(+)

(limited to 'addons/base/static/src/js')

diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js
index 4217031a7e3..586292a5561 100644
--- a/addons/base/static/src/js/views.js
+++ b/addons/base/static/src/js/views.js
@@ -398,6 +398,13 @@ openerp.base.View = openerp.base.Controller.extend({
     execute_action: function (action_data, dataset, action_manager, record_id, on_no_action) {
         var handler = function (r) {
             if (r.result && r.result.constructor == Object) {
+                r.result.flags = {
+                    sidebar : false,
+                    search_view : false,
+                    views_switcher : false,
+                    action_buttons : false,
+                    pager : false
+                };
                 action_manager.do_action(r.result);
             } else {
                 on_no_action(r.result);
-- 
cgit v1.2.3


From f90c073f2329a1582bcf36be111ecf5dab76bbe8 Mon Sep 17 00:00:00 2001
From: Fabien Meghazi 
Date: Tue, 21 Jun 2011 14:31:20 +0200
Subject: [IMP] Use CompondContext for button actions

bzr revid: fme@openerp.com-20110621123120-y2kucare2kes52ac
---
 addons/base/static/src/js/views.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'addons/base/static/src/js')

diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js
index 586292a5561..c6ee9e69d71 100644
--- a/addons/base/static/src/js/views.js
+++ b/addons/base/static/src/js/views.js
@@ -416,10 +416,10 @@ openerp.base.View = openerp.base.Controller.extend({
                 result : { type: 'ir.actions.act_window_close' }
             });
         } else {
-            var context = _.extend({}, dataset.context, action_data.context || {});
+            var context = new openerp.base.CompoundContext(dataset.context).add(action_data.context || {});
             switch(action_data.type) {
                 case 'object':
-                    return dataset.call(action_data.name, [[record_id], context], handler);
+                    return dataset.call_and_eval(action_data.name, [[record_id], context], null, 1, handler);
                 case 'action':
                     return this.rpc('/base/action/load', { action_id: parseInt(action_data.name, 10) }, handler);
                 default:
-- 
cgit v1.2.3


From 884aaa86079542a6be8dd3797c50390cf8893e03 Mon Sep 17 00:00:00 2001
From: Fabien Meghazi 
Date: Tue, 21 Jun 2011 14:41:16 +0200
Subject: [FIX] Fixed selection widget. Wrongly select first option when value
 is false

bzr revid: fme@openerp.com-20110621124116-rh6pv2a1v2de186q
---
 addons/base/static/src/js/form.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'addons/base/static/src/js')

diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index 18d6976e99c..7cb36cdc0c2 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -84,6 +84,7 @@ openerp.base.FormView =  openerp.base.View.extend( /** @lends openerp.base.FormV
         this.$element.hide();
     },
     on_record_loaded: function(record) {
+        console.info(record)
         this.touched = false;
         if (record) {
             this.datarecord = record;
@@ -996,7 +997,7 @@ openerp.base.form.FieldSelection = openerp.base.form.Field.extend({
         if (value != null && value !== false) {
             this.$element.find('select').val(value);
         } else {
-            this.$element.find('select')[0].selectedIndex = 0;
+            this.$element.find('select').val('false');
         }
     },
     set_value_from_ui: function() {
-- 
cgit v1.2.3


From 4e9834f4e3a28bfec7678fa6845bfa2abc12f513 Mon Sep 17 00:00:00 2001
From: niv-openerp 
Date: Tue, 21 Jun 2011 14:53:17 +0200
Subject: [imp] small improvements to advanced filters

bzr revid: nicolas.vanhoren@openerp.com-20110621125317-0s7cfk7q8jkflmne
---
 addons/base/static/src/js/search.js | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

(limited to 'addons/base/static/src/js')

diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js
index 4c23f64bcbb..13ca764e7d7 100644
--- a/addons/base/static/src/js/search.js
+++ b/addons/base/static/src/js/search.js
@@ -796,9 +796,6 @@ openerp.base.search.ExtendedSearchGroup = openerp.base.BaseWidget.extend({
         });
         var delete_btn = this.$element.find('.searchview_extended_delete_group');
         delete_btn.click(function (e) {
-            if (_this.parent.children.length == 1)  {
-                _this.parent.hide();
-            }
             _this.stop();
         });
     },
@@ -811,6 +808,11 @@ openerp.base.search.ExtendedSearchGroup = openerp.base.BaseWidget.extend({
         return [].concat(choice == "none" ? ['!'] : [],
             _.map(_.range(_.max([0,props.length - 1])), function() { return op; }),
             props);
+    },
+    stop: function() {
+        if (this.parent.children.length == 1)
+            this.parent.hide();
+        this._super();
     }
 });
 
@@ -838,6 +840,11 @@ openerp.base.search.ExtendedSearchProposition = openerp.base.BaseWidget.extend({
             _this.stop();
         });
     },
+    stop: function() {
+        if (this.parent.children.length == 1)
+            this.parent.stop();
+        this._super();
+    },
     changed: function() {
         var nval = this.$element.find(".searchview_extended_prop_field").val();
         if(this.attrs.selected == null || nval != this.attrs.selected.name) {
-- 
cgit v1.2.3


From 3cb34f3f852fb5bff92090fe3f067df95332e49d Mon Sep 17 00:00:00 2001
From: niv-openerp 
Date: Tue, 21 Jun 2011 15:05:01 +0200
Subject: [imp] small improvements to advanced filters

bzr revid: nicolas.vanhoren@openerp.com-20110621130501-0f1rkr25vv86v8gq
---
 addons/base/static/src/js/search.js | 13 +++++++++++++
 1 file changed, 13 insertions(+)

(limited to 'addons/base/static/src/js')

diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js
index 13ca764e7d7..3c40332ce67 100644
--- a/addons/base/static/src/js/search.js
+++ b/addons/base/static/src/js/search.js
@@ -731,6 +731,7 @@ openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({
         var render = group.render();
         this.$element.find('.searchview_extended_groups_list').append(render);
         group.start();
+        this.check_last_element();
     },
     start: function () {
         this._super();
@@ -771,6 +772,10 @@ openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({
         if(this.$element.hasClass("expanded")) {
             this.$element.toggleClass("folded expanded");
         }
+    },
+    check_last_element: function() {
+        _.each(this.children, function(x) {x.set_last_group(false);});
+        this.children[this.children.length - 1].set_last_group(true);
     }
 });
 
@@ -810,9 +815,17 @@ openerp.base.search.ExtendedSearchGroup = openerp.base.BaseWidget.extend({
             props);
     },
     stop: function() {
+        var parent = this.parent;
         if (this.parent.children.length == 1)
             this.parent.hide();
         this._super();
+        parent.check_last_element();
+    },
+    set_last_group: function(is_last) {
+        if(is_last)
+            this.$element.addClass("last_group");
+        else
+            this.$element.removeClass("last_group");
     }
 });
 
-- 
cgit v1.2.3


From ee1970c2da36571cb05be9f3a67fc3e3a0bbd6d0 Mon Sep 17 00:00:00 2001
From: niv-openerp 
Date: Tue, 21 Jun 2011 16:11:07 +0200
Subject: [imp] small improvement to advanced filters

bzr revid: nicolas.vanhoren@openerp.com-20110621141107-m7xcywalskoujsq0
---
 addons/base/static/src/js/search.js | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

(limited to 'addons/base/static/src/js')

diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js
index 3c40332ce67..cd69ec4f0e8 100644
--- a/addons/base/static/src/js/search.js
+++ b/addons/base/static/src/js/search.js
@@ -759,11 +759,9 @@ openerp.base.search.ExtendedSearch = openerp.base.BaseWidget.extend({
     on_activate: function() {
         this.add_group();
         var table = this.$element.closest("table.oe-searchview-render-line");
-        if(table.css("display") == "none") {
-            table.css("display", "");
-            if(this.$element.hasClass("folded")) {
-                this.$element.toggleClass("folded expanded");
-            }
+        table.css("display", "");
+        if(this.$element.hasClass("folded")) {
+            this.$element.toggleClass("folded expanded");
         }
     },
     hide: function() {
-- 
cgit v1.2.3


From c57a3e0d98229ed66dde92c5caad39f6bc0efdbd Mon Sep 17 00:00:00 2001
From: Fabien Meghazi 
Date: Tue, 21 Jun 2011 16:38:04 +0200
Subject: [FIX] Fixed active_is in context for dialog actions

bzr revid: fme@openerp.com-20110621143804-b51tp8n0a393oixi
---
 addons/base/static/src/js/data.js  |  5 +++--
 addons/base/static/src/js/form.js  | 13 ++++++++++---
 addons/base/static/src/js/views.js | 15 ++++++++++-----
 3 files changed, 23 insertions(+), 10 deletions(-)

(limited to 'addons/base/static/src/js')

diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js
index 1463ca279fa..736c31c1f7b 100644
--- a/addons/base/static/src/js/data.js
+++ b/addons/base/static/src/js/data.js
@@ -287,11 +287,12 @@ openerp.base.DataSet =  openerp.base.Controller.extend( /** @lends openerp.base.
             });
         }
     },
-    default_get: function(fields, callback) {
+    default_get: function(fields, context, callback) {
+        context = context || this.context;
         return this.rpc('/base/dataset/default_get', {
             model: this.model,
             fields: fields,
-            context: this.context
+            context: context
         }, callback);
     },
     create: function(data, callback, error_callback) {
diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index 7cb36cdc0c2..d221872598d 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -42,8 +42,12 @@ openerp.base.FormView =  openerp.base.View.extend( /** @lends openerp.base.FormV
         if (this.embedded_view) {
             return $.Deferred().then(this.on_loaded).resolve({fields_view: this.embedded_view});
         } else {
+            var context = new openerp.base.CompoundContext(this.dataset.context);
+            if (this.view_manager.action && this.view_manager.action.context) {
+                context.add(this.view_manager.action.context);
+            }
             return this.rpc("/base/formview/load", {"model": this.model, "view_id": this.view_id,
-                toolbar:!!this.flags.sidebar}, this.on_loaded);
+                toolbar:!!this.flags.sidebar, context: context}, this.on_loaded);
         }
     },
     on_loaded: function(data) {
@@ -84,7 +88,6 @@ openerp.base.FormView =  openerp.base.View.extend( /** @lends openerp.base.FormV
         this.$element.hide();
     },
     on_record_loaded: function(record) {
-        console.info(record)
         this.touched = false;
         if (record) {
             this.datarecord = record;
@@ -226,8 +229,12 @@ openerp.base.FormView =  openerp.base.View.extend( /** @lends openerp.base.FormV
     },
     on_button_new: function() {
         var self = this;
+        var context = new openerp.base.CompoundContext(this.dataset.context);
+        if (this.view_manager.action && this.view_manager.action.context) {
+            context.add(this.view_manager.action.context);
+        }
         $.when(this.has_been_loaded).then(function() {
-            self.dataset.default_get(_.keys(self.fields_view.fields), function(result) {
+            self.dataset.default_get(_.keys(self.fields_view.fields), context, function(result) {
                 self.on_record_loaded(result.result);
             });
         });
diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js
index c6ee9e69d71..ee910d57cfd 100644
--- a/addons/base/static/src/js/views.js
+++ b/addons/base/static/src/js/views.js
@@ -397,17 +397,22 @@ openerp.base.View = openerp.base.Controller.extend({
      */
     execute_action: function (action_data, dataset, action_manager, record_id, on_no_action) {
         var handler = function (r) {
-            if (r.result && r.result.constructor == Object) {
-                r.result.flags = {
+            var action = r.result;
+            if (action && action.constructor == Object) {
+                action.context = action.context || {};
+                action.context['active_id'] = dataset.ids[dataset.index];
+                action.context['active_ids'] = [dataset.ids[dataset.index]];
+                action.context['active_model'] = dataset.model;
+                action.flags = {
                     sidebar : false,
                     search_view : false,
                     views_switcher : false,
                     action_buttons : false,
                     pager : false
                 };
-                action_manager.do_action(r.result);
+                action_manager.do_action(action);
             } else {
-                on_no_action(r.result);
+                on_no_action(action);
             }
         };
 
@@ -421,7 +426,7 @@ openerp.base.View = openerp.base.Controller.extend({
                 case 'object':
                     return dataset.call_and_eval(action_data.name, [[record_id], context], null, 1, handler);
                 case 'action':
-                    return this.rpc('/base/action/load', { action_id: parseInt(action_data.name, 10) }, handler);
+                    return this.rpc('/base/action/load', { action_id: parseInt(action_data.name, 10), context: context }, handler);
                 default:
                     return dataset.exec_workflow(record_id, action_data.name, handler);
             }
-- 
cgit v1.2.3