LP#1452950 Patron reg loading dialog; more caching
authorBill Erickson <berickxx@gmail.com>
Thu, 19 Nov 2015 13:47:09 +0000 (08:47 -0500)
committerGalen Charlton <gmc@esilibrary.com>
Thu, 25 Feb 2016 22:31:58 +0000 (17:31 -0500)
* Hide the patron edit form and show a loading dialog while data loads.
* Cache net access levels and ident types to speed up navigation between
  patron edit and other pages within the patron app.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

index 9caf5e7..a35e9e4 100644 (file)
 </div>
 [% END %]
 
+<!-- progress dialog displayed as we await all data to finish loading -->
+<div class="row" ng-show="!page_data_loaded">
+  <div class="col-md-6 pad-vert">
+    <div class="progress progress-striped active">
+        <div class="progress-bar"  role="progressbar" aria-valuenow="100" 
+              aria-valuemin="0" aria-valuemax="100" style="width: 100%">
+            <span class="sr-only">[% l('Loading...') %]</span>
+        </div>
+    </div>
+  </div>
+</div>
+
+<!-- this div wraps the entire form so we can hide it 
+     until all needed data has been loaded -->
+<div ng-show="page_data_loaded"><!-- form wrapper -->
+
 [% formfield('ac', 'barcode', 'card') %]
 [% formfield('au', 'usrname') %]
 [% formfield('au', 'passwd') %]
   </div>
 </div>
 
-
+</div><!-- /form wrapper -->
index 8b67bee..dca92a8 100644 (file)
@@ -193,13 +193,29 @@ angular.module('egCoreMod')
     };
 
     service.get_ident_types = function() {
-        return egCore.pcrud.retrieveAll('cit', {}, {atomic : true})
-        .then(function(types) { service.ident_types = types });
+        if (egCore.env.cit) {
+            service.ident_types = egCore.env.cit.list;
+            return $q.when();
+        } else {
+            return egCore.pcrud.retrieveAll('cit', {}, {atomic : true})
+            .then(function(types) { 
+                egCore.env.absorbList(types, 'cit')
+                service.ident_types = types 
+            });
+        }
     };
 
     service.get_net_access_levels = function() {
-        return egCore.pcrud.retrieveAll('cnal', {}, {atomic : true})
-        .then(function(levels) { service.net_access_levels = levels });
+        if (egCore.env.cnal) {
+            service.net_access_levels = egCore.env.cnal.list;
+            return $q.when();
+        } else {
+            return egCore.pcrud.retrieveAll('cnal', {}, {atomic : true})
+            .then(function(levels) { 
+                egCore.env.absorbList(levels, 'cnal')
+                service.net_access_levels = levels 
+            });
+        }
     }
 
     service.get_perm_groups = function() {
@@ -538,6 +554,7 @@ angular.module('egCoreMod')
 function PatronRegCtrl($scope, $routeParams, 
     $q, $modal, $window, egCore, patronSvc, patronRegSvc) {
 
+    $scope.page_data_loaded = false;
     $scope.clone_id = $routeParams.clone_id;
     $scope.stage_username = $routeParams.stage_username;
     $scope.patron_id = 
@@ -626,6 +643,9 @@ function PatronRegCtrl($scope, $routeParams,
 
         if ($scope.patron.isnew) 
             set_new_patron_defaults(prs);
+
+        $scope.page_data_loaded = true;
+        console.log('here with ' + $scope.page_data_loaded);
     });
 
     // update the currently displayed field documentation