client/app/components/app_service.js
changeset 99 c7c424e9eed5
parent 93 4b167851ee7d
child 106 cb13a9009bf5
--- a/client/app/components/app_service.js	Wed May 27 19:01:25 2015 +0200
+++ b/client/app/components/app_service.js	Wed May 27 19:02:43 2015 +0200
@@ -2,15 +2,106 @@
 (function(){
     'use strict';
     
-    angular.module('ammicoModels', ['ngRoute'])
+    angular.module('ammicoCommon', ['ngRoute'])
     .factory('Book', function($resource, context) {
-        var books = $resource(context.urls.ammicoUrl+'/books/:idBook', {idBook:'@id'});
-        //return $resource('/api/posts/:id');
+        var books = $resource(context.urls.ammicoUrl+'/books/:idBook', {idBook:'@id'}, {update: { method: 'PUT'}});
         return books;
     })
     .factory('Slide', function($resource, context) {
-        return $resource(context.urls.ammicoUrl+'/slides/:idSlide', {idSlide:'@id'});
-        //return $resource('/api/posts/:id');
+        var slides = $resource(context.urls.ammicoUrl+'/slides/:idSlide', {idSlide:'@id'}, {update: { method: 'PUT'}});
+        
+        angular.extend(slides.prototype, {
+
+            toggleFavorite: function () {
+                this.favorite = !this.favorite;
+                this.$update();
+            },
+            remove: function (array) {
+                var _this = this;
+                if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
+                    this.$delete(function(){
+                        if (array){
+                            array.splice(array.indexOf(_this), 1);
+                        }
+                    },
+                    function(error) {
+                        if (error.status === 404 && array){
+                                array.splice(array.indexOf(_this), 1);
+                        }
+                    });
+                }
+            }
+        });
+        
+        return slides;
+    })
+    .factory('Order', function($resource, context) {
+        return $resource(context.urls.ammicoUrl+'/books/:idBook/order', {idBook:'@id'});
+    })
+    .service('Utils', function($resource, context, $sce) {
+        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);
+            console.log(data);
+            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');
+    })
+    .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;
+                            }
+                        }
+                    });
+        };
+    })
+    .directive('myCustomer', function(){
+        return {
+            link: function(scope, elem, attr) {
+                elem.bind('error', function() {
+                    elem.parents('li.item').addClass('no-img');
+                    elem.remove();
+                });
+                elem.on('load', function() {
+                    var w = $(this).width(),
+                        h = $(this).height();
+                    if (w > h){
+                        $(this).addClass('img-landscape');
+                    }
+                });
+            }
+        }
     });
     
 })();