From a077ee95eb9e332ef1ff6ae7769de1ff08f7f754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 4 Aug 2016 23:57:03 +0200 Subject: [PATCH] Set 'default_rec_name' context key when query default_get The last searched text is used as default rec_name issue4136 review30351002 --- src/model.js | 12 ++++++++---- src/screen.js | 4 ++-- src/view/form.js | 6 ++++-- src/window.js | 2 +- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/model.js b/src/model.js index 77ae7e31da..20aff19e8a 100644 --- a/src/model.js +++ b/src/model.js @@ -161,11 +161,11 @@ } } }; - array.new_ = function(default_, id) { + array.new_ = function(default_, id, rec_name) { var record = new Sao.Record(this.model, id); record.group = this; if (default_) { - record.default_get(); + record.default_get(rec_name); } return record; }; @@ -783,7 +783,7 @@ field_set_client: function(name, value, force_change) { this.model.fields[name].set_client(this, value, force_change); }, - default_get: function() { + default_get: function(rec_name) { var dfd = jQuery.Deferred(); var promises = []; // Ensure promisses is filled before default_get is resolved @@ -795,8 +795,12 @@ } } if (!jQuery.isEmptyObject(this.model.fields)) { + var context = this.get_context(); + if (context.default_rec_name === undefined) { + context.default_rec_name = rec_name; + } var prm = this.model.execute('default_get', - [Object.keys(this.model.fields)], this.get_context()); + [Object.keys(this.model.fields)], context); prm.then(function(values) { if (this.group.parent && this.group.parent_name in this.group.model.fields) { diff --git a/src/screen.js b/src/screen.js index fd9f708ba2..e9fa83adf1 100644 --- a/src/screen.js +++ b/src/screen.js @@ -1009,7 +1009,7 @@ return this.current_record.id; } }, - new_: function(default_) { + new_: function(default_, rec_name) { if (default_ === undefined) { default_ = true; } @@ -1027,7 +1027,7 @@ } else { group = this.group; } - var record = group.new_(default_); + var record = group.new_(default_, undefined, rec_name); group.add(record, this.new_model_position()); this.set_current_record(record); this.display().done(function() { diff --git a/src/view/form.js b/src/view/form.js index 3576d51d51..e62afb98a1 100644 --- a/src/view/form.js +++ b/src/view/form.js @@ -1790,7 +1790,8 @@ var win = new Sao.Window.Form(screen, callback.bind(this), { new_: true, save_current: true, - title: this.attributes.string + title: this.attributes.string, + rec_name: this.entry.val() }); }, key_press: function(event_) { @@ -2774,7 +2775,8 @@ new Sao.Window.Form(screen, callback, { 'new_': true, 'save_current': true, - title: this.attributes.string + title: this.attributes.string, + rec_name: this.entry.val() }); }); } diff --git a/src/window.js b/src/window.js index d85cd78d74..e2c73572fe 100644 --- a/src/window.js +++ b/src/window.js @@ -68,7 +68,7 @@ var switch_prm = form_prm.then(function() { return this.screen.switch_view(view_type).done(function() { if (kwargs.new_) { - this.screen.new_(); + this.screen.new_(undefined, kwargs.rec_name); } }.bind(this)); }.bind(this));