diff options
Diffstat (limited to 'addons/web/static/src')
3 files changed, 13 insertions, 6 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index e4ea88db789..c29f958cc06 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -746,9 +746,9 @@ var FieldOne2Many = FieldX2Many.extend({ if (event && event.target === this && self.view.arch.tag === 'tree' && this.editable) { var command = event.data.changes[this.name]; if (command.operation === 'UPDATE') { - var fieldsChanged = _.keys(command.data); - // FIXME: other fields might have change with onchange - this.renderer.confirmChange(record.data[this.name], command.id, fieldsChanged); + var state = record.data[this.name]; + var fieldNames = state.getFieldNames(); + this.renderer.confirmChange(state, command.id, fieldNames); return $.when(); } } diff --git a/addons/web/static/src/js/views/list/list_editable_renderer.js b/addons/web/static/src/js/views/list/list_editable_renderer.js index 1c1ea35acf2..337d62b1dc1 100644 --- a/addons/web/static/src/js/views/list/list_editable_renderer.js +++ b/addons/web/static/src/js/views/list/list_editable_renderer.js @@ -423,13 +423,19 @@ ListRenderer.include({ * Updates the row of a particular record of the editable list view. * * @param {index} index the index of the record whose row needs updating - * @param {string[]} changed_fields names of the fields which changed + * @param {string[]} changedFields names of the fields which changed * @param {OdooEvent} event the event that triggered the change */ - _updateRow: function (index, changed_fields, event) { + _updateRow: function (index, changedFields, event) { var self = this; var record = this.state.data[index]; - _.each(changed_fields, function (field_name) { + + // filter out fields that are not present in the view. They may come + // from an onchange, but we need to ignore them. + changedFields = _.filter(changedFields, function (fieldName) { + return _.findWhere(self.columns, {name: fieldName}); + }); + _.each(changedFields, function (field_name) { var widget = _.findWhere(self.widgets, {name: field_name}); if (widget && widget.__rowIndex === index) { widget.reset(record, event); diff --git a/addons/web/static/src/js/views/list/list_renderer.js b/addons/web/static/src/js/views/list/list_renderer.js index ad364951815..8cfb9ced65b 100644 --- a/addons/web/static/src/js/views/list/list_renderer.js +++ b/addons/web/static/src/js/views/list/list_renderer.js @@ -62,6 +62,7 @@ var ListRenderer = BasicRenderer.extend({ if (c.attrs.widget === 'handle') { self.hasHandle = true; } + c.name = c.attrs.name; return false; }); this.rowDecorations = _.chain(this.arch.attrs) |
