123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- 'use strict';
- /*
- Copyright 2015 Davide Alberani <da@erlug.linux.it>
- RaspiBO <info@raspibo.org>
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- /* Register our fantastic app. */
- var eventManApp = angular.module('eventManApp', [
- 'ngRoute',
- 'eventManServices',
- 'eventManControllers',
- 'ui.bootstrap',
- 'ui.router',
- 'pascalprecht.translate',
- 'angularFileUpload'
- ]);
- /* Add some utilities to the global scope. */
- eventManApp.run(['$rootScope', '$state', '$stateParams',
- function($rootScope, $state, $stateParams) {
- $rootScope.$state = $state;
- $rootScope.$stateParams = $stateParams;
- }]
- );
- /* Filter that handles splitted words. */
- eventManApp.filter('splittedFilter', ['$filter',
- function($filter) {
- return function(inputArray, searchText) {
- var wordArray = searchText ? searchText.toLowerCase().split(/\s+/) : [];
- for (var x=0; x < wordArray.length; x++) {
- inputArray = $filter('filter')(inputArray, wordArray[x]);
- }
- return inputArray;
- };
- }]
- );
- /* Filter for events that have (or not) information about a registered person. */
- eventManApp.filter('eventWithPersonData', ['$filter',
- function($filter) {
- return function(inputArray, mustBePresent) {
- if (mustBePresent === undefined) {
- mustBePresent = true;
- }
- inputArray = inputArray || [];
- var returnArray = [];
- for (var x=0; x < inputArray.length; x++) {
- var found = inputArray[x].person_data && inputArray[x].person_data.person_id;
- if ((found && mustBePresent) || (!found && !mustBePresent)) {
- returnArray.push(inputArray[x]);
- }
- }
- return returnArray;
- };
- }]
- );
- 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.persons && data.event.persons.length)) {
- return inputArray;
- }
- for (var x=0; x < data.event.persons.length; x++) {
- registeredIDs.push(data.event.persons[x].person_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;
- }
- }]
- );
- /* Directive that can be used to make an input field react to the press of Enter. */
- eventManApp.directive('ngEnter', function () {
- return function (scope, element, attrs) {
- element.bind("keydown keypress", function (event) {
- if(event.which === 13) {
- scope.$apply(function (){
- scope.$eval(attrs.ngEnter);
- });
- event.preventDefault();
- }
- });
- };
- });
- /* Configure the states. */
- eventManApp.config(['$stateProvider', '$urlRouterProvider',
- function($stateProvider, $urlRouterProvider) {
- $urlRouterProvider.otherwise("/events");
- $stateProvider
- .state('events', {
- url: '/events',
- templateUrl: 'events-list.html',
- controller: 'EventsListCtrl'
- })
- .state('event', {
- url: '/event',
- templateUrl: 'event-main.html',
- })
- .state('event.new', {
- url: '/new',
- templateUrl: 'event-edit.html',
- controller: 'EventDetailsCtrl'
- })
- .state('event.edit', {
- url: '/:id/edit',
- templateUrl: 'event-edit.html',
- controller: 'EventDetailsCtrl'
- })
- .state('event.info', {
- url: '/:id',
- templateUrl: 'event-info.html',
- controller: 'EventDetailsCtrl'
- })
- .state('persons', {
- url: '/persons',
- templateUrl: 'persons-list.html',
- controller: 'PersonsListCtrl'
- })
- .state('person', {
- url: '/person',
- templateUrl: 'person-main.html',
- })
- .state('person.new', {
- url: '/new',
- templateUrl: 'person-edit.html',
- controller: 'PersonDetailsCtrl'
- })
- .state('person.edit', {
- url: '/:id/edit',
- templateUrl: 'person-edit.html',
- controller: 'PersonDetailsCtrl'
- })
- .state('person.info', {
- url: '/:id',
- templateUrl: 'person-info.html',
- controller: 'PersonDetailsCtrl'
- })
- .state('import', {
- url: '/import',
- templateUrl: 'import-main.html',
- })
- .state('import.persons', {
- url: '/persons',
- templateUrl: 'import-persons.html',
- controller: 'FileUploadCtrl'
- });
- }
- ]);
|