reset pager.page if needed
[angular-drzb] / app / js / controllers.js
index c3f74b7..fa87a48 100644 (file)
@@ -168,12 +168,19 @@ function ListCtrl($scope, $log, Registration, RegistrationTypes, $filter) {
        $scope.pager = {
                page: 1,
                limit: 10,
-               results: 0,
-               last_page: 0
+               results: 1,
+               last_page: 1
        };
        $scope.search = {};
        $scope.ready = false;
        $scope.filters = [ 'student', 'hpd_member', 'reception', 'dinner' ];
+       $scope.show = {
+               registration_type: true,
+               filters: true,
+               search: true,
+               states: true,
+               pager_numeric: false
+       };
 
        $scope.all_registrations = Registration.query( function() {
                var Counts = {};
@@ -214,9 +221,10 @@ function ListCtrl($scope, $log, Registration, RegistrationTypes, $filter) {
                $log.info('Counts', Counts);
                $scope.Counts = Counts;
 
-//             $scope.list = $scope.all_registrations; // FIXME show all registrations on page loadyy
                $scope.ready = true;
 
+               $scope.reset();
+
        });
 
        $scope.filter_list = function(newVal, oldVal) {
@@ -225,12 +233,12 @@ function ListCtrl($scope, $log, Registration, RegistrationTypes, $filter) {
                var filtered =
                        $filter('filter')($scope.all_registrations, $scope.search);
 
-//             $scope.pager.page = 1;
+               $log.info('pager before apply', $scope.pager);
+
                $scope.pager.results = filtered.length;
                $scope.pager.last_page = Math.ceil( $scope.pager.results / $scope.pager.limit );
-               if ( $scope.pager.page > $scope.pager.last_page ) {
-                       $scope.pager.page = 1;
-               }
+               if ( $scope.pager.page < 1 ) $scope.pager.page = 1;
+               if ( $scope.pager.page > $scope.pager.last_page ) $scope.pager.page = $scope.pager.last_page;
                $log.info('pager', $scope.pager);
 
                var from = ( $scope.pager.page - 1 ) * $scope.pager.limit;
@@ -243,17 +251,18 @@ function ListCtrl($scope, $log, Registration, RegistrationTypes, $filter) {
                }, $scope.list );
                $log.info('list length=', $scope.list.length, "offset=", from);
        };
-       angular.forEach( $scope.filters, function(f) {
-               $scope.$watch('search.'+f, $scope.filter_list);
-               $log.info('watch search.'+f);
-       });
-       $scope.$watch('search.registration_type', $scope.filter_list);
-       $scope.$watch('search.$', $scope.filter_list);
-       $scope.$watch('pager.page', $scope.filter_list);
-       $scope.$watch('pager.limit', $scope.filter_list);
+       $scope.$watch('search', $scope.filter_list, true);
+       $scope.$watch('search.$', $scope.filter_list); // FIXME not included in search true because of $
+       $scope.$watch('pager', $scope.filter_list, true);
 
        $scope.RegistrationTypes = RegistrationTypes;
        $log.info( "RegistrationTypes", RegistrationTypes );
+
+       $scope.reset = function() {
+               $scope.search = { registration_type: '' };
+               $log.info('reset', $scope.search );
+               $scope.pager.page = 1;
+       }
 }