diff options
| author | Aaron Bohy <aab@odoo.com> | 2017-05-05 10:24:39 +0200 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-05-05 13:31:48 +0200 |
| commit | 18c3dbc2e990531bf2ed411580a4e6a8ca0954b3 (patch) | |
| tree | 4baa63c2417a0050164c0a752cf8dfc389bdf984 /addons/web/static/src/js/fields/relational_fields.js | |
| parent | e8f9bb683d958f0a7efa1e42a53633b72150c32f (diff) | |
[FIX] web: FieldMany2Many with editable lists: save changes
This rev. fixes 2 issues about many2many fields displayed with
an editable list view, occuring when the user edited some values
in the list.
First, the many2many field was re-rendered each time one of its
sub-widgets triggered a 'field_changed' event, and thus the row
the user was editing was no more in edition and the focused field
was no more focused. This was quite annoying.
Second, when the user saved changes made in the editable list view,
only a command 6 (REPLACE_ALL) was sent, so updates of subrecords
were never saved.
Diffstat (limited to 'addons/web/static/src/js/fields/relational_fields.js')
| -rw-r--r-- | addons/web/static/src/js/fields/relational_fields.js | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index d7e65f5c4bf..e9fa7dd09d1 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -588,6 +588,25 @@ var FieldX2Many = AbstractField.extend({ isSet: function () { return true; }, + /** + * @override + * @param {Object} record + * @param {OdooEvent} [ev] an event that triggered the reset action + * @returns {Deferred} + */ + reset: function (record, ev) { + if (ev && ev.target === this && ev.data.changes && this.view.arch.tag === 'tree' && this.editable) { + var command = ev.data.changes[this.name]; + if (command.operation === 'UPDATE') { + var state = record.data[this.name]; + var fieldNames = state.getFieldNames(); + this.renderer.confirmChange(state, command.id, fieldNames); + return $.when(); + } + } + return this._super.apply(this, arguments); + }, + //-------------------------------------------------------------------------- // Private @@ -833,15 +852,6 @@ var FieldOne2Many = FieldX2Many.extend({ */ reset: function (record, ev) { var self = this; - if (ev && ev.target === this && ev.data.changes && self.view.arch.tag === 'tree' && this.editable) { - var command = ev.data.changes[this.name]; - if (command.operation === 'UPDATE') { - var state = record.data[this.name]; - var fieldNames = state.getFieldNames(); - this.renderer.confirmChange(state, command.id, fieldNames); - return $.when(); - } - } return this._super.apply(this, arguments).then(function () { if (ev && ev.target === self && ev.data.changes && self.view.arch.tag === 'tree') { if (ev.data.changes[self.name].operation === 'CREATE') { |
