move filter to controller to get number of results
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 4 Jan 2013 23:29:20 +0000 (00:29 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 4 Jan 2013 23:29:23 +0000 (00:29 +0100)
this requires ugly cludge to watch search.$

app/js/controllers.js
app/partials/list.html

index 60cbf26..5efb0f8 100644 (file)
@@ -111,11 +111,14 @@ function RegistrationCtrl($scope, $log, Registration, $routeParams, $location, $
 }
 //RegistrationCtrl.$inject = [ '$scope', '$log' ];
 
-function ListCtrl($scope, $log, Registration, RegistrationTypes) {
+function ListCtrl($scope, $log, Registration, RegistrationTypes, $filter) {
 
-       $scope.list = Registration.query( function() {
+       $scope.list = [];
+       $scope.search = {};
+
+       $scope.all_registrations = Registration.query( function() {
                var RegistrationTypeCount = { '': 0 };
-               angular.forEach( $scope.list, function(value, key) {
+               angular.forEach( $scope.all_registrations, function(value, key) {
                        var type = value.user.registration_type;
                        if ( ! angular.isNumber( RegistrationTypeCount[type] ) ) {
                                RegistrationTypeCount[type] = 1;
@@ -130,12 +133,19 @@ function ListCtrl($scope, $log, Registration, RegistrationTypes) {
                });
                $log.info('RegistrationTypeCount', RegistrationTypeCount);
                $scope.RegistrationTypeCount = RegistrationTypeCount;
+
+//             $scope.list = $scope.all_registrations; // FIXME show all registrations on page load
        });
 
+       $scope.filter_list = function(newVal, oldVal) {
+               $scope.list = $filter('filter')($scope.all_registrations, $scope.search);
+               $log.info('filter_list', newVal, oldVal, 'search', $scope.search, 'results', $scope.list);
+       };
+       $scope.$watch('search.registration_type', $scope.filter_list);
+       $scope.$watch('search.$', $scope.filter_list); // $ is skipped by search watch!!
 
        $scope.RegistrationTypes = RegistrationTypes;
        $log.info( "RegistrationTypes", RegistrationTypes );
-       $scope.search = { '$': '' };
 }
 
 
index c7b9f96..f14a8bd 100644 (file)
@@ -21,6 +21,7 @@
 Search:
 <input ng-model="search.$">
 <input type=button value="X" ng-click="search.$ = ''">
+<b>{{list.length}} results</b>
 <tt>{{search}}</tt>
 </div>
 
@@ -28,7 +29,7 @@ Search:
 
 
 <ol>
-<li ng-repeat="registration in list | filter:search">
+<li ng-repeat="registration in list">
  <a href="#/registration/{{registration.id}}">edit</a>
  {{registration.user.registration_type}}
  <tt ng-click="debug = 1" title="click to show JSON">{{registration._id}}</tt>