Browse Source

performance improvements adding an attendee

Davide Alberani 9 years ago
parent
commit
ae813cc3b4
1 changed files with 14 additions and 4 deletions
  1. 14 4
      angular_app/js/controllers.js

+ 14 - 4
angular_app/js/controllers.js

@@ -92,7 +92,6 @@ eventManControllers.controller('EventDetailsCtrl', ['$scope', 'Event', 'Person',
                 return;
             }
             var attendees = 0;
-            $log.info($scope.event.persons.length);
             angular.forEach($scope.event.persons, function(value, key) {
                 if (value.attended) {
                     attendees += 1;
@@ -102,12 +101,22 @@ eventManControllers.controller('EventDetailsCtrl', ['$scope', 'Event', 'Person',
         };
 
         $scope._addPerson = function(person_data) {
+            var original_data = angular.copy(person_data);
             person_data.person_id = person_data._id;
             person_data._id = $stateParams.id;
             person_data.attended = true;
             Event.addPerson(person_data, function() {
-                $scope.event = Event.get($stateParams);
-                $scope.allPersons = Person.all();
+                // This could be improved adding it only locally.
+                //$scope.event.persons.push(person_data);
+                Event.get($stateParams, function(data) {
+                    $scope.event.persons = angular.fromJson(data).persons;
+                });
+                var idx = $scope.allPersons.indexOf(original_data);
+                if (idx != -1) {
+                    $scope.allPersons.splice(idx, 1);
+                } else {
+                    $scope.allPersons = Person.all();
+                }
                 $scope.newPerson = {};
             });
         };
@@ -183,7 +192,8 @@ eventManControllers.controller('PersonDetailsCtrl', ['$scope', '$stateParams', '
         $scope.personsOrderProp = 'name';
         $scope.eventsOrderProp = '-begin-date';
         $scope.addToEvent = '';
-        $scope.customFields = Setting.query({setting: 'person_custom_field'});
+        $scope.customFields = Setting.query({setting: 'person_custom_field',
+            in_persons_list: true});
 
         if ($stateParams.id) {
             $scope.person = Person.get($stateParams);