From e5f07651b937cd09c4b177722dd791e6aea4cfdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 22 Apr 2021 23:45:00 +0200 Subject: [PATCH] Set sequence order following the new position order issue10299 review334181002 --- src/model.js | 25 +++++++++++++++++++------ src/view/form.js | 9 ++++++--- src/view/tree.js | 6 ++++-- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/model.js b/src/model.js index a4cedf1219..f0cc6aca1c 100644 --- a/src/model.js +++ b/src/model.js @@ -493,10 +493,15 @@ }; return jQuery.when().then(browse_child); }; - array.set_sequence = function(field) { + array.set_sequence = function(field, position) { var changed = false; var prev = null; - var record, index, update, value; + var record, index, update, value, cmp; + if (position === 0) { + cmp = function(a, b) { return a > b; }; + } else { + cmp = function(a, b) { return a < b; }; + } for (var i=0; i < this.length; i++) { record = this[i]; if (record.get_loaded([field]) || changed || record.id < 0) { @@ -510,12 +515,20 @@ if (value === null) { if (index) { update = true; - } else if (prev && (record.id >= 0)) { - update = record.id < prev.id; + } else if (prev) { + if (record.id >= 0) { + update = cmp(record.id, prev.id); + } else if (position === 0) { + update = true; + } } } else if (value === index) { - if (prev && (record.id >= 0)) { - update = record.id < prev.id; + if (prev) { + if (record.id >= 0) { + update = cmp(record.id, prev.id); + } else if (position === 0) { + update = true; + } } } else if (value <= (index || 0)) { update = true; diff --git a/src/view/form.js b/src/view/form.js index d0ab5be4b5..9dac9a0457 100644 --- a/src/view/form.js +++ b/src/view/form.js @@ -3264,7 +3264,8 @@ function eval_pyson(value){ this.screen.group.load(ids, true); prm = this.screen.display(); if (sequence) { - this.screen.group.set_sequence(sequence); + this.screen.group.set_sequence( + sequence, this.screen.new_position); } } prm.done(function() { @@ -3313,7 +3314,8 @@ function eval_pyson(value){ var sequence = this._sequence(); var update_sequence = function() { if (sequence) { - this.screen.group.set_sequence(sequence); + this.screen.group.set_sequence( + sequence, this.screen.new_position); } }.bind(this); if (this.screen.current_view.type == 'form' || @@ -3394,7 +3396,8 @@ function eval_pyson(value){ }); var sequence = this._sequence(); if (sequence) { - screen.group.set_sequence(sequence); + screen.group.set_sequence( + sequence, screen.new_position); } }.bind(this); diff --git a/src/view/tree.js b/src/view/tree.js index 5ee4f3eff9..19dcdc8078 100644 --- a/src/view/tree.js +++ b/src/view/tree.js @@ -541,7 +541,8 @@ row.rows.forEach(child_redraw); if (this.attributes.sequence) { - row.record.group.set_sequence(this.attributes.sequence); + row.record.group.set_sequence( + this.attributes.sequence, this.screen.new_position); } }.bind(this)); }, @@ -1944,7 +1945,8 @@ .then(function(record) { var sequence = this.tree.attributes.sequence; if (sequence) { - record.group.set_sequence(sequence); + record.group.set_sequence( + sequence, this.tree.screen.new_position); } }.bind(this)); }