LP#1452950 Patron reg field validation (WIP) user/berick/lp1452950-web-client-patron-reg-validation
authorBill Erickson <berickxx@gmail.com>
Thu, 25 Feb 2016 04:07:54 +0000 (23:07 -0500)
committerBill Erickson <berickxx@gmail.com>
Thu, 25 Feb 2016 04:07:54 +0000 (23:07 -0500)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

index c1e769e..2bf392e 100644 (file)
 
     [% IF field == 'alert_message' %]
       <textarea ng-change="field_modified()" 
+        ng-blur="handle_field_changed(patron, '[% field %]')"
         class="form-control" ng-model="[% model %]"/>
     [% ELSIF field == 'post_code' %]
       <input type="text" ng-change="field_modified()" 
-        ng-blur="post_code_changed(patron.[% path %])"
+        ng-blur="handle_field_changed(patron.[% path %], 'post_code')"
         class="form-control" ng-model="[% model %]"/>
     [% ELSIF field == 'barcode' %]
       <input type="text" 
         focus-me="focus_bc"
         ng-change="field_modified()" 
         ng-disabled="disable_bc"
-        ng-blur="barcode_changed(patron.card.barcode)"
+        ng-blur="handle_field_changed(patron.card, 'barcode')"
         class="form-control" ng-model="[% model %]"/>
     [% ELSIF field == 'usrname' %]
       <input type="text" 
         focus-me="focus_usrname"
         ng-change="field_modified()" 
-        ng-blur="usrname_changed(patron.usrname)"
+        ng-blur="handle_field_changed(patron, '[% field %]')"
         class="form-control" ng-model="[% model %]"/>
     [% ELSIF field == 'day_phone' %]
       <input type="text" 
-        ng-blur="day_phone_changed(patron.day_phone)"
+        ng-blur="handle_field_changed(patron, 'day_phone')"
         ng-change="field_modified()" 
         class="form-control" ng-model="[% model %]"/>
     [% ELSIF field.match('phone') %]
       <input type="text" 
         ng-change="field_modified()" 
-        ng-blur="dupe_value_changed('phone', patron.[% field %])"
+        ng-blur="handle_field_changed(patron, '[% field %]')"
         class="form-control" ng-model="[% model %]"/>
     [% ELSIF field.match('ident_value') %]
       <input type="text" 
         ng-change="field_modified()" 
-        ng-blur="dupe_value_changed('ident', patron.[% field %])"
+        ng-blur="handle_field_changed(patron, '[% field %]')"
         class="form-control" ng-model="[% model %]"/>
     [% ELSIF field == 'first_given_name' OR field == 'family_name' %]
       <input type="text" 
         ng-change="field_modified()" 
-        ng-blur="dupe_value_changed('name', patron.[% field %])"
+        ng-blur="handle_field_changed(patron, '[% field %]')"
         class="form-control" ng-model="[% model %]"/>
     [% ELSIF field == 'email' %]
       <input type="[% input_type %]" 
         ng-change="field_modified()" 
-        ng-blur="dupe_value_changed('email', patron.email)"
+        ng-blur="handle_field_changed(patron, '[% field %]')"
         class="form-control" ng-model="[% model %]"/>
     [% ELSIF field.match('street') OR field == 'city' %]
       <!-- note: passing address object to dupe_value_changed -->
       <input type="[% input_type %]" 
         ng-change="field_modified()" 
-        ng-blur="dupe_value_changed('address', patron.[% path %])"
+        ng-blur="handle_field_changed(patron.[% path %], '[% field %]')"
         class="form-control" ng-model="[% model %]"/>
     [% ELSE %]
       <input type="[% input_type %]" 
index 1e78455..ac9a474 100644 (file)
@@ -1226,6 +1226,7 @@ function PatronRegCtrl($scope, $routeParams,
     }
 
     $scope.day_phone_changed = function(phone) {
+        console.log('patron day phone changed to ' + phone);
         if (phone && $scope.patron.isnew && 
             $scope.org_settings['patron.password.use_phone']) {
             $scope.patron.passwd = phone.substr(-4);
@@ -1403,6 +1404,62 @@ function PatronRegCtrl($scope, $routeParams,
         });
     }
 
+    // obj could be the patron, an address, etc.
+    $scope.handle_field_changed = function(obj, field_name) {
+
+        var cls = obj.classname; // set by egIdl
+        var value = obj[field_name];
+
+        console.log('changing field ' + field_name + ' to ' + value);
+
+        switch (field_name) {
+            case 'day_phone' : 
+                if ($scope.patron.day_phone && 
+                    $scope.patron.isnew && 
+                    $scope.org_settings['patron.password.use_phone']) {
+                    $scope.patron.passwd = phone.substr(-4);
+                }
+            case 'evening_phone' : 
+            case 'other_phone' : 
+                $scope.dupe_value_changed('phone', value);
+                break;
+
+            case 'ident_value':
+            case 'ident_value2':
+                $scope.dupe_value_changed('ident', value);
+                break;
+
+            case 'first_given_name':
+            case 'family_name':
+                $scope.dupe_value_changed('name', value);
+                break;
+
+            case 'email':
+                $scope.dupe_value_changed('email', value);
+                break;
+
+            case 'street1':
+            case 'street2':
+            case 'city':
+                // dupe search on address wants the address object as the value.
+                $scope.dupe_value_changed('address', obj);
+                break;
+
+            case 'post_code':
+                $scope.post_code_changed(obj);
+                break;
+
+            case 'usrname':
+                // TODO: check dupe usernames
+                break;
+
+            case 'barcode':
+                $scope.barcode_changed(value);
+                break;
+        }
+    }
+
+
     $scope.edit_passthru.save = function(save_args) {
         if (!save_args) save_args = {};