Patron Statcat Type-To-Select user/khuckins/lp1751353-patron-statcat-tts
authorKyle Huckins <khuckins@catalyte.io>
Mon, 1 Mar 2021 21:22:12 +0000 (21:22 +0000)
committerKyle Huckins <khuckins@catalyte.io>
Fri, 19 Mar 2021 17:26:08 +0000 (17:26 +0000)
- Utilize eg-basic-combobox directive in place of dropdown/text input combination

Signed-off-by: Kyle Huckins <khuckins@catalyte.io>
 Changes to be committed:
modified:   Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
modified:   Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

Open-ILS/src/templates/staff/circ/patron/t_edit.tt2
Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js

index d15538e..f02ff45 100644 (file)
@@ -1078,34 +1078,16 @@ within the "form" by name for validation.
     <div class="col-md-3 reg-field-label">
       <label>{{cat.name()}}</label>
     </div>
-    <div class="col-md-3 reg-field-input">
+
+    <div class="col-md-6">
       <div ng-if="cat.entries().length != 0">
-        <div class="btn-group" uib-dropdown>
-          <button type="button" class="btn btn-default" ng-class="{'ng-invalid': cat.required() == 1 && !stat_cat_entry_maps[cat.id()] }" uib-dropdown-toggle>
-            <span style="padding-right: 5px;">
-              {{stat_cat_entry_maps[cat.id()]}}</span>
-            <span class="caret"></span>
-          </button>
-          <ul uib-dropdown-menu>
-            <li ng-repeat="entry in cat.entries()">
-              <a href
-                ng-click="field_modified();stat_cat_entry_maps[cat.id()]=entry.value()">
-                {{entry.value()}}
-              </a>
-            </li>
-          </ul>
-        </div>
+        <eg-basic-combo-box list="cat.sc_entry_values" class="reg-field-input" selected="selected_statcat_entries[cat.id()]"
+          ng-class="{'ng-invalid': cat.required() == 1 && !cat.sc_entry_values[selected_statcat_entry] }" ng-model="stat_cat_entry_maps[cat.id()]"
+          on-select="field_modified();stat_cat_entry_maps[cat.id()]=selected_statcat_entries[cat.id()];" ng-required="cat.required() == 1">
+        </eg-basic-combo-box>
       </div>
     </div>
 
-    <!-- Stat cat retrieval API uses open-ils.storage under the covers
-        which represents DB bools at 1/0 instead of cstore-style t/f -->
-    <div class="col-md-3 reg-field-input"
-      ng-show="show_field('stat_cats') || hasRequiredStatCat"
-      ng-if="cat.allow_freetext() == '1'">
-      <input type="text" ng-model="stat_cat_entry_maps[cat.id()]"
-        class="form-control" ng-required="cat.required() == 1"/>
-    </div>
 
   </div><!-- show/hide wrapper -->
 </div>
index 0d6394d..035a516 100644 (file)
@@ -1391,9 +1391,22 @@ function($scope , $routeParams , $q , $uibModal , $window , egCore ,
         $scope.stat_cat_entry_maps = prs.stat_cat_entry_maps;
         $scope.stage_user = prs.stage_user;
         $scope.stage_user_requestor = prs.stage_user_requestor;
-
         $scope.user_settings = prs.user_settings;
         prs.user_settings = {};
+        $scope.selected_statcat_entries = [];
+
+        angular.forEach($scope.stat_cats, function(statcat) {
+            statcat.sc_entry_values = statcat.entries().map(entry => {
+                return entry.value();
+            });
+
+            angular.forEach(statcat.entries(), function(entry) {
+                if (entry.value() === $scope.stat_cat_entry_maps[statcat.id()]) {
+                    $scope.selected_statcat_entries[statcat.id()] = entry.value();
+                    $scope.stat_cat_entry_maps[statcat.id()] = entry.value();
+                }
+            });
+        });
 
         // If a default pickup lib is applied to the patron, apply it 
         // to the UI at page load time.  Otherwise, leave the value unset.
@@ -1415,7 +1428,6 @@ function($scope , $routeParams , $q , $uibModal , $window , egCore ,
         // Stat cats are fetched from open-ils.storage, where 't'==1
         $scope.hasRequiredStatCat = prs.stat_cats.filter(
                 function(cat) {return cat.required() == 1} ).length > 0;
-
         $scope.page_data_loaded = true;
 
         prs.set_field_patterns(field_patterns);