From b7a8f5b7d42fa65954bfae11afecea9728f4e67a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Wed, 20 Jul 2016 13:24:32 +0700 Subject: [PATCH] Call autocompletion when setting record value issue5712 review31371002 --- CHANGELOG | 1 + src/model.js | 17 ++++++++++++++--- src/window.js | 7 +++++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 5ca32cba4c..c2897d874a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,4 @@ +* Call autocompletion when setting record value * Limit readonly state for xxx2Many * Simplify login with single database * Show records names in relate window title diff --git a/src/model.js b/src/model.js index 1de706fc92..77ae7e31da 100644 --- a/src/model.js +++ b/src/model.js @@ -645,6 +645,7 @@ var succeed = function(values, exception) { if (exception === undefined) exception = false; var id2value = {}; + var promises = []; values.forEach(function(e, i, a) { id2value[e.id] = e; }); @@ -664,9 +665,10 @@ } delete value[key]; } - record.set(value); + promises.push(record.set(value)); } } + return jQuery.when.apply(jQuery, promises); }.bind(this); var failed = function() { var failed_values = []; @@ -680,7 +682,7 @@ } failed_values.push(default_values); } - succeed(failed_values, true); + return succeed(failed_values, true); }; this.group.prm = prm.then(succeed, failed); return this.group.prm; @@ -689,6 +691,7 @@ var name, value; var rec_named_fields = ['many2one', 'one2one', 'reference']; var later = {}; + var promises = []; for (name in values) { if (!values.hasOwnProperty(name)) { continue; @@ -728,6 +731,14 @@ this.model.fields[name].set(this, value); this._loaded[name] = true; } + for (var fname in this.model.fields) { + var field = this.model.fields[fname]; + if (field.description.autocomplete && + field.description.autocomplete.length > 0) { + promises.push(this.do_autocomplete(fname)); + } + } + return jQuery.when.apply(jQuery, promises); }, get: function() { var value = {}; @@ -1840,7 +1851,7 @@ promises.push(new_record.set_default(vals, false)); group.add(new_record); } else { - new_record.set(vals); + promises.push(new_record.set(vals)); group.push(new_record); } }); diff --git a/src/window.js b/src/window.js index da241cc8a7..d85cd78d74 100644 --- a/src/window.js +++ b/src/window.js @@ -613,14 +613,17 @@ }.bind(this)); }; var set_preferences = function(preferences) { + var prm; this.screen.current_record.cancel(); - this.screen.current_record.set(preferences); + prm = this.screen.current_record.set(preferences); this.screen.current_record.id = this.screen.model.session.user_id; - this.screen.current_record.validate(null, true).then( + prm.then(function() { + this.screen.current_record.validate(null, true).then( function() { this.screen.display(true); }.bind(this)); + }.bind(this)); dialog.body.append(this.screen.screen_container.el); this.el.modal('show'); };