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 |
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 |