controllers.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. 'use strict';
  2. /* Controllers; their method are available where specified with the ng-controller
  3. * directive or for a given route (see app.js). They use some services to
  4. * connect to the backend (see services.js). */
  5. var eventManControllers = angular.module('eventManControllers', []);
  6. /* A controller that can be used to navigate. */
  7. eventManControllers.controller('NavigationCtrl', ['$location',
  8. function ($location) {
  9. this.go = function(url) {
  10. $location.url(url);
  11. };
  12. this.isActive = function (view) {
  13. if (view === $location.path()) {
  14. return true;
  15. }
  16. if (view[view.length-1] !== '/') {
  17. view = view + '/';
  18. }
  19. return $location.path().indexOf(view) == 0;
  20. };
  21. }]
  22. );
  23. /* Controller for a group of date and time pickers. */
  24. eventManControllers.controller('DatetimePickerCtrl', ['$scope',
  25. function ($scope) {
  26. $scope.open = function($event) {
  27. $event.preventDefault();
  28. $event.stopPropagation();
  29. $scope.opened = true;
  30. };
  31. }]
  32. );
  33. eventManControllers.controller('EventsListCtrl', ['$scope', 'Event',
  34. function ($scope, Event) {
  35. $scope.events = Event.all();
  36. $scope.personsOrderProp = 'name';
  37. $scope.eventsOrderProp = '-begin-date';
  38. $scope.remove = function(_id) {
  39. Event.remove({'id': _id}, function() {
  40. $scope.events = Event.all();
  41. });
  42. };
  43. }]
  44. );
  45. eventManControllers.controller('EventDetailsCtrl', ['$scope', 'Event', '$stateParams', '$log',
  46. function ($scope, Event, $stateParams, $log) {
  47. $scope.personsOrderProp = 'name';
  48. $scope.eventsOrderProp = '-begin-date';
  49. if ($stateParams.id) {
  50. $scope.event = Event.get($stateParams);
  51. }
  52. // store a new Event or update an existing one
  53. $scope.save = function() {
  54. // avoid override of event.persons list.
  55. var this_event = angular.copy($scope.event);
  56. if (this_event.persons) {
  57. delete this_event.persons;
  58. }
  59. if (this_event.id === undefined) {
  60. $scope.event = Event.save(this_event);
  61. } else {
  62. $scope.event = Event.update(this_event);
  63. }
  64. $scope.eventForm.$dirty = false;
  65. };
  66. $scope.updateAttendee = function(person, attended) {
  67. $log.debug('EventDetailsCtrl.event_id: ' + $stateParams.id);
  68. $log.debug('EventDetailsCtrl.person_id: ' + person.person_id);
  69. $log.debug('EventDetailsCtrl.attended: ' + attended);
  70. Event.personAttended({
  71. _id: $stateParams.id,
  72. person_id: person.person_id,
  73. 'persons.$.attended': attended
  74. },
  75. function(data) {
  76. $log.debug('EventDetailsCtrl.personAttended.data');
  77. $log.debug(data);
  78. $scope.event.persons = data;
  79. });
  80. };
  81. $scope.removeAttendee = function(person) {
  82. Event.deleteAttendee({
  83. _id: $stateParams.id,
  84. person_id: person.person_id
  85. },
  86. function(data) {
  87. $scope.event.persons = data;
  88. });
  89. };
  90. }]
  91. );
  92. eventManControllers.controller('PersonsListCtrl', ['$scope', 'Person',
  93. function ($scope, Person) {
  94. $scope.persons = Person.all();
  95. $scope.personsOrderProp = 'name';
  96. $scope.eventsOrderProp = '-begin-date';
  97. $scope.remove = function(_id) {
  98. Person.remove({'id': _id}, function() {
  99. $scope.persons = Person.all();
  100. });
  101. };
  102. }]
  103. );
  104. eventManControllers.controller('PersonDetailsCtrl', ['$scope', '$stateParams', 'Person', 'Event', '$log',
  105. function ($scope, $stateParams, Person, Event, $log) {
  106. $scope.personsOrderProp = 'name';
  107. $scope.eventsOrderProp = '-begin-date';
  108. $scope.addToEvent = '';
  109. if ($stateParams.id) {
  110. $scope.person = Person.get($stateParams);
  111. $scope.events = Person.getEvents({_id: $stateParams.id, all: true});
  112. }
  113. // store a new Person or update an existing one
  114. $scope.save = function() {
  115. $log.info($scope.addToEvent);
  116. if ($scope.person.id === undefined) {
  117. $scope.person = Person.save($scope.person);
  118. } else {
  119. $scope.person = Person.update($scope.person);
  120. }
  121. if ($scope.addToEvent) {
  122. var data = angular.copy($scope.person);
  123. data._id = $scope.addToEvent;
  124. data.person_id = $scope.person._id;
  125. data.attended = false;
  126. Event.addAttendee(data);
  127. }
  128. $scope.personForm.$dirty = false;
  129. };
  130. $scope.updateAttendee = function(event, attended) {
  131. $log.debug('PersonDetailsCtrl.event_id: ' + $stateParams.id);
  132. $log.debug('PersonDetailsCtrl.event_id: ' + event.event_id);
  133. $log.debug('PersonDetailsCtrl.attended: ' + attended);
  134. Event.personAttended({
  135. _id: event._id,
  136. person_id: $stateParams.id,
  137. 'persons.$.attended': attended
  138. },
  139. function(data) {
  140. $scope.events = data = Person.getEvents({_id: $stateParams.id, all: true});
  141. }
  142. );
  143. };
  144. $scope.switchRegistered = function(evnt, person, add) {
  145. $log.debug('PersonDetailsCtrl.switchRegistered.event_id: ' + evnt._id);
  146. $log.debug('PersonDetailsCtrl.switchRegistered.person_id: ' + person._id);
  147. $log.debug('PersonDetailsCtrl.switchRegistered.add: ' + add);
  148. if (add) {
  149. var data = angular.copy(person);
  150. data._id = evnt._id;
  151. data.person_id = person._id;
  152. data.attended = true;
  153. Event.addAttendee(data,
  154. function(data) {
  155. $scope.events = Person.getEvents({_id: $stateParams.id, all: true});
  156. }
  157. );
  158. } else {
  159. Event.deleteAttendee({_id: evnt._id, person_id: person._id},
  160. function(data) {
  161. $scope.events = Person.getEvents({_id: $stateParams.id, all: true});
  162. }
  163. );
  164. }
  165. };
  166. }]
  167. );
  168. eventManControllers.controller('FileUploadCtrl', ['$scope', '$log', '$upload', 'Event',
  169. function ($scope, $log, $upload, Event) {
  170. $scope.file = null;
  171. $scope.reply = {};
  172. $scope.events = Event.all();
  173. $scope.upload = function(file, url) {
  174. $log.debug("FileUploadCtrl.upload");
  175. $upload.upload({
  176. url: url,
  177. file: file,
  178. fields: {targetEvent: $scope.targetEvent}
  179. }).progress(function(evt) {
  180. var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
  181. $log.debug('progress: ' + progressPercentage + '%');
  182. }).success(function(data, status, headers, config) {
  183. $scope.file = null;
  184. $scope.reply = angular.fromJson(data);
  185. });
  186. };
  187. }]
  188. );