changeset 65895a545460 in sao:default
details: https://hg.tryton.org/sao?cmd=changeset&node=65895a545460
description:
        Set sequence order following the new position order

        issue10299
        review334181002
diffstat:

 src/model.js     |  25 +++++++++++++++++++------
 src/view/form.js |   9 ++++++---
 src/view/tree.js |   6 ++++--
 3 files changed, 29 insertions(+), 11 deletions(-)

diffs (102 lines):

diff -r 58ef4f28588e -r 65895a545460 src/model.js
--- a/src/model.js      Thu Apr 22 00:07:18 2021 +0200
+++ b/src/model.js      Thu Apr 22 23:45:00 2021 +0200
@@ -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 -r 58ef4f28588e -r 65895a545460 src/view/form.js
--- a/src/view/form.js  Thu Apr 22 00:07:18 2021 +0200
+++ b/src/view/form.js  Thu Apr 22 23:45:00 2021 +0200
@@ -3264,7 +3264,8 @@
                     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 @@
             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 @@
                         });
                         var sequence = this._sequence();
                         if (sequence) {
-                            screen.group.set_sequence(sequence);
+                            screen.group.set_sequence(
+                                sequence, screen.new_position);
                         }
                     }.bind(this);
 
diff -r 58ef4f28588e -r 65895a545460 src/view/tree.js
--- a/src/view/tree.js  Thu Apr 22 00:07:18 2021 +0200
+++ b/src/view/tree.js  Thu Apr 22 23:45:00 2021 +0200
@@ -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));
                                     }

Reply via email to