diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-10-25 14:57:24 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-10-25 14:57:24 +0200 |
| commit | 693f8dc68add34663f798370b4aea305f573f16d (patch) | |
| tree | dbd47871d9412317dc96fd4ba349196badab199c /addons/web/static/src/js/fields | |
| parent | c7a6409fac80a2d33006ab56fe40d27f2acd2cfd (diff) | |
| parent | 7bfde6e05d12be959d04f4842237bfcc05f3c93f (diff) | |
[MERGE] forward port branch saas-16 up to 7bfde6e05d1
Diffstat (limited to 'addons/web/static/src/js/fields')
| -rw-r--r-- | addons/web/static/src/js/fields/abstract_field.js | 3 | ||||
| -rw-r--r-- | addons/web/static/src/js/fields/basic_fields.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/fields/relational_fields.js | 16 |
3 files changed, 18 insertions, 3 deletions
diff --git a/addons/web/static/src/js/fields/abstract_field.js b/addons/web/static/src/js/fields/abstract_field.js index cef45c2a976..fc29ba77466 100644 --- a/addons/web/static/src/js/fields/abstract_field.js +++ b/addons/web/static/src/js/fields/abstract_field.js @@ -391,6 +391,8 @@ var AbstractField = Widget.extend({ * Please do not use this flag unless you really need it. Our only use * case is currently the pad widget, which does a _setValue in the * renderEdit method. + * @param {boolean} [options.notifyChange=true] if false, the basic model + * will not notify and not trigger the onchange, even though it was changed. * @param {boolean} [options.forceChange=false] if true, the change event will be * triggered even if the new value is the same as the old one * @returns {Deferred} @@ -421,6 +423,7 @@ var AbstractField = Widget.extend({ changes: changes, viewType: this.viewType, doNotSetDirty: options && options.doNotSetDirty, + notifyChange: !options || options.notifyChange !== false, onSuccess: def.resolve.bind(def), onFailure: def.reject.bind(def), }); diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 8eae8f5b8f1..549b2e256be 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -205,7 +205,7 @@ var InputField = DebouncedField.extend({ if (!event || event === this.lastChangeEvent) { this.isDirty = false; } - if (this.isDirty || (event && event.target === this)) { + if (this.isDirty || (event && event.target === this && event.data.changes[this.name] === this.value)) { return $.when(); } else { return this._render(); diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index c4422285ae7..f2cacb3327f 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -1033,13 +1033,25 @@ var FieldX2Many = AbstractField.extend({ */ _onResequence: function (event) { var self = this; - _.each(event.data.rowIDs, function (rowID, index) { + var rowIDs = event.data.rowIDs.slice(); + var rowID = rowIDs.pop(); + var defs = _.map(rowIDs, function (rowID, index) { var data = {}; data[event.data.handleField] = event.data.offset + index; - self._setValue({ + return self._setValue({ operation: 'UPDATE', id: rowID, data: data, + }, { + notifyChange: false, + }); + }); + $.when.apply($, defs).then(function () { + // trigger only once the onchange for parent record + self._setValue({ + operation: 'UPDATE', + id: rowID, + data: _.object([event.data.handleField], [event.data.offset + rowIDs.length]), }); }); }, |
