server/src/ammico/static/ammico/js/app.js
changeset 148 9f6f17de6d98
parent 117 41a78460bdac
equal deleted inserted replaced
147:89f19425c580 148:9f6f17de6d98
   165             data.sort(function (a, b) {
   165             data.sort(function (a, b) {
   166                 return a.date < b.date;
   166                 return a.date < b.date;
   167             });
   167             });
   168 
   168 
   169             for (var i = 0; i < data.length; i++) {
   169             for (var i = 0; i < data.length; i++) {
   170                 if (data[i].idArticle === null){
   170                 if (data[i].id_article === null){
   171                     data[i].slides = Slide.query({idBook:data[i].id, limit: 5, format:'json'});
   171                     data[i].slides = Slide.query({idBook:data[i].id, limit: 5, format:'json'});
   172                 }
   172                 }
   173             }
   173             }
   174         });
   174         });
   175 
   175         
   176         $scope.toggleModal = function (index) {
   176 //        $scope.$on('slideDeleted', function (event, data) {
   177 
   177 //            console.log(data); // 'Data to send'
   178             var modalInstance = $modal.open({
   178 //        });
   179                 templateUrl: 'books/add_book_modal.html',
       
   180                 controller: 'ModalAddBookCtrl',
       
   181                 size: 'sm'
       
   182             });
       
   183 
       
   184             modalInstance.result.then(function (idBook) {
       
   185                 var newSlide = {
       
   186                     book: idBook,
       
   187                     idInventory: $scope.results.hits[index].metas_dict.inventorynumber
       
   188                 };
       
   189                 Slide.save(newSlide);
       
   190             });
       
   191         };
       
   192 
   179 
   193         $scope.addBook = function (idParent) {
   180         $scope.addBook = function (idParent) {
   194             $modal.open({
   181             $modal.open({
   195                 templateUrl: 'books/add_modal.html',
   182                 templateUrl: 'books/add_modal.html',
   196                 controller: 'ModalAddBookCtrl'
   183                 controller: 'ModalAddBookCtrl'
   198                 Book.save({idParent:idParent, title: title}, function(newBook){
   185                 Book.save({idParent:idParent, title: title}, function(newBook){
   199                     $scope.books.push(newBook);
   186                     $scope.books.push(newBook);
   200                 });
   187                 });
   201             });
   188             });
   202         };
   189         };
       
   190     })
       
   191 
       
   192     .controller('bookCtrl', function($scope, $location, $routeParams, $modal, Book, Slide, Order) {
       
   193         $scope.editable = true;
       
   194         
       
   195         $scope.book = Book.get({idBook:$routeParams.idBook, format:'json'}, function(data){
       
   196             data.slides = Slide.query({idBook: data.id, format:'json'}, function(data){
       
   197                 data.sort(function (a, b) {
       
   198                     return a.orderIndex > b.orderIndex;
       
   199                 });
       
   200             });
       
   201         });
       
   202 
       
   203         $scope.sortableOptions = {
       
   204                 stop: function() {
       
   205                     var order = $scope.book.slides.map(function(i){
       
   206                         return i.id;
       
   207                     });
       
   208                     Order.save({idBook:$routeParams.idBook}, {order: order});
       
   209                 }
       
   210         };
       
   211         
   203         $scope.deleteItem = function(item){
   212         $scope.deleteItem = function(item){
   204             if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
   213             if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
   205                 Slide.delete({idSlide: item.id}, function(){
   214                 Slide.delete({idSlide: item.id}, function(){
   206                     $scope.book.slides.splice($scope.book.slides.indexOf(item), 1);
   215                     $scope.book.slides.splice($scope.book.slides.indexOf(item), 1);
   207                 },
   216                 },
   210                         $scope.book.slides.splice($scope.book.indexOf(item), 1);
   219                         $scope.book.slides.splice($scope.book.indexOf(item), 1);
   211                     }
   220                     }
   212                 });
   221                 });
   213             }
   222             }
   214         };
   223         };
   215         $scope.deleteBook = function(book){
       
   216             if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
       
   217                 Book.delete({idBook: book.id}, function(){
       
   218                     $scope.books.splice($scope.books.indexOf(book), 1);
       
   219                 },
       
   220                 function(error) {
       
   221                     if (error.status === 404){
       
   222                         $scope.books.splice($scope.books.indexOf(book), 1);
       
   223                     }
       
   224                 });
       
   225             }
       
   226         };
       
   227     })
       
   228 
       
   229     .controller('bookCtrl', function($scope, $location, $routeParams, $modal, Book, Slide, Order) {
       
   230         $scope.editable = true;
       
   231         
       
   232         $scope.book = Book.get({idBook:$routeParams.idBook, format:'json'}, function(data){
       
   233             data.slides = Slide.query({idBook: data.id, format:'json'}, function(data){
       
   234                 data.sort(function (a, b) {
       
   235                     return a.orderIndex > b.orderIndex;
       
   236                 });
       
   237             });
       
   238         });
       
   239 
       
   240         $scope.toggleModal = function (index) {
       
   241 
       
   242             var modalInstance = $modal.open({
       
   243                 templateUrl: 'books/add_book_modal.html',
       
   244                 controller: 'ModalAddBookCtrl',
       
   245                 size: 'sm'
       
   246             });
       
   247 
       
   248             modalInstance.result.then(function (idBook) {
       
   249                 var newSlide = {
       
   250                     book: idBook,
       
   251                     idInventory: $scope.results.hits[index].metas_dict.inventorynumber
       
   252                 };
       
   253                 Slide.save(newSlide);
       
   254             });
       
   255         };
       
   256 
       
   257         $scope.sortableOptions = {
       
   258                 stop: function() {
       
   259                     var order = $scope.book.slides.map(function(i){
       
   260                         return i.id;
       
   261                     });
       
   262                     Order.save({idBook:$routeParams.idBook}, {order: order});
       
   263                 }
       
   264         };
       
   265         
       
   266         $scope.deleteItem = function(item){
       
   267             if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
       
   268                 Slide.delete({idSlide: item.id}, function(){
       
   269                     $scope.book.slides.splice($scope.book.slides.indexOf(item), 1);
       
   270                 },
       
   271                 function(error) {
       
   272                     if (error.status === 404){
       
   273                         $scope.book.slides.splice($scope.book.indexOf(item), 1);
       
   274                     }
       
   275                 });
       
   276             }
       
   277         };
       
   278     })
   224     })
   279     .controller('ModalAddBookCtrl', function ($scope, Book, $modalInstance) {
   225     .controller('ModalAddBookCtrl', function ($scope, Book, $modalInstance) {
   280 
   226 
   281         $scope.add = function(){
   227         $scope.add = function(){
   282             $modalInstance.close($scope.title);
   228             $modalInstance.close($scope.title);
   301 (function(){
   247 (function(){
   302     'use strict';
   248     'use strict';
   303     
   249     
   304     angular.module('ammicoCommon', ['ngRoute'])
   250     angular.module('ammicoCommon', ['ngRoute'])
   305     .factory('Book', function($resource, context) {
   251     .factory('Book', function($resource, context) {
   306         var books = $resource(context.urls.ammicoUrl+'/books/:idBook', {idBook:'@id'}, {update: { method: 'PUT'}});
   252         var books = $resource(context.urls.ammicoUrl+'books/:idBook', {idBook:'@id', idExpo: context.idExpo}, {update: { method: 'PUT'}});
   307         return books;
   253         return books;
   308     })
   254     })
   309     .factory('Slide', function($resource, context) {
   255     .factory('Slide', function($resource, context, $modal) {
   310         var slides = $resource(context.urls.ammicoUrl+'/slides/:idSlide', {idSlide:'@id'}, {update: { method: 'PUT'}});
   256         var slides = $resource(context.urls.ammicoUrl+'slides/:idSlide', {idSlide:'@id'}, {update: { method: 'PUT'}});
   311         
   257         
   312         angular.extend(slides.prototype, {
   258         angular.extend(slides.prototype, {
   313 
   259 
   314             toggleFavorite: function () {
   260             toggleFavorite: function () {
   315                 this.favorite = !this.favorite;
   261                 this.favorite = !this.favorite;
   316                 this.$update();
   262                 this.$update();
       
   263             },
       
   264             addToBook: function () {
       
   265                 var _this = this;
       
   266                 var modalInstance = $modal.open({
       
   267                     templateUrl: 'books/add_book_modal.html',
       
   268                     controller: 'ModalAddBookCtrl',
       
   269                     size: 'sm'
       
   270                 });
       
   271 
       
   272                 modalInstance.result.then(function (idBook) {
       
   273                     var newSlide = _this;
       
   274                     newSlide.book = idBook;
       
   275                     delete newSlide["id"];
       
   276                     slides.save(newSlide);
       
   277                 });
       
   278             },
       
   279             update: function(){
       
   280                 console.log('test');
   317             },
   281             },
   318             remove: function (array) {
   282             remove: function (array) {
   319                 var _this = this;
   283                 var _this = this;
   320                 if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
   284                 if(window.confirm('Êtes-vous sûr(e) de vouloir effacer cet élément ? Cette action est irrémédiable.')){
   321                     this.$delete(function(){
   285                     this.$delete(function(){
   322                         if (array){
   286                         if (array){
   323                             array.splice(array.indexOf(_this), 1);
   287                             array.splice(array.indexOf(_this), 1);
   324                         }
   288                         }
       
   289                         //$scope.$emit("slideDeleted", array);
   325                     },
   290                     },
   326                     function(error) {
   291                     function(error) {
   327                         if (error.status === 404 && array){
   292                         if (error.status === 404 && array){
   328                                 array.splice(array.indexOf(_this), 1);
   293                                 array.splice(array.indexOf(_this), 1);
   329                         }
   294                         }
   333         });
   298         });
   334         
   299         
   335         return slides;
   300         return slides;
   336     })
   301     })
   337     .factory('Order', function($resource, context) {
   302     .factory('Order', function($resource, context) {
   338         return $resource(context.urls.ammicoUrl+'/books/:idBook/order', {idBook:'@id'});
   303         return $resource(context.urls.ammicoUrl+'books/:idBook/order', {idBook:'@id'});
   339     })
   304     })
   340     .service('Utils', function($resource, context, $sce) {
   305     .service('Utils', function($resource, context, $sce) {
   341         this.sanitizeUrls = function(data){
   306         this.sanitizeUrls = function(data){
   342             data.details.audio = $sce.trustAsResourceUrl(data.details.audio);
   307             data.details.audio = $sce.trustAsResourceUrl(data.details.audio);
   343             data.details.video = $sce.trustAsResourceUrl(data.details.video);
   308             data.details.video = $sce.trustAsResourceUrl(data.details.video);
   345             data.video = $sce.trustAsResourceUrl(data.video);
   310             data.video = $sce.trustAsResourceUrl(data.video);
   346             return data;
   311             return data;
   347         };
   312         };
   348     })
   313     })
   349     .service('authApi', function($resource, context) {
   314     .service('authApi', function($resource, context) {
   350         this.login = $resource(context.urls.ammicoUrl+'/auth/api-token-auth');
   315         this.login = $resource(context.urls.ammicoUrl+'auth/api-token-auth', {idExpo: context.idExpo});
   351         this.logout = $resource(context.urls.ammicoUrl+'/auth/logout');
   316         this.logout = $resource(context.urls.ammicoUrl+'auth/logout');
   352         this.user = $resource(context.urls.ammicoUrl+'/auth/user');
   317         this.user = $resource(context.urls.ammicoUrl+'auth/user');
   353         this.test = $resource(context.urls.ammicoUrl+'/auth/auth');
   318         this.test = $resource(context.urls.ammicoUrl+'auth/auth');
   354     })
   319     })
   355     .service('searchApi', function($resource, context) {
   320     .service('searchApi', function($resource, context) {
   356         this.searchResource = function(params){
   321         this.searchResource = function(params){
   357             return $resource(context.urls.searchUrl,  
   322             return $resource(context.urls.searchUrl,  
   358                     {
   323                     {
   448             data.sort(function (a, b) {
   413             data.sort(function (a, b) {
   449                 return a.date < b.date;
   414                 return a.date < b.date;
   450             });
   415             });
   451 
   416 
   452             for (var i = 0; i < data.length; i++) {
   417             for (var i = 0; i < data.length; i++) {
   453                 if (data[i].idArticle){
   418                 if (data[i].id_article){
   454                     data[i].slides = Slide.query({idBook:data[i].id, format:'json'});
   419                     data[i].slides = Slide.query({idBook:data[i].id, format:'json'});
   455                 }
   420                 }
   456             }    
   421             }    
   457         });
   422         });
   458 
   423 
   507             });
   472             });
   508 
   473 
   509             modalInstance.result.then(function (idBook) {
   474             modalInstance.result.then(function (idBook) {
   510                 var newSlide = {
   475                 var newSlide = {
   511                     book: idBook,
   476                     book: idBook,
   512                     idInventory: $scope.results.hits[index].metas_dict.inventorynumber
   477                     id_inventory: $scope.results.hits[index].metas_dict.inventorynumber
   513                 };
   478                 };
   514                 Slide.save(newSlide);
   479                 Slide.save(newSlide);
   515             });
   480             });
   516         };
   481         };
   517     })
   482     })
   590             data.sort(function (a, b) {
   555             data.sort(function (a, b) {
   591                 return a.date < b.date;
   556                 return a.date < b.date;
   592             });
   557             });
   593 
   558 
   594             for (var i = 0; i < data.length; i++) {
   559             for (var i = 0; i < data.length; i++) {
   595                 if (data[i].idArticle){
   560                 if (data[i].id_article){
   596                     data[i].slides = Slide.query({idBook:data[i].id, limit: 5, format:'json'});
   561                     data[i].slides = Slide.query({idBook:data[i].id, limit: 5, format:'json'});
   597                 }
   562                 }
   598             }    
   563             }    
   599         });
   564         });
   600 
   565 
   607             });
   572             });
   608 
   573 
   609             modalInstance.result.then(function (idBook) {
   574             modalInstance.result.then(function (idBook) {
   610                 var newSlide = {
   575                 var newSlide = {
   611                     book: idBook,
   576                     book: idBook,
   612                     idInventory: $scope.results.hits[index].metas_dict.inventorynumber
   577                     id_inventory: $scope.results.hits[index].metas_dict.inventorynumber
   613                 };
   578                 };
   614                 Slide.save(newSlide);
   579                 Slide.save(newSlide);
   615             });
   580             });
   616         };
   581         };
   617 
   582