filters.js 3.5 KB

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