From 3334b1c5b3bf0e34d8b6b5c701cc90dd788d4f87 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 1 Aug 2012 18:12:04 +0200 Subject: [PATCH 01/14] [WIP] focus bzr revid: fme@openerp.com-20120801161204-33fag4hhnhdl0g1k --- addons/web/static/src/js/view_form.js | 28 +++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 0aabfbb5480..46595df5256 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -79,6 +79,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM _.defaults(this.options, { "not_interactible_on_create": false, "initial_mode": "view", + "disable_autofocus": false, }); this.is_initialized = $.Deferred(); this.mutating_mutex = new $.Mutex(); @@ -269,9 +270,11 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM if (this.$pager) { this.$pager.show(); } + this.$element.show().css({ + opacity: '0', + filter: 'alpha(opacity = 0)' + }); this.$element.add(this.$buttons).removeClass('oe_form_dirty'); - this.$element.css('visibility', 'visible'); - this._super(); var shown = this.has_been_loaded; if (options.reload !== false) { @@ -291,6 +294,10 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM if (options.editable) { self.to_edit_mode(); } + self.$element.css({ + opacity: '1', + filter: 'alpha(opacity = 100)' + }); }); }, do_hide: function () { @@ -350,6 +357,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM self.do_push_state({id:record.id}); } self.$element.add(self.$buttons).removeClass('oe_form_dirty'); + self.autofocus(); }); }, /** @@ -649,13 +657,21 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM _.each(this.fields,function(field){ field.set({"force_readonly": false}); }); - var fields_order = self.fields_order.slice(0); - if (self.default_focus_field) { - fields_order.unshift(self.default_focus_field.name); + this.autofocus(); + } + }, + autofocus: function() { + if (this.get("actual_mode") === "edit" && !this.options.disable_autofocus) { + var fields_order = this.fields_order.slice(0); + console.log('default focus = ', this.default_focus); + if (this.default_focus_field) { + fields_order.unshift(this.default_focus_field.name); } + console.log(fields_order); for (var i = 0; i < fields_order.length; i += 1) { - var field = self.fields[fields_order[i]]; + var field = this.fields[fields_order[i]]; if (!field.get('effective_invisible') && !field.get('effective_readonly')) { + console.log('FOCUS ', field.name); field.focus(); break; } From 22cc5e45e7048c4e3f6b40587c5018bd647a600a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 1 Aug 2012 18:20:24 +0200 Subject: [PATCH 02/14] [FIX] Do not focus unfocusable fields bzr revid: fme@openerp.com-20120801162024-kzg70c729o371ami --- addons/web/static/src/js/view_form.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 46595df5256..1b104e972d0 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -663,17 +663,15 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM autofocus: function() { if (this.get("actual_mode") === "edit" && !this.options.disable_autofocus) { var fields_order = this.fields_order.slice(0); - console.log('default focus = ', this.default_focus); if (this.default_focus_field) { fields_order.unshift(this.default_focus_field.name); } - console.log(fields_order); for (var i = 0; i < fields_order.length; i += 1) { var field = this.fields[fields_order[i]]; if (!field.get('effective_invisible') && !field.get('effective_readonly')) { - console.log('FOCUS ', field.name); - field.focus(); - break; + if (field.focus() !== false) { + break; + } } } } From 52de6e12a2b6fe31a1b431c756378ee8a216ee79 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 1 Aug 2012 18:49:33 +0200 Subject: [PATCH 03/14] [IMP] Improved focus. Removed delay_focus bzr revid: fme@openerp.com-20120801164933-4nwphx7rt4l4n6ys --- addons/web/static/src/js/view_form.js | 30 +++++++++++---------------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 1b104e972d0..9bb549b9747 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -669,8 +669,11 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM for (var i = 0; i < fields_order.length; i += 1) { var field = this.fields[fields_order[i]]; if (!field.get('effective_invisible') && !field.get('effective_readonly')) { + console.log("trying to focus ", field.name, field); if (field.focus() !== false) { + console.log("----------------- YIPEEEEEEEE"); break; + } else { } } } @@ -1976,14 +1979,7 @@ instance.web.form.AbstractField = instance.web.form.FormWidget.extend(instance.w } }, focus: function() { - }, - /** - * Utility method to focus an element, but only after a small amount of time. - */ - delay_focus: function($elem) { - setTimeout(function() { - $elem[0].focus(); - }, 50); + return false; }, /** * Utility method to get the widget options defined in the field xml description. @@ -2082,7 +2078,7 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(instance.we return this.get('value') === '' || this._super(); }, focus: function() { - this.$element.find('input:first')[0].focus(); + this.$element.find('input:first').focus(); } }); @@ -2302,8 +2298,9 @@ instance.web.form.FieldDatetime = instance.web.form.AbstractField.extend(instanc return this.get('value') === '' || this._super(); }, focus: function() { - if (this.datewidget && this.datewidget.$input) - this.delay_focus(this.datewidget.$input); + if (this.datewidget && this.datewidget.$input) { + this.datewidget.$input.focus(); + } } }); @@ -2358,7 +2355,7 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(instance.we return this.get('value') === '' || this._super(); }, focus: function($element) { - this.delay_focus(this.$textarea); + this.$textarea.focus(); }, do_resize: function(max_height) { max_height = parseInt(max_height, 10); @@ -2451,7 +2448,7 @@ instance.web.form.FieldBoolean = instance.web.form.AbstractField.extend({ this.$checkbox[0].checked = value_; }, focus: function() { - this.delay_focus(this.$checkbox); + this.$checkbox.focus(); } }); @@ -2543,7 +2540,7 @@ instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(instan return !! value_; }, focus: function() { - this.delay_focus(this.$element.find('select:first')); + this.$element.find('select:first').focus(); } }); @@ -2933,7 +2930,7 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(instanc return ! this.get("value"); }, focus: function () { - this.delay_focus(this.$input); + this.$input.focus(); } }); @@ -4691,9 +4688,6 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({ elem.css("color", color); } }, - focus: function() { - return false; - }, }); /** From d880351b6ae82c1ae66ba5c402d193c74ef11926 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 1 Aug 2012 18:58:41 +0200 Subject: [PATCH 04/14] [REM] Removed console.logs bzr revid: fme@openerp.com-20120801165841-nj5jig9txn9m55nh --- addons/web/static/src/js/view_form.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 9bb549b9747..67f1b5c5629 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -669,9 +669,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM for (var i = 0; i < fields_order.length; i += 1) { var field = this.fields[fields_order[i]]; if (!field.get('effective_invisible') && !field.get('effective_readonly')) { - console.log("trying to focus ", field.name, field); if (field.focus() !== false) { - console.log("----------------- YIPEEEEEEEE"); break; } else { } From 1f1770ffb782331b20b05b390348b3240faef393 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 2 Aug 2012 11:39:17 +0200 Subject: [PATCH 05/14] [IMP] Disable autofocus on editable lists bzr revid: fme@openerp.com-20120802093917-3wc9qgek6e2mba5p --- addons/web/static/src/js/view_list_editable.js | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 6c38495d0dc..67909f9c749 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -602,6 +602,7 @@ openerp.web.list_editable = function (instance) { this.form = new (this.options.formView)( this, this.delegate.dataset, false, { initial_mode: 'edit', + disable_autofocus: true, $buttons: $(), $pager: $() }); From 152cc49c3fcefc6e5678cacf85ca5d2455a11f0a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 2 Aug 2012 11:53:26 +0200 Subject: [PATCH 06/14] [FIX] Autofocus on create mode bzr revid: fme@openerp.com-20120802095326-o6gc8jyvd44u9xg2 --- addons/web/static/src/js/view_form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 67f1b5c5629..1132d096d03 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -661,7 +661,7 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM } }, autofocus: function() { - if (this.get("actual_mode") === "edit" && !this.options.disable_autofocus) { + if (this.get("actual_mode") !== "view" && !this.options.disable_autofocus) { var fields_order = this.fields_order.slice(0); if (this.default_focus_field) { fields_order.unshift(this.default_focus_field.name); From e57c69409536b0b5e6706a8b6ec7e5072dfe9784 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Thu, 2 Aug 2012 15:46:48 +0200 Subject: [PATCH 07/14] [FIX] Review the layout of the partners bzr revid: stw@openerp.com-20120802134648-djca908iguoukemd --- openerp/addons/base/res/res_partner.py | 4 ++-- openerp/addons/base/res/res_partner_view.xml | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index d94a7092b45..f6292bdb5bb 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -138,7 +138,7 @@ class res_partner(osv.osv): 'name': fields.char('Name', size=128, required=True, select=True), 'date': fields.date('Date', select=1), 'title': fields.many2one('res.partner.title','Title'), - 'parent_id': fields.many2one('res.partner','Company'), + 'parent_id': fields.many2one('res.partner', 'Owned by'), 'child_ids': fields.one2many('res.partner', 'parent_id', 'Contacts'), 'ref': fields.char('Reference', size=64, select=1), 'lang': fields.selection(_lang_get, 'Language', help="If the selected language is loaded in the system, all documents related to this partner will be printed in this language. If not, it will be english."), @@ -164,7 +164,7 @@ class res_partner(osv.osv): 'street2': fields.char('Street2', size=128), 'zip': fields.char('Zip', change_default=True, size=24), 'city': fields.char('City', size=128), - 'state_id': fields.many2one("res.country.state", 'State', domain="[('country_id','=',country_id)]"), + 'state_id': fields.many2one("res.country.state", 'State'), 'country_id': fields.many2one('res.country', 'Country'), 'country': fields.related('country_id', type='many2one', relation='res.country', string='Country'), # for backward compatibility 'email': fields.char('Email', size=240), diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 27caa708cb6..d30e0a9dd03 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -101,23 +101,23 @@
-
-

- +

- + +
+
- ,