client/app/app.js
author rougeronj
Wed, 08 Apr 2015 00:36:37 +0200
changeset 77 ee963d1c409b
parent 57 388b29d38b44
child 91 f7a844a9079e
permissions -rw-r--r--
Add new serializer for the data send by Orpheo. We receive XML so we parse it to json. Then we parse some html to get the proper data of each attribute. Add xmlToJson parser module to requirements.txt

(function(){
	'use strict';

	angular.module('ammico', [ 'ngRoute','ammicoHome', 'ammicoBooks', 'ammicoSlides', 'ammicoSlideshow', 'ammicoSearch', 'ammicoAuth', 'templates' ])
	.config(function($routeProvider) {
		$routeProvider.
		when('/', {
			controller: 'homeCtrl',
			templateUrl: 'home/home.html',
			authRequired: false
		}).
		when('/books', {
			controller: 'booksCtrl',
			templateUrl: 'books/books.html',
			authRequired: true
		}).
		when('/books/:idBook', {
			controller: 'bookCtrl',
			templateUrl: 'books/book.html',
			authRequired: true
		}).
		when('/slide/:idSlide', {
			controller: 'slidesCtrl',
			templateUrl: 'slides/slides.html',
			authRequired: true
		}).
		when('/slideshow/', {
			controller: 'slideshowCtrl',
			templateUrl: 'slideshow/slideshow.html',
			authRequired: true
		}).
		when('/slideshow/:iSlide', {
			controller: 'slideshowCtrl',
			templateUrl: 'slideshow/slideshow.html',
			authRequired: true
		}).
		when('/search/:q', {
			controller: 'searchCtrl',
			templateUrl: 'search/search.html',
			authRequired: true
		}).
		when('/auth/:action', {
			controller: 'authCtrl',
			templateUrl: 'home/home.html',
			authRequired: false
		}).
		otherwise({
			redirectTo: '/'
		});
	})
	.run( function($rootScope, $location, $window, $http) {
		$rootScope.globals = {};
		if ($window.sessionStorage.token) {
			$rootScope.globals.userLogged = true;
			$http.defaults.headers.common.Authorization = 'Token ' + $window.sessionStorage.token;
		}
		$rootScope.$on( '$routeChangeStart', function(event, next) {
			if (next.authRequired && !$rootScope.globals.userLogged) {
				$location.path( '/auth/login' );
			}
		});
	})
	.service('searchApi', function($resource, context) {
		this.searchResource = function(params){
			return $resource(context.urls.searchUrl,  
					{
				callback: 'JSON_CALLBACK'
					},
					{
						getJsonp: {
							method: 'JSONP',
							params: params,
							isArray: false,
							transformResponse: function(data){
								// Transform meta list into meta dict
								var nb = data.hits.length;
								for(var i=0;i<nb;i++){
									var nb_metas = data.hits[i].metas.length;
									data.hits[i].metas_dict = {};
									for(var j=0;j<nb_metas;j++){
										if(typeof data.hits[i].metas[j].images==='undefined'){
											data.hits[i].metas_dict[data.hits[i].metas[j].name] = data.hits[i].metas[j].value;
										}
										else{
											data.hits[i].metas_dict.images = data.hits[i].metas[j].images[0].value;
										}
									}
								}
								return data;
							}
						}
					});
		};
	})
	.service('ammicoApi', function($resource, context, $sce) {
		this.listBooks = $resource(context.urls.ammicoUrl+'/books');
		this.book = $resource(context.urls.ammicoUrl+'/books/:idBook', {idBook:'@idBook'});
		this.order = $resource(context.urls.ammicoUrl+'/books/:idBook/order', {idBook:'@idBook'});
		this.booksSlides = $resource(context.urls.ammicoUrl+'/books/:idBook/slides', {idBook:'@idBook'});
		this.listSlides= $resource(context.urls.ammicoUrl+'/slides');
		this.slide = $resource(context.urls.ammicoUrl+'/slides/:idSlide', {idSlide:'@idSlide'});
		this.sanitizeUrls = function(data){
			data.details.audio = $sce.trustAsResourceUrl(data.details.audio);
			data.details.video = $sce.trustAsResourceUrl(data.details.video);
			data.audio = $sce.trustAsResourceUrl(data.audio);
			data.video = $sce.trustAsResourceUrl(data.video);
			return data;
		};
	})
	.service('authApi', function($resource, context) {
		this.login = $resource(context.urls.ammicoUrl+'/auth/api-token-auth');
		this.logout = $resource(context.urls.ammicoUrl+'/auth/logout');
		this.user = $resource(context.urls.ammicoUrl+'/auth/user');
		this.test = $resource(context.urls.ammicoUrl+'/auth/auth');
	});
})();