refactor the ammicoApi service and put it into a specific module (ammicoCommon). Use factory to serve the resources
authorrougeronj
Wed, 27 May 2015 19:02:43 +0200
changeset 99 c7c424e9eed5
parent 98 e165f7647ae3
child 100 537d330ad7f0
refactor the ammicoApi service and put it into a specific module (ammicoCommon). Use factory to serve the resources
client/app/books/books_controller.js
client/app/components/app_service.js
client/app/my_visit/my_visit_controller.js
client/app/slides/slides_controller.js
client/app/slideshow/slideshow_controller.js
client/app/visites/visites_controller.js
--- a/client/app/books/books_controller.js	Wed May 27 19:01:25 2015 +0200
+++ b/client/app/books/books_controller.js	Wed May 27 19:02:43 2015 +0200
@@ -1,142 +1,142 @@
 (function(){
-	'use strict';
-
-	angular.module('ammicoBooks',['ngRoute', 'ui.sortable'])
-	.controller('booksCtrl', function($scope, $location, $modal, ammicoApi){
-		$scope.books = ammicoApi.listBooks.query({format:'json'}, function(data){
-			data.sort(function (a, b) {
-				return a.date < b.date;
-			});
-
-			for (var i = 0; i < data.length; i++) {
-		    	if (data[i].idArticle === null){
-		    		data[i].slides = ammicoApi.booksSlides.query({idBook:data[i].id, format:'json'});
-		    	}
-			}	
-		});
-
-		$scope.toggleModal = function (index) {
+    'use strict';
 
-			var modalInstance = $modal.open({
-				templateUrl: 'books/add_book_modal.html',
-				controller: 'ModalAddBookCtrl',
-				size: 'sm'
-			});
-
-			modalInstance.result.then(function (idBook) {
-				var newSlide = {
-					book: idBook,
-					idInventory: $scope.results.hits[index].metas_dict.inventorynumber
-				};
-				ammicoApi.listSlides.save(newSlide);
-			});
-		};
-		
-		$scope.searchSubmit = function(){
-			$location.path('/search/' + $scope.q);
-		};
+    angular.module('ammicoBooks',['ngRoute', 'ui.sortable'])
+    .controller('booksCtrl', function($scope, $location, $modal, Book, Slide){
+        $scope.editable = true;
+        
+        $scope.books = Book.query({format:'json'}, function(data){
+            data.sort(function (a, b) {
+                return a.date < b.date;
+            });
 
-		$scope.addBook = function (idParent) {
-			$modal.open({
-				templateUrl: 'books/add_modal.html',
-				controller: 'ModalAddBookCtrl'
-			}).result.then(function (title) {
-				ammicoApi.listBooks.save({idParent:idParent, title: title}, function(newBook){
-					$scope.books.push(newBook);
-				});
-			});
-		};
-		$scope.deleteItem = function(book){
-			if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
-				ammicoApi.book.delete({idBook: book.id}, function(){
-					$scope.books.splice($scope.books.indexOf(book), 1);
-				},
-				function(error) {
-					if (error.status === 404){
-						$scope.books.splice($scope.books.indexOf(book), 1);
-					}
-				});
-			}
-		};
-	})
+            for (var i = 0; i < data.length; i++) {
+                if (data[i].idArticle === null){
+                    data[i].slides = Slide.query({idBook:data[i].id, limit: 5, format:'json'});
+                }
+            }
+        });
+
+        $scope.toggleModal = function (index) {
 
-	.controller('bookCtrl', function($scope, $location, ammicoApi, $routeParams, $modal) {
-		$scope.parentBook = ammicoApi.book.get({idBook:$routeParams.idBook, format:'json'}, function(data){
-			data.slides = ammicoApi.booksSlides.query({idBook: data.id, format:'json'}, function(data){
-				data.sort(function (a, b) {
-					return a.orderIndex > b.orderIndex;
-				});
-			});
-		});
-		
-		$scope.toggleFavorite = function (index) {
+            var modalInstance = $modal.open({
+                templateUrl: 'books/add_book_modal.html',
+                controller: 'ModalAddBookCtrl',
+                size: 'sm'
+            });
 
-		    $scope.parentBook.slides[index].favorite = !$scope.parentBook.slides[index].favorite;
-		    $scope.parentBook.slides[index].$save({format:'json'});
-		    //$scope.slide.$save({idSlide:$scope.slide.id, format:'json'});
+            modalInstance.result.then(function (idBook) {
+                var newSlide = {
+                    book: idBook,
+                    idInventory: $scope.results.hits[index].metas_dict.inventorynumber
+                };
+                Slide.save(newSlide);
+            });
         };
 
-		$scope.toggleModal = function (index) {
-
-			var modalInstance = $modal.open({
-				templateUrl: 'books/add_book_modal.html',
-				controller: 'ModalAddBookCtrl',
-				size: 'sm'
-			});
+        $scope.addBook = function (idParent) {
+            $modal.open({
+                templateUrl: 'books/add_modal.html',
+                controller: 'ModalAddBookCtrl'
+            }).result.then(function (title) {
+                Book.save({idParent:idParent, title: title}, function(newBook){
+                    $scope.books.push(newBook);
+                });
+            });
+        };
+        $scope.deleteItem = function(item){
+            if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
+                Slide.delete({idSlide: item.id}, function(){
+                    $scope.book.slides.splice($scope.book.slides.indexOf(item), 1);
+                },
+                function(error) {
+                    if (error.status === 404){
+                        $scope.book.slides.splice($scope.book.indexOf(item), 1);
+                    }
+                });
+            }
+        };
+        $scope.deleteBook = function(book){
+            if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
+                Book.delete({idBook: book.id}, function(){
+                    $scope.books.splice($scope.books.indexOf(book), 1);
+                },
+                function(error) {
+                    if (error.status === 404){
+                        $scope.books.splice($scope.books.indexOf(book), 1);
+                    }
+                });
+            }
+        };
+    })
 
-			modalInstance.result.then(function (idBook) {
-				var newSlide = {
-					book: idBook,
-					idInventory: $scope.results.hits[index].metas_dict.inventorynumber
-				};
-				ammicoApi.listSlides.save(newSlide);
-			});
-		};
+    .controller('bookCtrl', function($scope, $location, $routeParams, $modal, Book, Slide, Order) {
+        $scope.editable = true;
+        
+        $scope.book = Book.get({idBook:$routeParams.idBook, format:'json'}, function(data){
+            data.slides = Slide.query({idBook: data.id, format:'json'}, function(data){
+                data.sort(function (a, b) {
+                    return a.orderIndex > b.orderIndex;
+                });
+            });
+        });
 
-		$scope.sortableOptions = {
-				stop: function() {
-					var order = $scope.parentBook.slides.map(function(i){
-						return i.id;
-					});
-					ammicoApi.order.save({idBook:$routeParams.idBook}, {order: order});
-				}
-		};
+        $scope.toggleModal = function (index) {
 
-		$scope.deleteItem = function(i){
-		    if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
-		        $scope.parentBook.slides[i].$delete();
-			//if(0<=i && i<$scope.slides.length){
-//					ammicoApi.slide.delete({idSlide: $scope.slides[i].id}, function(){
-//						$scope.slides.splice(i, 1);
-//					},
-//					function(error) {
-//						if (error.status === 404){
-//							$scope.slides.splice(i, 1);
-//						}
-//					});
-//				}
-			}
-		};
-	})
-	.controller('ModalAddBookCtrl', function ($scope, ammicoApi, $modalInstance) {
+            var modalInstance = $modal.open({
+                templateUrl: 'books/add_book_modal.html',
+                controller: 'ModalAddBookCtrl',
+                size: 'sm'
+            });
+
+            modalInstance.result.then(function (idBook) {
+                var newSlide = {
+                    book: idBook,
+                    idInventory: $scope.results.hits[index].metas_dict.inventorynumber
+                };
+                Slide.save(newSlide);
+            });
+        };
 
-		$scope.add = function(){
-			$modalInstance.close($scope.title);
-//			ammicoApi.listBooks.save({title: $scope.title}, function(newBook){
-//			});
-		};
-		$scope.cancel = function () {
-			$modalInstance.dismiss('cancel');
-		}
-		;
-		$scope.books = ammicoApi.listBooks.query({format:'json'});
-		
-		$scope.addToBook = function(idBook){
-			$modalInstance.close(idBook);
-		};
+        $scope.sortableOptions = {
+                stop: function() {
+                    var order = $scope.book.slides.map(function(i){
+                        return i.id;
+                    });
+                    Order.save({idBook:$routeParams.idBook}, {order: order});
+                }
+        };
+        
+        $scope.deleteItem = function(item){
+            if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
+                Slide.delete({idSlide: item.id}, function(){
+                    $scope.book.slides.splice($scope.book.slides.indexOf(item), 1);
+                },
+                function(error) {
+                    if (error.status === 404){
+                        $scope.book.slides.splice($scope.book.indexOf(item), 1);
+                    }
+                });
+            }
+        };
+    })
+    .controller('ModalAddBookCtrl', function ($scope, Book, $modalInstance) {
 
-		$scope.cancel = function () {
-			$modalInstance.dismiss('cancel');
-		};
-	});
+        $scope.add = function(){
+            $modalInstance.close($scope.title);
+        };
+        $scope.cancel = function () {
+            $modalInstance.dismiss('cancel');
+        }
+        ;
+        $scope.books = Book.query({format:'json'});
+        
+        $scope.addToBook = function(idBook){
+            $modalInstance.close(idBook);
+        };
+
+        $scope.cancel = function () {
+            $modalInstance.dismiss('cancel');
+        };
+    });
 })();
--- 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');
+                    }
+                });
+            }
+        }
     });
     
 })();
--- a/client/app/my_visit/my_visit_controller.js	Wed May 27 19:01:25 2015 +0200
+++ b/client/app/my_visit/my_visit_controller.js	Wed May 27 19:02:43 2015 +0200
@@ -1,67 +1,45 @@
 (function(){
-	'use strict';
-
-	angular.module('ammicoMyvisit',['ngRoute', 'ui.sortable'])
-	.controller('my_visitCtrl', function($scope, $location, $modal, ammicoApi){
+    'use strict';
 
-		//get list book
-		$scope.books = ammicoApi.listBooks.query({format:'json'}, function(data){
-			data.sort(function (a, b) {
-				return a.date < b.date;
-			});
+    angular.module('ammicoMyvisit',['ngRoute', 'ui.sortable'])
+    .controller('my_visitCtrl', function($scope, $location, $modal, Book, Slide){
 
-			for (var i = 0; i < data.length; i++) {
-		    	if (data[i].idArticle){
-		    		data[i].slides = ammicoApi.booksSlides.query({idBook:data[i].id, format:'json'});
-		    	}
-			}	
-		});
+        //get list book
+        $scope.books = Book.query({format:'json'}, function(data){
+            data.sort(function (a, b) {
+                return a.date < b.date;
+            });
 
-		$scope.addBook = function (idParent) {
-			$modal.open({
-				templateUrl: 'my_visit/add_modal_my_visit.html',
-				controller: 'ModalAddMyvisitCtrl'
-			}).result.then(function (title) {
-				//add book with the title written in the modal
-				ammicoApi.listBooks.save({idParent:idParent, title: title}, function(newBook){
-					$scope.books.push(newBook);
-				});
-			});
-		};
-
+            for (var i = 0; i < data.length; i++) {
+                if (data[i].idArticle){
+                    data[i].slides = Slide.query({idBook:data[i].id, format:'json'});
+                }
+            }    
+        });
 
-		$scope.share = function (idParent) {
-			$modal.open({
-				templateUrl: 'my_visit/share_modal_my_visit.html',
-				controller: 'ModalAddMyvisitCtrl'
-			}).result.then(function (title) {
-				//add book with the title written in the modal
-				ammicoApi.slidesBook.query({idParent:idParent, title: title}, function(newBook){
-					$scope.books(newBook);
-				});
-			});
-		};
-
-		
-	})
-
-	.controller('ModalAddMyvisitCtrl', function ($scope, ammicoApi, $modalInstance) {
+        $scope.addBook = function (idParent) {
+            $modal.open({
+                templateUrl: 'my_visit/add_modal_my_visit.html',
+                controller: 'ModalAddMyvisitCtrl'
+            }).result.then(function (title) {
+                //add book with the title written in the modal
+                Book.save({idParent:idParent, title: title}, function(newBook){
+                    $scope.books.push(newBook);
+                });
+            });
+        };        
+    })
+    .controller('ModalAddMyvisitCtrl', function ($scope, $modalInstance) {
 
-		$scope.add = function(){
-			$modalInstance.close($scope.title);
-//			ammicoApi.listBooks.save({title: $scope.title}, function(newBook){
-//			});
-		};
-		$scope.cancel = function () {
-			$modalInstance.dismiss('cancel');
-		};
-		$scope.share = function () {
-			$modalInstance($scope.book);
-		};
-	});
-
-	
-
-
+        $scope.add = function(){
+            $modalInstance.close($scope.title);
+        };
+        $scope.cancel = function () {
+            $modalInstance.dismiss('cancel');
+        };
+        $scope.share = function () {
+            $modalInstance($scope.book);
+        };
+    });
 })();
 
--- a/client/app/slides/slides_controller.js	Wed May 27 19:01:25 2015 +0200
+++ b/client/app/slides/slides_controller.js	Wed May 27 19:02:43 2015 +0200
@@ -1,36 +1,36 @@
 (function(){
-	'use strict';
+    'use strict';
 
-	angular.module('ammicoSlides',['ngResource', 'ngRoute'])
-	.controller('slidesCtrl', function($scope, $routeParams, ammicoApi){
-		
-		$scope.slide = ammicoApi.slide.get({idSlide:$routeParams.idSlide, format:'json'}, function(data){
-			data = ammicoApi.sanitizeUrls(data);
-		});
+    angular.module('ammicoSlides',['ngResource', 'ngRoute'])
+    .controller('slidesCtrl', function($scope, $routeParams, Slide, Utils){
+        
+        $scope.slide = Slide.get({idSlide:$routeParams.idSlide, format:'json'}, function(data){
+            data = Utils.sanitizeUrls(data);
+        });
 
-	})
-	.directive('slideEditor', function() {
-		return {
-			restrict: 'AE',
-			replace: true,
-			scope: false,
-			templateUrl: 'slides/data_editor.html',
-			controller: function($scope){
-				$scope.slidesave = function(){
-					if(typeof $scope.slide.tags === 'string'){
-						$scope.slide.tags = $scope.slide.tags.split(',');
-						for (var i = $scope.slide.tags.length - 1; i >= 0; i--) {
-							$scope.slide.tags[i] = $scope.slide.tags[i].trim();
-						}
-					}
-					$scope.slide.editMode = false;
-					$scope.slide.$save({idSlide:$scope.slide.id, format:'json'});
-				};
-				$scope.doubleClick = function(){
-					$scope.slide.editMode = true;
-				};
-			}
-		};
-	});
+    })
+    .directive('slideEditor', function() {
+        return {
+            restrict: 'AE',
+            replace: true,
+            scope: false,
+            templateUrl: 'slides/data_editor.html',
+            controller: function($scope){
+                $scope.slidesave = function(){
+                    if(typeof $scope.slide.tags === 'string'){
+                        $scope.slide.tags = $scope.slide.tags.split(',');
+                        for (var i = $scope.slide.tags.length - 1; i >= 0; i--) {
+                            $scope.slide.tags[i] = $scope.slide.tags[i].trim();
+                        }
+                    }
+                    $scope.slide.editMode = false;
+                    $scope.slide.$update({format:'json'});
+                };
+                $scope.doubleClick = function(){
+                    $scope.slide.editMode = true;
+                };
+            }
+        };
+    });
 
 })();
--- a/client/app/slideshow/slideshow_controller.js	Wed May 27 19:01:25 2015 +0200
+++ b/client/app/slideshow/slideshow_controller.js	Wed May 27 19:02:43 2015 +0200
@@ -1,11 +1,13 @@
 (function(){
-	'use strict';
+    'use strict';
 
-	angular.module('ammicoSlideshow',['ngResource', 'ngRoute', 'ui.bootstrap'])
-	.controller('slideshowCtrl', function($scope, ammicoApi, $routeParams){
-		$scope.slideshow = ammicoApi.booksSlides.query({idBook:$routeParams.iSlide, format:'json'}, function(data){
-			data = ammicoApi.sanitizeUrls(data);
-		});
-		$scope.book = ammicoApi.book.get({idBook:$routeParams.iSlide, format:'json'});
-	});
+    angular.module('ammicoSlideshow',['ngResource', 'ngRoute', 'ui.bootstrap'])
+    .controller('slideshowCtrl', function($scope, $routeParams, Slide, Book, Utils){
+        $scope.slideshow = Slide.query({idBook:$routeParams.iSlide, format:'json'}, function(data){
+            data.forEach(function(slide){
+               slide = Utils.sanitizeUrls(slide);
+            });
+        });
+        $scope.book = Book.get({idBook:$routeParams.iSlide, format:'json'});
+    });
 })();
--- a/client/app/visites/visites_controller.js	Wed May 27 19:01:25 2015 +0200
+++ b/client/app/visites/visites_controller.js	Wed May 27 19:02:43 2015 +0200
@@ -1,146 +1,101 @@
 (function(){
-	'use strict';
-
-	angular.module('ammicoVisites',['ngRoute', 'ui.sortable'])
-	.controller('visitesCtrl', function($scope, $location, $modal, ammicoApi){
+    'use strict';
 
-		//get list book
-		$scope.books = ammicoApi.listBooks.query({format:'json'}, function(data){
-			data.sort(function (a, b) {
-				return a.date < b.date;
-			});
+    angular.module('ammicoVisites',['ngRoute', 'ui.sortable'])
+    .controller('visitesCtrl', function($scope, $location, $modal, Book, Slide){
 
-			for (var i = 0; i < data.length; i++) {
-		    	if (data[i].idArticle){
-		    		data[i].slides = ammicoApi.booksSlides.query({idBook:data[i].id, format:'json'});
-		    	}
-			}	
-		});
-
-		$scope.toggleModal = function (index) {
-
-			var modalInstance = $modal.open({
-				templateUrl: 'visites/add_book_modal.html',
-				controller: 'ModalAddVisitesCtrl',
-				size: 'sm'
-			});
+        //get list book
+        $scope.books = Book.query({format:'json'}, function(data){
+            data.sort(function (a, b) {
+                return a.date < b.date;
+            });
 
-			modalInstance.result.then(function (idBook) {
-				var newSlide = {
-					book: idBook,
-					idInventory: $scope.results.hits[index].metas_dict.inventorynumber
-				};
-				ammicoApi.listSlides.save(newSlide);
-			});
-		};
+            for (var i = 0; i < data.length; i++) {
+                if (data[i].idArticle){
+                    data[i].slides = Slide.query({idBook:data[i].id, limit: 5, format:'json'});
+                }
+            }    
+        });
 
+        $scope.toggleModal = function (index) {
 
-		$scope.addBook = function (idParent) {
-			$modal.open({
-				templateUrl: 'visites/add_modal_visites.html',
-				controller: 'ModalAddVisitesCtrl'
-			}).result.then(function (title) {
-				//add book with the title written in the modal
-				ammicoApi.listBooks.save({idParent:idParent, title: title}, function(newBook){
-					$scope.books.push(newBook);
-				});
-			});
-		};
-		
-	})
+            var modalInstance = $modal.open({
+                templateUrl: 'visites/add_book_modal.html',
+                controller: 'ModalAddVisitesCtrl',
+                size: 'sm'
+            });
 
-
-  .controller('visiteCtrl', function($scope, ammicoApi, $routeParams, $modal) {
-		//get the slides of a book
-		$scope.slides = ammicoApi.booksSlides.query({idBook:$routeParams.idVisit, format:'json'}, function(data){
-			data.sort(function (a, b) {
-				return a.orderIndex > b.orderIndex;
-			});
-			
-		});
+            modalInstance.result.then(function (idBook) {
+                var newSlide = {
+                    book: idBook,
+                    idInventory: $scope.results.hits[index].metas_dict.inventorynumber
+                };
+                Slide.save(newSlide);
+            });
+        };
 
 
-		$scope.toggleModal = function (index) {
-
-			var modalInstance = $modal.open({
-				templateUrl: 'visites/add_book_modal.html',
-				controller: 'ModalAddVisitesCtrl',
-				size: 'sm'
-			});
-
-			modalInstance.result.then(function (idBook) {
-				var newSlide = {
-					book: idBook,
-					idInventory: $scope.results.hits[index].metas_dict.inventorynumber
-				};
-				ammicoApi.listSlides.save(newSlide);
-			});
-		};
-
-		$scope.addBook = function (idParent) {
-			$modal.open({
-				templateUrl: 'visites/add_modal_visites.html',
-				controller: 'ModalAddVisitesCtrl'
-			}).result.then(function (title) {
-				//add book with the title written in the modal
-				ammicoApi.listBooks.save({idParent:idParent, title: title}, function(newBook){
-					$scope.books.push(newBook);
-				});
-			});
-		};
-		
-		$scope.sortableOptions = {
-				stop: function() {
-					var order = $scope.slides.map(function(i){
-						return i.id;
-					});
-					ammicoApi.order.save({idBook:$routeParams.idVisit}, {order: order});
-				}
-		};
-
+        $scope.addBook = function (idParent) {
+            $modal.open({
+                templateUrl: 'visites/add_modal_visites.html',
+                controller: 'ModalAddVisitesCtrl'
+            }).result.then(function (title) {
+                //add book with the title written in the modal
+                Book.save({idParent:idParent, title: title}, function(newBook){
+                    $scope.books.push(newBook);
+                });
+            });
+        };
+        
+    })
 
 
-		$scope.deleteItem = function(i){
-			if(0<=i && i<$scope.slides.length){
-				if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
-					//delete a slide
-					ammicoApi.slide.delete({idSlide: $scope.slides[i].id}, function(){
-						$scope.slides.splice(i, 1);
-					},
-					function(error) {
-						if (error.status === 404){
-							$scope.slides.splice(i, 1);
-						}
-					});
-				}
-			}
-		};
-
-	})
+    .controller('visiteCtrl', function($scope, $routeParams, $modal, Book, Slide) {
+        //get the slides of a book
+      
+       $scope.visit = Book.get({idBook:$routeParams.idVisit, format:'json'}, function(data){
+           data.slides = Slide.query({idBook: data.id, format:'json'}, function(data){
+              data.sort(function (a, b) {
+                  return a.orderIndex > b.orderIndex;
+              });
+          });
+       });
+       $scope.addBook = function (idParent) {
+            $modal.open({
+                templateUrl: 'visites/add_modal_visites.html',
+                controller: 'ModalAddVisitesCtrl'
+            }).result.then(function (title) {
+                //add book with the title written in the modal
+                Book.save({idParent:idParent, title: title}, function(newBook){
+                    $scope.books.push(newBook);
+                });
+            });
+        };
+    })
 
 
-	.controller('ModalAddVisitesCtrl', function($scope, ammicoApi, $modalInstance) {
+    .controller('ModalAddVisitesCtrl', function($scope, $modalInstance, Book) {
 
-		$scope.add = function(){
-			$modalInstance.close($scope.title);
-//			ammicoApi.listBooks.save({title: $scope.title}, function(newBook){
-//			});
-		};
-		$scope.cancel = function () {
-			$modalInstance.dismiss('cancel');
-		};
+        $scope.add = function(){
+            $modalInstance.close($scope.title);
+//            ammicoApi.listBooks.save({title: $scope.title}, function(newBook){
+//            });
+        };
+        $scope.cancel = function () {
+            $modalInstance.dismiss('cancel');
+        };
 
-		$scope.books = ammicoApi.listBooks.query({format:'json'});
-		
-		$scope.addToBook = function(idBook){
-			$modalInstance.close(idBook);
-		};
+        $scope.books = Book.query({format:'json'});
+        
+        $scope.addToBook = function(idBook){
+            $modalInstance.close(idBook);
+        };
 
-		$scope.cancel = function () {
-			$modalInstance.dismiss('cancel');
-		};
+        $scope.cancel = function () {
+            $modalInstance.dismiss('cancel');
+        };
 
-	
-	});
+    
+    });
 
 })();