client/app/app.js
author rougeronj
Fri, 22 May 2015 17:41:19 +0200
changeset 93 4b167851ee7d
parent 91 f7a844a9079e
child 100 537d330ad7f0
permissions -rw-r--r--
Starting a better management of the 'models' and the requests

(function(){
    'use strict';

    angular.module('ammico', [ 'ngRoute','ammicoHome', 'ammicoMyvisit', 'ammicoBooks', 'ammicoVisites', 'ammicoSlides', 'ammicoSlideshow', 'ammicoSearch', 'ammicoAuth', 'ammicoModels', 'templates' ])
    .config(function($routeProvider) {
        $routeProvider.
        when('/', {
            controller: 'homeCtrl',
            templateUrl: 'home/home.html',
            authRequired: false
        }).
        when('/my_visit', {
            controller: 'my_visitCtrl',
            templateUrl: 'my_visit/my_visit.html',
            authRequired: true
        }).
        when('/books', {
            controller: 'booksCtrl',
            templateUrl: 'books/books.html'
        }).
        when('/books/:idBook', {
            controller: 'bookCtrl',
            templateUrl: 'books/book.html',
            authRequired: true
        }).
        when('/visites', {
            controller: 'visitesCtrl',
            templateUrl: 'visites/visites.html',
            authRequired: true
        }).
        when('/visites/:idVisit', {
            controller: 'visiteCtrl',
            templateUrl: 'visites/visite.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:'@id'});
        this.order = $resource(context.urls.ammicoUrl+'/books/:idBook/order', {idBook:'@id'});
        this.booksSlides = $resource(context.urls.ammicoUrl+'/books/:idBook/slides', {idBook:'@id'});
        this.listSlides= $resource(context.urls.ammicoUrl+'/slides');
        this.slide = $resource(context.urls.ammicoUrl+'/slides/:idSlide', {idSlide:'@id'});
        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');
    });
})();