client/app/books/books_controller.js
changeset 99 c7c424e9eed5
parent 91 f7a844a9079e
child 146 c6fa8ee3f562
equal deleted inserted replaced
98:e165f7647ae3 99:c7c424e9eed5
     1 (function(){
     1 (function(){
     2 	'use strict';
     2     'use strict';
     3 
     3 
     4 	angular.module('ammicoBooks',['ngRoute', 'ui.sortable'])
     4     angular.module('ammicoBooks',['ngRoute', 'ui.sortable'])
     5 	.controller('booksCtrl', function($scope, $location, $modal, ammicoApi){
     5     .controller('booksCtrl', function($scope, $location, $modal, Book, Slide){
     6 		$scope.books = ammicoApi.listBooks.query({format:'json'}, function(data){
     6         $scope.editable = true;
     7 			data.sort(function (a, b) {
     7         
     8 				return a.date < b.date;
     8         $scope.books = Book.query({format:'json'}, function(data){
     9 			});
     9             data.sort(function (a, b) {
       
    10                 return a.date < b.date;
       
    11             });
    10 
    12 
    11 			for (var i = 0; i < data.length; i++) {
    13             for (var i = 0; i < data.length; i++) {
    12 		    	if (data[i].idArticle === null){
    14                 if (data[i].idArticle === null){
    13 		    		data[i].slides = ammicoApi.booksSlides.query({idBook:data[i].id, format:'json'});
    15                     data[i].slides = Slide.query({idBook:data[i].id, limit: 5, format:'json'});
    14 		    	}
    16                 }
    15 			}	
    17             }
    16 		});
    18         });
    17 
    19 
    18 		$scope.toggleModal = function (index) {
    20         $scope.toggleModal = function (index) {
    19 
    21 
    20 			var modalInstance = $modal.open({
    22             var modalInstance = $modal.open({
    21 				templateUrl: 'books/add_book_modal.html',
    23                 templateUrl: 'books/add_book_modal.html',
    22 				controller: 'ModalAddBookCtrl',
    24                 controller: 'ModalAddBookCtrl',
    23 				size: 'sm'
    25                 size: 'sm'
    24 			});
    26             });
    25 
    27 
    26 			modalInstance.result.then(function (idBook) {
    28             modalInstance.result.then(function (idBook) {
    27 				var newSlide = {
    29                 var newSlide = {
    28 					book: idBook,
    30                     book: idBook,
    29 					idInventory: $scope.results.hits[index].metas_dict.inventorynumber
    31                     idInventory: $scope.results.hits[index].metas_dict.inventorynumber
    30 				};
    32                 };
    31 				ammicoApi.listSlides.save(newSlide);
    33                 Slide.save(newSlide);
    32 			});
    34             });
    33 		};
       
    34 		
       
    35 		$scope.searchSubmit = function(){
       
    36 			$location.path('/search/' + $scope.q);
       
    37 		};
       
    38 
       
    39 		$scope.addBook = function (idParent) {
       
    40 			$modal.open({
       
    41 				templateUrl: 'books/add_modal.html',
       
    42 				controller: 'ModalAddBookCtrl'
       
    43 			}).result.then(function (title) {
       
    44 				ammicoApi.listBooks.save({idParent:idParent, title: title}, function(newBook){
       
    45 					$scope.books.push(newBook);
       
    46 				});
       
    47 			});
       
    48 		};
       
    49 		$scope.deleteItem = function(book){
       
    50 			if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
       
    51 				ammicoApi.book.delete({idBook: book.id}, function(){
       
    52 					$scope.books.splice($scope.books.indexOf(book), 1);
       
    53 				},
       
    54 				function(error) {
       
    55 					if (error.status === 404){
       
    56 						$scope.books.splice($scope.books.indexOf(book), 1);
       
    57 					}
       
    58 				});
       
    59 			}
       
    60 		};
       
    61 	})
       
    62 
       
    63 	.controller('bookCtrl', function($scope, $location, ammicoApi, $routeParams, $modal) {
       
    64 		$scope.parentBook = ammicoApi.book.get({idBook:$routeParams.idBook, format:'json'}, function(data){
       
    65 			data.slides = ammicoApi.booksSlides.query({idBook: data.id, format:'json'}, function(data){
       
    66 				data.sort(function (a, b) {
       
    67 					return a.orderIndex > b.orderIndex;
       
    68 				});
       
    69 			});
       
    70 		});
       
    71 		
       
    72 		$scope.toggleFavorite = function (index) {
       
    73 
       
    74 		    $scope.parentBook.slides[index].favorite = !$scope.parentBook.slides[index].favorite;
       
    75 		    $scope.parentBook.slides[index].$save({format:'json'});
       
    76 		    //$scope.slide.$save({idSlide:$scope.slide.id, format:'json'});
       
    77         };
    35         };
    78 
    36 
    79 		$scope.toggleModal = function (index) {
    37         $scope.addBook = function (idParent) {
       
    38             $modal.open({
       
    39                 templateUrl: 'books/add_modal.html',
       
    40                 controller: 'ModalAddBookCtrl'
       
    41             }).result.then(function (title) {
       
    42                 Book.save({idParent:idParent, title: title}, function(newBook){
       
    43                     $scope.books.push(newBook);
       
    44                 });
       
    45             });
       
    46         };
       
    47         $scope.deleteItem = function(item){
       
    48             if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
       
    49                 Slide.delete({idSlide: item.id}, function(){
       
    50                     $scope.book.slides.splice($scope.book.slides.indexOf(item), 1);
       
    51                 },
       
    52                 function(error) {
       
    53                     if (error.status === 404){
       
    54                         $scope.book.slides.splice($scope.book.indexOf(item), 1);
       
    55                     }
       
    56                 });
       
    57             }
       
    58         };
       
    59         $scope.deleteBook = function(book){
       
    60             if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
       
    61                 Book.delete({idBook: book.id}, function(){
       
    62                     $scope.books.splice($scope.books.indexOf(book), 1);
       
    63                 },
       
    64                 function(error) {
       
    65                     if (error.status === 404){
       
    66                         $scope.books.splice($scope.books.indexOf(book), 1);
       
    67                     }
       
    68                 });
       
    69             }
       
    70         };
       
    71     })
    80 
    72 
    81 			var modalInstance = $modal.open({
    73     .controller('bookCtrl', function($scope, $location, $routeParams, $modal, Book, Slide, Order) {
    82 				templateUrl: 'books/add_book_modal.html',
    74         $scope.editable = true;
    83 				controller: 'ModalAddBookCtrl',
    75         
    84 				size: 'sm'
    76         $scope.book = Book.get({idBook:$routeParams.idBook, format:'json'}, function(data){
    85 			});
    77             data.slides = Slide.query({idBook: data.id, format:'json'}, function(data){
       
    78                 data.sort(function (a, b) {
       
    79                     return a.orderIndex > b.orderIndex;
       
    80                 });
       
    81             });
       
    82         });
    86 
    83 
    87 			modalInstance.result.then(function (idBook) {
    84         $scope.toggleModal = function (index) {
    88 				var newSlide = {
       
    89 					book: idBook,
       
    90 					idInventory: $scope.results.hits[index].metas_dict.inventorynumber
       
    91 				};
       
    92 				ammicoApi.listSlides.save(newSlide);
       
    93 			});
       
    94 		};
       
    95 
    85 
    96 		$scope.sortableOptions = {
    86             var modalInstance = $modal.open({
    97 				stop: function() {
    87                 templateUrl: 'books/add_book_modal.html',
    98 					var order = $scope.parentBook.slides.map(function(i){
    88                 controller: 'ModalAddBookCtrl',
    99 						return i.id;
    89                 size: 'sm'
   100 					});
    90             });
   101 					ammicoApi.order.save({idBook:$routeParams.idBook}, {order: order});
       
   102 				}
       
   103 		};
       
   104 
    91 
   105 		$scope.deleteItem = function(i){
    92             modalInstance.result.then(function (idBook) {
   106 		    if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
    93                 var newSlide = {
   107 		        $scope.parentBook.slides[i].$delete();
    94                     book: idBook,
   108 			//if(0<=i && i<$scope.slides.length){
    95                     idInventory: $scope.results.hits[index].metas_dict.inventorynumber
   109 //					ammicoApi.slide.delete({idSlide: $scope.slides[i].id}, function(){
    96                 };
   110 //						$scope.slides.splice(i, 1);
    97                 Slide.save(newSlide);
   111 //					},
    98             });
   112 //					function(error) {
    99         };
   113 //						if (error.status === 404){
       
   114 //							$scope.slides.splice(i, 1);
       
   115 //						}
       
   116 //					});
       
   117 //				}
       
   118 			}
       
   119 		};
       
   120 	})
       
   121 	.controller('ModalAddBookCtrl', function ($scope, ammicoApi, $modalInstance) {
       
   122 
   100 
   123 		$scope.add = function(){
   101         $scope.sortableOptions = {
   124 			$modalInstance.close($scope.title);
   102                 stop: function() {
   125 //			ammicoApi.listBooks.save({title: $scope.title}, function(newBook){
   103                     var order = $scope.book.slides.map(function(i){
   126 //			});
   104                         return i.id;
   127 		};
   105                     });
   128 		$scope.cancel = function () {
   106                     Order.save({idBook:$routeParams.idBook}, {order: order});
   129 			$modalInstance.dismiss('cancel');
   107                 }
   130 		}
   108         };
   131 		;
   109         
   132 		$scope.books = ammicoApi.listBooks.query({format:'json'});
   110         $scope.deleteItem = function(item){
   133 		
   111             if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
   134 		$scope.addToBook = function(idBook){
   112                 Slide.delete({idSlide: item.id}, function(){
   135 			$modalInstance.close(idBook);
   113                     $scope.book.slides.splice($scope.book.slides.indexOf(item), 1);
   136 		};
   114                 },
       
   115                 function(error) {
       
   116                     if (error.status === 404){
       
   117                         $scope.book.slides.splice($scope.book.indexOf(item), 1);
       
   118                     }
       
   119                 });
       
   120             }
       
   121         };
       
   122     })
       
   123     .controller('ModalAddBookCtrl', function ($scope, Book, $modalInstance) {
   137 
   124 
   138 		$scope.cancel = function () {
   125         $scope.add = function(){
   139 			$modalInstance.dismiss('cancel');
   126             $modalInstance.close($scope.title);
   140 		};
   127         };
   141 	});
   128         $scope.cancel = function () {
       
   129             $modalInstance.dismiss('cancel');
       
   130         }
       
   131         ;
       
   132         $scope.books = Book.query({format:'json'});
       
   133         
       
   134         $scope.addToBook = function(idBook){
       
   135             $modalInstance.close(idBook);
       
   136         };
       
   137 
       
   138         $scope.cancel = function () {
       
   139             $modalInstance.dismiss('cancel');
       
   140         };
       
   141     });
   142 })();
   142 })();