client/app/components/app_service.js
changeset 99 c7c424e9eed5
parent 93 4b167851ee7d
child 106 cb13a9009bf5
equal deleted inserted replaced
98:e165f7647ae3 99:c7c424e9eed5
     1 
     1 
     2 (function(){
     2 (function(){
     3     'use strict';
     3     'use strict';
     4     
     4     
     5     angular.module('ammicoModels', ['ngRoute'])
     5     angular.module('ammicoCommon', ['ngRoute'])
     6     .factory('Book', function($resource, context) {
     6     .factory('Book', function($resource, context) {
     7         var books = $resource(context.urls.ammicoUrl+'/books/:idBook', {idBook:'@id'});
     7         var books = $resource(context.urls.ammicoUrl+'/books/:idBook', {idBook:'@id'}, {update: { method: 'PUT'}});
     8         //return $resource('/api/posts/:id');
       
     9         return books;
     8         return books;
    10     })
     9     })
    11     .factory('Slide', function($resource, context) {
    10     .factory('Slide', function($resource, context) {
    12         return $resource(context.urls.ammicoUrl+'/slides/:idSlide', {idSlide:'@id'});
    11         var slides = $resource(context.urls.ammicoUrl+'/slides/:idSlide', {idSlide:'@id'}, {update: { method: 'PUT'}});
    13         //return $resource('/api/posts/:id');
    12         
       
    13         angular.extend(slides.prototype, {
       
    14 
       
    15             toggleFavorite: function () {
       
    16                 this.favorite = !this.favorite;
       
    17                 this.$update();
       
    18             },
       
    19             remove: function (array) {
       
    20                 var _this = this;
       
    21                 if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
       
    22                     this.$delete(function(){
       
    23                         if (array){
       
    24                             array.splice(array.indexOf(_this), 1);
       
    25                         }
       
    26                     },
       
    27                     function(error) {
       
    28                         if (error.status === 404 && array){
       
    29                                 array.splice(array.indexOf(_this), 1);
       
    30                         }
       
    31                     });
       
    32                 }
       
    33             }
       
    34         });
       
    35         
       
    36         return slides;
       
    37     })
       
    38     .factory('Order', function($resource, context) {
       
    39         return $resource(context.urls.ammicoUrl+'/books/:idBook/order', {idBook:'@id'});
       
    40     })
       
    41     .service('Utils', function($resource, context, $sce) {
       
    42         this.sanitizeUrls = function(data){
       
    43             data.details.audio = $sce.trustAsResourceUrl(data.details.audio);
       
    44             data.details.video = $sce.trustAsResourceUrl(data.details.video);
       
    45             data.audio = $sce.trustAsResourceUrl(data.audio);
       
    46             data.video = $sce.trustAsResourceUrl(data.video);
       
    47             console.log(data);
       
    48             return data;
       
    49         };
       
    50     })
       
    51     .service('authApi', function($resource, context) {
       
    52         this.login = $resource(context.urls.ammicoUrl+'/auth/api-token-auth');
       
    53         this.logout = $resource(context.urls.ammicoUrl+'/auth/logout');
       
    54         this.user = $resource(context.urls.ammicoUrl+'/auth/user');
       
    55         this.test = $resource(context.urls.ammicoUrl+'/auth/auth');
       
    56     })
       
    57     .service('searchApi', function($resource, context) {
       
    58         this.searchResource = function(params){
       
    59             return $resource(context.urls.searchUrl,  
       
    60                     {
       
    61                 callback: 'JSON_CALLBACK'
       
    62                     },
       
    63                     {
       
    64                         getJsonp: {
       
    65                             method: 'JSONP',
       
    66                             params: params,
       
    67                             isArray: false,
       
    68                             transformResponse: function(data){
       
    69                                 // Transform meta list into meta dict
       
    70                                 var nb = data.hits.length;
       
    71                                 for(var i=0;i<nb;i++){
       
    72                                     var nb_metas = data.hits[i].metas.length;
       
    73                                     data.hits[i].metas_dict = {};
       
    74                                     for(var j=0;j<nb_metas;j++){
       
    75                                         if(typeof data.hits[i].metas[j].images==='undefined'){
       
    76                                             data.hits[i].metas_dict[data.hits[i].metas[j].name] = data.hits[i].metas[j].value;
       
    77                                         }
       
    78                                         else{
       
    79                                             data.hits[i].metas_dict.images = data.hits[i].metas[j].images[0].value;
       
    80                                         }
       
    81                                     }
       
    82                                 }
       
    83                                 return data;
       
    84                             }
       
    85                         }
       
    86                     });
       
    87         };
       
    88     })
       
    89     .directive('myCustomer', function(){
       
    90         return {
       
    91             link: function(scope, elem, attr) {
       
    92                 elem.bind('error', function() {
       
    93                     elem.parents('li.item').addClass('no-img');
       
    94                     elem.remove();
       
    95                 });
       
    96                 elem.on('load', function() {
       
    97                     var w = $(this).width(),
       
    98                         h = $(this).height();
       
    99                     if (w > h){
       
   100                         $(this).addClass('img-landscape');
       
   101                     }
       
   102                 });
       
   103             }
       
   104         }
    14     });
   105     });
    15     
   106     
    16 })();
   107 })();