123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- 'use strict';
- /* Filters for EventMan(ager) lists of objects. */
- /* Filter for persons (not) registered for a given event. */
- 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.tickets && data.event.tickets.length)) {
- return inputArray;
- }
- for (var x=0; x < data.event.tickets.length; x++) {
- if (!data.includeCancelled && data.event.tickets[x].cancelled) {
- continue;
- }
- registeredIDs.push(data.event.tickets[x]._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;
- }
- }]
- );
- /* Filter that handles splitted words. */
- eventManApp.filter('splittedFilter', ['$filter',
- function($filter) {
- var negate = function(actual, expected) {
- if (expected == 'false') {
- expected = false;
- } else if (expected == 'true') {
- expected = true;
- }
- if (actual.toLowerCase) {
- actual = actual.toLowerCase();
- }
- return actual != expected;
- };
- return function(inputArray, searchText) {
- var wordArray = searchText ? searchText.toLowerCase().split(/\s+/) : [];
- var comparator = false;
- for (var x=0; x < wordArray.length; x++) {
- var filter_item = wordArray[x];
- comparator = false;
- if (!filter_item) {
- continue;
- }
- if (filter_item.indexOf(':') != -1) {
- if (filter_item[0] == '!') {
- comparator = negate;
- filter_item = filter_item.slice(1);
- }
- var filter_item_split = filter_item.split(':', 2);
- filter_item = {};
- filter_item[filter_item_split[0]] = filter_item_split[1];
- }
- inputArray = $filter('filter')(inputArray, filter_item, comparator);
- }
- return inputArray;
- };
- }]
- );
- /* Filter that returns only the (not) registered tickets at an event. */
- eventManApp.filter('registeredFilter', ['$filter',
- function($filter) {
- return function(inputArray, data) {
- if (!data) {
- data = {};
- }
- var returnArray = [];
- for (var x=0; x < inputArray.length; x++) {
- if ((!data.onlyCancelled && !inputArray[x]['cancelled']) ||
- (data.onlyCancelled && inputArray[x]['cancelled']) ||
- data.all) {
- returnArray.push(inputArray[x]);
- }
- }
- return returnArray;
- };
- }]
- );
- /* Filter that implements a generic pagination. */
- eventManApp.filter('pagination', ['$filter',
- function($filter) {
- return function(inputArray, page, itemsPerPage) {
- var begin = (page - 1) * itemsPerPage;
- var end = begin + itemsPerPage;
- return inputArray.slice(begin, end);;
- };
- }]
- );
- /* Filter that returns only the attendees at an event. */
- eventManApp.filter('attendeesFilter', ['$filter',
- function($filter) {
- return function(inputArray) {
- var returnArray = [];
- for (var x=0; x < inputArray.length; x++) {
- if (inputArray[x]['attended'] && !inputArray[x]['cancelled']) {
- returnArray.push(inputArray[x]);
- }
- }
- return returnArray;
- };
- }]
- );
|