LP1683385 AngJS grid avoid dupe auto-fields user/gmcharlt/lp1683385_angjs-grid-dedupe-fields-signoff
authorBill Erickson <berickxx@gmail.com>
Wed, 17 Apr 2019 14:51:45 +0000 (10:51 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Thu, 23 May 2019 18:14:24 +0000 (14:14 -0400)
When generating grid fields from an IDL class in the AngJS grid, avoid
adding any fields that match fields already defined in the markup.

An example of such a grid is the Pending Item Buckets page.

To test
-------
[1] Go to Item Buckets and add an item to the Pending Items page.
[2] Note that in the column picker there are two barcode fields,
    one that hyperlinks the item and one that does not.
[3] Apply the patch and repeat steps 1-2.
[4] This time, there is only one barcode column (the one that
    hyperlinks the results).

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/web/js/ui/default/staff/services/grid.js

index 9ee646a..f16bd75 100644 (file)
@@ -1513,6 +1513,9 @@ angular.module('egGridMod',
                 idl_class.fields,
                 function(field) {
                     if (field.virtual) return;
+                    // Columns declared in the markup take precedence
+                    // of matching auto-columns.
+                    if (cols.findColumn(field.name)) return;
                     if (field.datatype == 'link' || field.datatype == 'org_unit') {
                         // if the field is a link and the linked class has a
                         // "selector" field specified, use the selector field