diff options
| author | Martin Geubelle <mge@odoo.com> | 2017-05-30 15:19:05 +0200 |
|---|---|---|
| committer | Martin Geubelle <mge@odoo.com> | 2017-05-31 14:10:13 +0200 |
| commit | a5f139a5041acf3160b07c64d316daf9c033ac5c (patch) | |
| tree | 7dae83ac4b2a38e6caf8d53a8ef471fb62e94298 /addons/web/static/src/js/views/basic/basic_model.js | |
| parent | e116a69f25d3d3dcfa9ee12b34c33d9c3658bb46 (diff) | |
[FIX] web: client-side sort of x2many values
When a ´default_order´ is set on an embedded view for a x2many field,
the sort was only applied server-side, after saving the record. After
adding a record in a x2many, the records were thus not correctly sorted.
We reintroduce here the client-side sort after the x2many modification.
Diffstat (limited to 'addons/web/static/src/js/views/basic/basic_model.js')
| -rw-r--r-- | addons/web/static/src/js/views/basic/basic_model.js | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 595c39103d3..742e59a61c5 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -1151,6 +1151,7 @@ var BasicModel = AbstractModel.extend({ newRecord.fieldsInfo = list.fieldsInfo; newRecord.viewType = list.viewType; list._changes.push(newRecord.id); + this._sortList(list); break; case 'ADD_M2M': // force to use link command instead of create command @@ -1170,6 +1171,7 @@ var BasicModel = AbstractModel.extend({ }); list_records[d.id] = rec; list._changes.push(rec.id); + self._sortList(list); }); // read list's records as we only have their ids and optionally their display_name // (we can't use function readUngroupedList because those records are only in the @@ -2905,9 +2907,12 @@ var BasicModel = AbstractModel.extend({ if (list.orderedBy.length) { // sort records according to ordered_by[0] var order = list.orderedBy[0]; - list.data.sort(function (r1, r2) { - var data1 = self.localData[r1].data; - var data2 = self.localData[r2].data; + var data = list._changes || list.data; + data.sort(function (id1, id2) { + var r1 = self.localData[id1]; + var r2 = self.localData[id2]; + var data1 = r1._changes || r1.data; + var data2 = r2._changes || r2.data; if (data1[order.name] < data2[order.name]) { return order.asc ? -1 : 1; } |
