LP1712861 Patron holds wide_holds migration repairs user/berick/lp1712861-notices-column-picker-patron-holds
authorBill Erickson <berickxx@gmail.com>
Wed, 17 Jul 2019 15:23:46 +0000 (11:23 -0400)
committerBill Erickson <berickxx@gmail.com>
Wed, 17 Jul 2019 15:23:50 +0000 (11:23 -0400)
* Update order_by clauses to match supported behavior of wide-holds API.
* Fetch canceled holds display org settings in the initial batch to
  reduce API call count.
* Repaired missing if() block {} wrappers.
* Avoid setting limits/filters based on undefined values.
* Avoid use of $scope variables when not needed.
* Remove debug console.log entry.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/web/js/ui/default/staff/circ/patron/app.js
Open-ILS/web/js/ui/default/staff/circ/patron/holds.js

index a886195..7478c9f 100644 (file)
@@ -38,7 +38,9 @@ angular.module('egPatronApp', ['ngRoute', 'ui.bootstrap', 'egUserBucketMod',
                 'circ.patron_expires_soon_warning',
                 'ui.circ.items_out.lost',
                 'ui.circ.items_out.longoverdue',
-                'ui.circ.items_out.claimsreturned'
+                'ui.circ.items_out.claimsreturned',
+                'circ.holds.canceled.display_count',
+                'circ.holds.canceled.display_age'
             ]).then(function(settings) { 
                 // local settings are cached within egOrg.  Caching them
                 // again in egEnv just simplifies the syntax for access.
index 85b66b4..85e0d51 100644 (file)
@@ -52,16 +52,19 @@ function($scope,  $q,  $routeParams,  egCore,  egUser,  patronSvc, egProgressDia
     var provider = egGridDataProvider.instance({});
     $scope.gridDataProvider = provider;
 
+    var canceled_display_count;
+    var canceled_display_age;
     egCore.org.settings(['circ.holds.canceled.display_count']).then(function(set) {
-        if (set && set['circ.holds.canceled.display_count'])
-            $scope.canceled_display_count = set['circ.holds.canceled.display_count'];
+        if (set && set['circ.holds.canceled.display_count'] !== null /* could be 0 */)
+            canceled_display_count = set['circ.holds.canceled.display_count'];
     });
     egCore.org.settings(['circ.holds.canceled.display_age']).then(function(set) {
-        if (set && set['circ.holds.canceled.display_age'])
+        if (set && set['circ.holds.canceled.display_age']) {
             var d = new Date();
-        console.log(set['circ.holds.canceled.display_age']);
-            d.setSeconds(d.getSeconds() - egCore.date.intervalToSeconds(set['circ.holds.canceled.display_age']));
-            $scope.canceled_display_age = d.toISOString();
+            d.setSeconds(d.getSeconds() - 
+                egCore.date.intervalToSeconds(set['circ.holds.canceled.display_age']));
+            canceled_display_age = d.toISOString();
+        }
     });
 
     patronSvc.hold_ids = [];
@@ -80,23 +83,25 @@ function($scope,  $q,  $routeParams,  egCore,  egUser,  patronSvc, egProgressDia
             fulfillment_time : null
         };
         var order_by = [];
-        var limit;
+        var limit = null;
 
         if ($scope.holds_display == 'alt') {
-            restrictions.cancel_time = {
-                not: null,
-                greater_than: $scope.canceled_display_age
-            };
-            order_by = [{cancel_time : {not: null}}];
-            limit = parseInt($scope.canceled_display_count);
+            restrictions.cancel_time = {not: null};
+            if (canceled_display_age) {
+                restrictions.cancel_time.greater_than = canceled_display_age;
+            }
+            order_by = [{cancel_time : {dir: 'desc'}}];
+            if (canceled_display_count !== null) { // could be 0
+                limit = parseInt(canceled_display_count);
+            }
         } else {
             restrictions.cancel_time = null;
             order_by = [
-                {pickup_lib: {not: 'current_shelf_lib'}},
-                {shelf_time: {not: null}},
-                {frozen: {not: null}},
-                {request_time: {not : null}}],
-            limit = null;
+                {clear_me: {dir: 'desc'}}, // true first
+                {shelf_time: {}},          // oldest first
+                {frozen: {}},              // false first
+                {request_time: {}}         // oldest first
+            ];
         }
 
         egProgressDialog.open({max : 1, value : 0});