Browse Source

filter for (un)registered persons at an event

Davide Alberani 9 years ago
parent
commit
1dd7c7ddc3
3 changed files with 28 additions and 3 deletions
  1. 2 2
      angular_app/event-info.html
  2. 25 0
      angular_app/js/app.js
  3. 1 1
      angular_app/js/controllers.js

+ 2 - 2
angular_app/event-info.html

@@ -91,9 +91,9 @@
                                 </tr>
                             </thead>
                             <tbody>
-                                <tr ng-repeat="person in allPersons | filter:newPerson">
+                                <tr ng-repeat="person in allPersons | filter:newPerson | personRegistered:{event: event, present: false}">
                                     <td>
-                                        <strong><a ui-sref="person.info({id: person.person_id})">{{person.name}} {{person.surname}}</a></strong>
+                                        <strong><a ui-sref="person.info({id: person._id})">{{person.name}} {{person.surname}}</a></strong>
                                         <br />
                                         {{person.email}}
                                     </td>

+ 25 - 0
angular_app/js/app.js

@@ -69,6 +69,31 @@ eventManApp.filter('eventWithPersonData', ['$filter',
     }]
 );
 
+eventManApp.filter('personRegistered', ['$filter',
+    function($filter) {
+        return function(inputArray, data) {
+            if (data.present === undefined) {
+                data.present = true;
+            }
+            inputArray = inputArray || [];
+            var returnArray = [];
+            var registeredIDs = [];
+            if (!(data.event && data.event.persons && data.event.persons.length)) {
+                return inputArray;
+            }
+            for (var x=0; x < data.event.persons.length; x++) {
+                registeredIDs.push(data.event.persons[x].person_id);
+            }
+            for (var x=0; x < inputArray.length; x++) {
+                var found = registeredIDs.indexOf(inputArray[x]._id) != -1;
+                if ((found && data.present) || (!found && !data.present)) {
+                    returnArray.push(inputArray[x]);
+                }
+            }
+            return returnArray;
+        }
+    }]
+);
 
 /* Directive that can be used to make an input field react to the press of Enter. */
 eventManApp.directive('ngEnter', function () {

+ 1 - 1
angular_app/js/controllers.js

@@ -96,7 +96,7 @@ eventManControllers.controller('EventDetailsCtrl', ['$scope', 'Event', 'Person',
                     $scope._addAttendee(angular.copy(p));
                 });
             } else {
-                $scope._addAttendee(person);
+                $scope._addAttendee(angular.copy(person));
             }
         };