webstaff: Use custom filter function to avoid problems with null and undef
authorMike Rylander <mrylander@gmail.com>
Wed, 5 Jul 2017 20:30:56 +0000 (16:30 -0400)
committerMike Rylander <mrylander@gmail.com>
Wed, 5 Jul 2017 20:30:56 +0000 (16:30 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/web/js/ui/default/staff/services/ui.js

index 4c319d0..c3d5db2 100644 (file)
@@ -463,7 +463,7 @@ function($window , egStrings) {
                 '<div class="input-group-btn" dropdown ng-class="{open:isopen}">'+
                     '<button type="button" ng-click="showAll()" class="btn btn-default dropdown-toggle"><span class="caret"></span></button>'+
                     '<ul class="dropdown-menu dropdown-menu-right">'+
-                        '<li ng-repeat="item in list|filter:selected"><a href ng-click="changeValue(item)">{{item}}</a></li>'+
+                        '<li ng-repeat="item in list|filter:selected:compare"><a href ng-click="changeValue(item)">{{item}}</a></li>'+
                         '<li ng-if="complete_list" class="divider"><span></span></li>'+
                         '<li ng-if="complete_list" ng-repeat="item in list"><a href ng-click="changeValue(item)">{{item}}</a></li>'+
                     '</ul>'+
@@ -477,6 +477,12 @@ function($window , egStrings) {
                 $scope.clickedopen = false;
                 $scope.clickedclosed = null;
 
+                $scope.compare = function (ex, act) {
+                    if (act === null || act === undefined) return true;
+                    if (act.toString) act = act.toString();
+                    return new RegExp(act.toLowerCase()).test(ex)
+                }
+
                 $scope.showAll = function () {
 
                     $scope.clickedopen = !$scope.clickedopen;
@@ -489,8 +495,8 @@ function($window , egStrings) {
                         $scope.clickedclosed = !$scope.clickedopen;
                     }
 
-                    if ($scope.selected.length > 0) $scope.complete_list = true;
-                    if ($scope.selected.length == 0) $scope.complete_list = false;
+                    if ($scope.selected && $scope.selected.length > 0) $scope.complete_list = true;
+                    if (!$scope.selected || $scope.selected.length == 0) $scope.complete_list = false;
                     $scope.makeOpen();
                 }
 
@@ -499,7 +505,10 @@ function($window , egStrings) {
                         $scope.list,
                         $scope.selected
                     ).length > 0 && $scope.selected.length > 0);
-                    if ($scope.clickedclosed) $scope.isopen = false;
+                    if ($scope.clickedclosed) {
+                        $scope.isopen = false;
+                        $scope.clickedclosed = null;
+                    }
                 }
 
                 $scope.changeValue = function (newVal) {