Lp 1749593: Fix TypeError: Cannot set property 'grid' of undefined
authorJason Stephenson <jason@sigio.com>
Wed, 14 Feb 2018 23:32:46 +0000 (18:32 -0500)
committerKathy Lussier <klussier@masslnc.org>
Sat, 17 Feb 2018 16:41:23 +0000 (11:41 -0500)
Commit b35f0c0 added a reference to the grid in the grid.dataProvider
in services/grid.js in the web staff client.  This is great, but the
dataProvider could be undefined where it was being set.  This leads to
busted grid views and a TypeError in the console.

This commit moves the code down until after a fallback dataProvider is
used when the dataProvider is undefined and thereby avoids both
problems of adding the grid to an undefined dataProvider.

Signed-off-by: Jason Stephenson <jason@sigio.com>
Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Open-ILS/web/js/ui/default/staff/services/grid.js

index 7144970..17fc743 100644 (file)
@@ -178,9 +178,6 @@ angular.module('egGridMod',
                 delete $scope.idField;
 
                 grid.dataProvider = $scope.itemsProvider;
                 delete $scope.idField;
 
                 grid.dataProvider = $scope.itemsProvider;
-                // make grid ref available in get() to set totalCount, if known.
-                // this allows us disable the 'next' paging button correctly
-                grid.dataProvider.grid = grid;
 
                 if (!grid.indexField && grid.idlClass)
                     grid.indexField = egCore.idl.classes[grid.idlClass].pkey;
 
                 if (!grid.indexField && grid.idlClass)
                     grid.indexField = egCore.idl.classes[grid.idlClass].pkey;
@@ -222,6 +219,10 @@ angular.module('egGridMod',
                     });
                 }
 
                     });
                 }
 
+                // make grid ref available in get() to set totalCount, if known.
+                // this allows us disable the 'next' paging button correctly
+                grid.dataProvider.grid = grid;
+
                 grid.dataProvider.columnsProvider = grid.columnsProvider;
 
                 $scope.itemFieldValue = grid.dataProvider.itemFieldValue;
                 grid.dataProvider.columnsProvider = grid.columnsProvider;
 
                 $scope.itemFieldValue = grid.dataProvider.itemFieldValue;