LP1683385 AngJS grid avoid dupe auto-fields
authorBill Erickson <berickxx@gmail.com>
Wed, 17 Apr 2019 14:51:45 +0000 (10:51 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Tue, 30 Jul 2019 16:20:20 +0000 (12:20 -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 3998abb..5c9d5f0 100644 (file)
@@ -1584,6 +1584,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