client/app/slideshow/slideshow_controller.js
author cavaliet
Fri, 03 Oct 2014 16:15:50 +0200
changeset 4 28208a0ad8b9
parent 2 36ccc573af9a
child 8 824c87a9084c
permissions -rw-r--r--
edit slide by url
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
(function(){
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
  'use strict';
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
  angular.module('ammicoSlideshow',['ngResource', 'ngRoute', 'ui.bootstrap'])
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
    .config(function ($routeProvider) {
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
      $routeProvider
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
        .when('/', {
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
          templateUrl: 'slideshow/slideshow.html',
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
          controller: 'slideshowCtrl'
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
        });
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
    })
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
    .service('slideshowApi', function($resource, context) {
2
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    13
      console.log('slideshow 5',this);
1
74bbdd739878 views, path, search...
cavaliet
parents: 0
diff changeset
    14
      this.slideshow = $resource(context.urls.slideshowUrl);
0
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
    })
4
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    16
    .service('slideshowModel', function(slideshowApi) {
2
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    17
      console.log('slideshow 6',this);
4
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    18
      this.slideshow = slideshowApi.slideshow.get();
0
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
    })
2
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    20
    .controller('slideshowCtrl', function($scope, $filter, $location, $routeParams, $timeout, searchApi, slideshowModel){
4
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    21
      console.log('slideshow 7', $location, $routeParams, searchApi, slideshowModel);
0
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
      $scope.slideshow = slideshowModel.slideshow;
1
74bbdd739878 views, path, search...
cavaliet
parents: 0
diff changeset
    23
      $scope.iSlide = parseInt($routeParams.iSlide) || 0;
4
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    24
      console.log('$routeParams',$routeParams);
2
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    25
      if(typeof $routeParams.searched !== 'undefined'){
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    26
          var a = $routeParams.searched.split(',');
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    27
          var q = a[0], i = parseInt(a[1]);
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    28
          if(a.length===2 && !isNaN(i)){
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    29
              searchApi.searchResource({q:q, of: 'json', synthesis: 'false', nresults:'50', callback: 'JSON_CALLBACK'}).$promise.then(
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    30
                  //success
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    31
                  function( data ){
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    32
                      var hit = data.hits[i];
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    33
                      $scope.slideshow.images.push({url: $filter('meta')(hit.metas, 'url'), 
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    34
                                                    title: $filter('meta')(hit.metas, 'name'), 
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    35
                                                    description: $filter('meta')(hit.metas, 'description'), tags: [], user_title:'', user_description:''});
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    36
                      // timeout because
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    37
                      $timeout(function(){$scope.slideshow.images[$scope.slideshow.images.length-1].active = true;}, 200);
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    38
                  },
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    39
                  //error
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    40
                  function( error ){
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    41
                      alert('Erreur avec la requĂȘte (dans slideshow)', error);
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    42
                  }
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    43
              );
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    44
          }
36ccc573af9a clean search resource
cavaliet
parents: 1
diff changeset
    45
      }
4
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    46
      $timeout(function(){
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    47
          if($scope.iSlide>=0 && $scope.iSlide<$scope.slideshow.images.length){
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    48
              $scope.slideshow.images[$scope.iSlide].active = true;
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    49
              var l = $location.path();
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    50
              if(l.substr(0,16)==='/slideshow/edit/'){
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    51
                  $scope.slideshow.images[$scope.iSlide].editMode = true;
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    52
              }
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    53
          }
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    54
      }, 200);
0
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
      $scope.save = function(){
1
74bbdd739878 views, path, search...
cavaliet
parents: 0
diff changeset
    57
          console.log('8 call save POST',$scope.slideshow);
74bbdd739878 views, path, search...
cavaliet
parents: 0
diff changeset
    58
          $scope.slideshow
0
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
          .$save()
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
          .then(
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
              function(response) {
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
                  console.log('NICE SAVING!', response);
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
              },
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
              function(reason){
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
                  alert('An error occured while saving : ' + reason);
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
              }
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
          );
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
      };
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
    })
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
    .directive('slideEditor', function() {
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
      return {
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
          restrict: 'AE',
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
          replace: true,
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
          scope: false,
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
          templateUrl: 'slideshow/dataEditor.html',
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
          //controller: function($scope, $element, $attrs){
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
          controller: function($scope){
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
              $scope.slidesave = function(){
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
                  if(typeof $scope.slide.tags === 'string'){
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
                      $scope.slide.tags = $scope.slide.tags.split(',');
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
                  }
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
                  for (var i = $scope.slide.tags.length - 1; i >= 0; i--) {
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
                      $scope.slide.tags[i] = $scope.slide.tags[i].trim();
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
                  }
4
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    85
                  $scope.slide.editMode = false;
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    86
                  $scope.save();
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    87
              };
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    88
              $scope.editSlidesave = function(){
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    89
                  if(typeof $scope.slide.tags === 'string'){
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    90
                      $scope.slide.tags = $scope.slide.tags.split(',');
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    91
                  }
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    92
                  for (var i = $scope.slide.tags.length - 1; i >= 0; i--) {
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    93
                      $scope.slide.tags[i] = $scope.slide.tags[i].trim();
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    94
                  }
28208a0ad8b9 edit slide by url
cavaliet
parents: 2
diff changeset
    95
                  $scope.slide.editMode = false;
0
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
                  $scope.save();
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
              };
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
          }
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
      };
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
  });
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
cef349423167 add basic file org + client prototype
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
})();