LP#1731278 Make webstaff grid column sort stable user/dbwells/lp1731278_preserve_explicit_column_sort
authorDan Wells <dbw2@calvin.edu>
Thu, 15 Mar 2018 18:52:23 +0000 (14:52 -0400)
committerDan Wells <dbw2@calvin.edu>
Thu, 15 Mar 2018 18:57:03 +0000 (14:57 -0400)
As Remington Steed deduced, lack of stable sort in Chrome causes our
webstaff grid "explicit" columns to move around in the process of
sorting the other columns.

As a simplistic fix, let's first record the original order, then keep
any explicit columns in their original order.

Signed-off-by: Dan Wells <dbw2@calvin.edu>
Open-ILS/web/js/ui/default/staff/services/grid.js

index fc3a05b..58b24dc 100644 (file)
@@ -1496,8 +1496,19 @@ angular.module('egGridMod',
                         {idl_parent : idl_parent, idl_field : field, idl_class : class_obj, field_parent_label : old_field_label });
                 });
 
+                angular.forEach(cols.columns, function(col, i) {
+                    col.origPos = i;
+                });
                 cols.columns = cols.columns.sort(
                     function(a, b) {
+                        if (a.explicit && b.explicit) {
+                            if (a.origPos < b.origPos) {
+                                return -1;
+                            } else {
+                                return 1;
+                            }
+                        }
+
                         if (a.explicit) return -1;
                         if (b.explicit) return 1;