filters.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. 'use strict';
  2. /* Filters for EventMan(ager) lists of objects. */
  3. /* Filter for persons (not) registered for a given event. */
  4. eventManApp.filter('personRegistered', ['$filter',
  5. function($filter) {
  6. return function(inputArray, data) {
  7. if (data.present === undefined) {
  8. data.present = true;
  9. }
  10. inputArray = inputArray || [];
  11. var returnArray = [];
  12. var registeredIDs = [];
  13. if (!(data.event && data.event.tickets && data.event.tickets.length)) {
  14. return inputArray;
  15. }
  16. for (var x=0; x < data.event.tickets.length; x++) {
  17. if (!data.includeCancelled && data.event.tickets[x].cancelled) {
  18. continue;
  19. }
  20. registeredIDs.push(data.event.tickets[x]._id);
  21. }
  22. for (var x=0; x < inputArray.length; x++) {
  23. var found = registeredIDs.indexOf(inputArray[x]._id) != -1;
  24. if ((found && data.present) || (!found && !data.present)) {
  25. returnArray.push(inputArray[x]);
  26. }
  27. }
  28. return returnArray;
  29. }
  30. }]
  31. );
  32. /* Filter that handles splitted words. */
  33. eventManApp.filter('splittedFilter', ['$filter',
  34. function($filter) {
  35. return function(inputArray, searchText) {
  36. var wordArray = searchText ? searchText.toLowerCase().split(/\s+/) : [];
  37. for (var x=0; x < wordArray.length; x++) {
  38. inputArray = $filter('filter')(inputArray, wordArray[x]);
  39. }
  40. return inputArray;
  41. };
  42. }]
  43. );
  44. /* Filter that returns only the (not) registered tickets at an event. */
  45. eventManApp.filter('registeredFilter', ['$filter',
  46. function($filter) {
  47. return function(inputArray, data) {
  48. if (!data) {
  49. data = {};
  50. }
  51. var returnArray = [];
  52. for (var x=0; x < inputArray.length; x++) {
  53. if ((!data.onlyCancelled && !inputArray[x]['cancelled']) ||
  54. (data.onlyCancelled && inputArray[x]['cancelled']) ||
  55. data.all) {
  56. returnArray.push(inputArray[x]);
  57. }
  58. }
  59. return returnArray;
  60. };
  61. }]
  62. );
  63. /* Filter that returns only the attendees at an event. */
  64. eventManApp.filter('attendeesFilter', ['$filter',
  65. function($filter) {
  66. return function(inputArray) {
  67. var returnArray = [];
  68. for (var x=0; x < inputArray.length; x++) {
  69. if (inputArray[x]['attended'] && !inputArray[x]['cancelled']) {
  70. returnArray.push(inputArray[x]);
  71. }
  72. }
  73. return returnArray;
  74. };
  75. }]
  76. );