arnaucube
arnaucube/commonroutesAppPublic Self-hosted repository
commonroutesApp/www/js/controllers.js
www/js/controllers.jsRaw
  1
  2//var urlapi="http://localhost:3000/api/";
  3var urlapi="https://collectivecar.paas.primustech.io/api/";
  4
  5
  6//localStorage.setItem("c_username", "user2");
  7//localStorage.setItem("c_token", "");
  8
  9
 10angular.module('starter.controllers', ['pascalprecht.translate'])
 11
 12.controller('AppCtrl', function($scope, $ionicModal, $timeout, $http, $window, $ionicLoading) {
 13  // With the new view caching in Ionic, Controllers are only called
 14  // when they are recreated or on app start, instead of every page change.
 15  // To listen for when this page is active (for example, to refresh data),
 16  // listen for the $ionicView.enter event:
 17  //$scope.$on('$ionicView.enter', function(e) {
 18  //});
 19
 20  // Form data for the login modal
 21  $scope.loginData = {};
 22  $scope.signupData= {};
 23
 24  $scope.storageusername=localStorage.getItem("c_username");
 25  $scope.storageavatar=localStorage.getItem("c_avatar");
 26  // Create the login modal that we will use later
 27  $ionicModal.fromTemplateUrl('templates/login.html', {
 28    scope: $scope
 29  }).then(function(modal) {
 30    $scope.modalLogin = modal;
 31  });
 32  $ionicModal.fromTemplateUrl('templates/signup.html', {
 33    scope: $scope
 34  }).then(function(modal) {
 35    $scope.modalSignup = modal;
 36  });
 37
 38  // Triggered in the login modal to close it
 39  $scope.closeLogin = function() {
 40    $scope.modalLogin.hide();
 41  };
 42  $scope.closeSignup = function() {
 43    $scope.modalSignup.hide();
 44  };
 45
 46  // Open the login modal
 47  $scope.login = function() {
 48    $scope.modalLogin.show();
 49  };
 50  $scope.signup = function() {
 51    $scope.modalSignup.show();
 52  };
 53
 54  // Perform the login action when the user submits the login form
 55  $scope.doLogin = function() {
 56    console.log('Doing login', $scope.loginData);
 57
 58    $http({
 59        url: urlapi + 'auth',
 60        method: "POST",
 61        data: $scope.loginData
 62    })
 63    .then(function(response) {
 64            // success
 65            console.log("response: ");
 66            console.log(response.data);
 67            if(response.data.success==true)
 68            {
 69                console.log("login successful");
 70                localStorage.setItem("c_username", $scope.loginData.username);
 71                localStorage.setItem("c_token", response.data.token);
 72                localStorage.setItem("c_userid", response.data.userid);
 73                localStorage.setItem("c_avatar", response.data.avatar);
 74
 75                localStorage.setItem("c_userdata", JSON.stringify(response.data.userdata));
 76
 77                $timeout(function() {
 78                  $scope.closeLogin();
 79                  $window.location.reload(true);
 80                }, 1000);
 81            }else{
 82                console.log("login failed");
 83                $ionicLoading.show({ template: 'Login failed, user or password error.', noBackdrop: true, duration: 2000 });
 84            }
 85
 86
 87    },
 88    function(response) { // optional
 89            // failed
 90            console.log(response);
 91    });
 92
 93  };
 94  $scope.doSignup = function() {
 95    console.log('Doing signup', $scope.signupData);
 96    if($scope.emptyParams($scope.signupData))
 97    {
 98      $http({
 99          url: urlapi + 'users',
100          method: "POST",
101          data: $scope.signupData
102      })
103      .then(function(response) {
104              // success
105              console.log("response: ");
106              console.log(response.data);
107              $scope.loginData.username=$scope.signupData.username;
108              $timeout(function() {
109                $scope.closeSignup();
110                $scope.login();
111              }, 1000);
112
113      },
114      function(response) { // optional
115              // failed
116            $ionicLoading.show({ template: 'Username already taken', noBackdrop: true, duration: 2000 });
117      });
118    }else{
119      $ionicLoading.show({ template: 'First complete all parameters', noBackdrop: true, duration: 2000 });
120    }
121
122  };
123  $scope.emptyParams = function(obj){
124    if(obj.username==undefined)
125    {
126      return(false);
127    }
128    if(obj.password==undefined)
129    {
130      return(false);
131    }
132    if(obj.mail==undefined)
133    {
134      return(false);
135    }
136    if(obj.phone==undefined)
137    {
138      return(false);
139    }
140    if(obj.avatar==undefined)
141    {
142      return(false);
143    }
144    return(true);
145  };
146  $scope.avatars=[
147    "turtle",
148    "cat",
149    "toucan",
150    "racoon",
151    "tiger",
152    "squirrel",
153    "sheep",
154    "penguin",
155    "panda",
156    "owl",
157    "pelican",
158    "whale",
159    "snake",
160    "mouse",
161    "giraffe",
162    "macaw",
163    "lion",
164    "llama",
165    "kangaroo",
166    "hen",
167    "frog",
168    "clown-fish",
169    "chameleon",
170    "octopus"
171  ];
172  $scope.avatarSelect = function(avat){
173    $scope.signupData.avatar=avat;
174    //alert($scope.signupData.avatar);
175  };
176  $scope.logout = function(){
177      localStorage.removeItem("c_username");
178      localStorage.removeItem("c_token");
179      localStorage.removeItem("c_avatar");
180      localStorage.removeItem("c_userid");
181      localStorage.removeItem("c_userdata");
182      $window.location.reload(true);
183  };
184
185  /* if no logged, suggest to login */
186  if(localStorage.getItem('c_token')){// adding token to the headers
187      $http.defaults.headers.common['X-Access-Token'] = localStorage.getItem('c_token');
188  }else{
189    setTimeout(function(){
190      $scope.login();
191    },1000);
192  }
193})
194
195
196.controller('TravelsCtrl', function($scope, $http, $ionicModal, $timeout, $ionicLoading) {
197    if(localStorage.getItem('c_token')){// adding token to the headers
198        //console.log("token added to headers in run module");
199        //console.log($http.defaults);
200        $http.defaults.headers.post['X-Access-Token'] = localStorage.getItem('c_token');
201        //$http.defaults.headers.post['Content-Type'] = "application/x-www-form-urlencoded; charset=UTF-8";
202        //console.log($http.defaults.headers);
203    }
204    /*if(localStorage.getItem('c_token')){// adding token to the headers
205        $http.defaults.headers.token = localStorage.getItem('c_token');
206    }*/
207
208    $scope.travels="";
209    $scope.travels=JSON.parse(localStorage.getItem('c_travels'));
210    $scope.userdata=JSON.parse(localStorage.getItem('c_userdata'));
211    console.log($scope.userdata);
212
213    $scope.doRefresh = function() {
214      /* travels refresh: */
215        $http.get(urlapi + 'travels')
216        .success(function(data, status, headers,config){
217            console.log('data success');
218            console.log(data); // for browser console
219            $scope.travels = data; // for UI
220            localStorage.setItem('c_travels', JSON.stringify($scope.travels));
221            localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
222            $scope.$broadcast('scroll.refreshComplete');//refresher stop
223
224        })
225        .error(function(data, status, headers,config){
226            console.log('data error');
227            $scope.$broadcast('scroll.refreshComplete');//refresher stop
228            $ionicLoading.show({ template: 'Error connecting server', noBackdrop: true, duration: 2000 });
229
230        })
231        .then(function(result){
232            travels = result.data;
233            $ionicLoading.show({ template: 'Travels actualized from server!', noBackdrop: true, duration: 2000 });
234        });
235
236        /* users refresh: */
237        $http.get(urlapi + 'users')
238        .success(function(data, status, headers, config){
239            console.log('data success');
240            console.log(data); // for browser console
241            $scope.users = data; // for UI
242            localStorage.setItem('c_users', JSON.stringify($scope.users));
243            $scope.$broadcast('scroll.refreshComplete');//refresher stop
244        })
245        .error(function(data, status, headers,config){
246            console.log('data error');
247            $scope.$broadcast('scroll.refreshComplete');//refresher stop
248        })
249        .then(function(result){
250            users = result.data;
251        });
252    };
253    $scope.newtravel={};
254    /*$scope.newtravel={
255        title: "prova",
256        from: "prova",
257        to: "prova",
258        seats: 3,
259        package: true,
260        phone: 123,
261        telegram: "telusr",
262        description: "this is the description of prova"
263    };*/
264
265  // Create the login modal that we will use later
266  $ionicModal.fromTemplateUrl('templates/newofferingtravel.html', {
267    scope: $scope
268  }).then(function(modal) {
269    $scope.modalOffering = modal;
270  });
271
272  // Create the login modal that we will use later
273  $ionicModal.fromTemplateUrl('templates/newaskingtravel.html', {
274    scope: $scope
275  }).then(function(modal) {
276    $scope.modalAsking = modal;
277  });
278
279  $ionicModal.fromTemplateUrl('templates/newaskingpackage.html', {
280    scope: $scope
281  }).then(function(modal) {
282    $scope.modalPackage = modal;
283  });
284
285  // Triggered in the login modal to close it
286  $scope.closeNewOfferingTravel = function() {
287    $scope.modalOffering.hide();
288  };
289  // Triggered in the login modal to close it
290  $scope.closeNewAskingTravel = function() {
291    $scope.modalAsking.hide();
292  };
293  $scope.closeNewAskingPackage = function() {
294    $scope.modalPackage.hide();
295  };
296
297  // Open the login modal
298  $scope.showNewOfferingTravel = function() {
299    $scope.modalOffering.show();
300  };
301  // Open the login modal
302  $scope.showNewAskingTravel = function() {
303    $scope.modalAsking.show();
304  };
305  $scope.showNewAskingPackage = function() {
306    $scope.modalPackage.show();
307  };
308
309  // Perform the login action when the user submits the login form
310  $scope.doNewOfferingTravel = function() {
311    console.log('Doing new travel', $scope.newtravel);
312    $scope.newtravel.icon="lorry";
313    $scope.newtravel.generateddate=$scope.newtravel.date;
314    $scope.newtravel.owner=localStorage.getItem("c_username");
315    $scope.newtravel.telegram=JSON.parse(localStorage.getItem("c_userdata")).telegram;
316    $scope.newtravel.phone=JSON.parse(localStorage.getItem("c_userdata")).phone;
317    $scope.newtravel.modality="offering";
318    //$scope.newtravel.token=localStorage.getItem("c_token");
319    console.log($scope.newtravel);
320    $http({
321        url: urlapi + 'travels',
322        method: "POST",
323        data: $scope.newtravel
324    })
325    .then(function(response) {
326            // success
327            console.log("response: ");
328            console.log(response);
329            //$scope.newtravel._id=response.data._id;
330            //$scope.travels.push($scope.newtravel);
331            $scope.travels=response.data;
332            localStorage.setItem('c_travels', JSON.stringify($scope.travels));
333            localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
334            $scope.newtravel={};
335            if(response.data.success==false){
336
337                $ionicLoading.show({ template: 'failed to generate new travel', noBackdrop: true, duration: 2000 });
338            }
339    },
340    function(response) { // optional
341            // failed
342    });
343
344    // Simulate a login delay. Remove this and replace with your login
345    // code if using a login system
346    $timeout(function() {
347      $scope.closeNewOfferingTravel();
348    }, 1000);
349  };
350
351  $scope.doNewAskingTravel = function() {
352    console.log('Doing new travel', $scope.newtravel);
353    $scope.newtravel.icon="lorry";
354    $scope.newtravel.generateddate=$scope.newtravel.date;
355    $scope.newtravel.owner=localStorage.getItem("c_username");
356    $scope.newtravel.telegram=JSON.parse(localStorage.getItem("c_userdata")).telegram;
357    $scope.newtravel.phone=JSON.parse(localStorage.getItem("c_userdata")).phone;
358
359    $scope.newtravel.modality="asking";
360    console.log($scope.newtravel);
361    $http({
362        url: urlapi + 'travels',
363        method: "POST",
364        data: $scope.newtravel
365    })
366    .then(function(response) {
367            // success
368            console.log("response: ");
369            console.log(response);
370            //$scope.newtravel._id=response.data._id;
371            //$scope.travels.push($scope.newtravel);
372            $scope.travels=response.data;
373            localStorage.setItem('c_travels', JSON.stringify($scope.travels));
374            localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
375            $scope.newtravel={};
376            if(response.data.success==false){
377
378                $ionicLoading.show({ template: 'failed to generate new asking travel', noBackdrop: true, duration: 2000 });
379            }
380    },
381    function(response) { // optional
382            // failed
383    });
384
385    // Simulate a login delay. Remove this and replace with your login
386    // code if using a login system
387    $timeout(function() {
388      $scope.closeNewAskingTravel();
389    }, 1000);
390  };
391
392  $scope.doNewAskingPackage = function() {
393    console.log('Doing new package', $scope.newtravel);
394    $scope.newtravel.icon="lorry";
395    $scope.newtravel.generateddate=$scope.newtravel.date;
396    $scope.newtravel.owner=localStorage.getItem("c_username");
397    $scope.newtravel.telegram=JSON.parse(localStorage.getItem("c_userdata")).telegram;
398    $scope.newtravel.phone=JSON.parse(localStorage.getItem("c_userdata")).phone;
399
400    $scope.newtravel.package=true;
401
402    $scope.newtravel.modality="package";
403    console.log($scope.newtravel);
404    $http({
405        url: urlapi + 'travels',
406        method: "POST",
407        data: $scope.newtravel
408    })
409    .then(function(response) {
410            // success
411            console.log("response: ");
412            console.log(response);
413            //$scope.newtravel._id=response.data._id;
414            //$scope.travels.push($scope.newtravel);
415            $scope.travels=response.data;
416            localStorage.setItem('c_travels', JSON.stringify($scope.travels));
417            localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
418            $scope.newtravel={};
419            if(response.data.success==false){
420
421                $ionicLoading.show({ template: 'failed to generate new asking package', noBackdrop: true, duration: 2000 });
422            }
423    },
424    function(response) { // optional
425            // failed
426    });
427
428    // Simulate a login delay. Remove this and replace with your login
429    // code if using a login system
430    $timeout(function() {
431      $scope.closeNewAskingPackage();
432    }, 1000);
433  };
434})
435
436.controller('TravelCtrl', function($scope, $stateParams, $http, $ionicModal, $ionicPopup, $filter) {
437    if(localStorage.getItem('c_token')){// adding token to the headers
438        $http.defaults.headers.common['X-Access-Token'] = localStorage.getItem('c_token');
439    }
440    $scope.storageusername=localStorage.getItem("c_username");
441    console.log($stateParams.travelId);
442    $scope.travels= JSON.parse(localStorage.getItem('c_travels'));
443    $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
444
445    /*$http.get(urlapi + 'travels/comment/'+$stateParams.travelId)
446        .success(function(data, status, headers,config){
447            console.log(data); // for browser console
448            $scope.comments = data; // for UI
449        })
450        .error(function(data, status, headers,config){
451            console.log('data error');
452        })
453        .then(function(result){
454            comments = result.data;
455    });*/
456
457    $scope.deleteTravel = function(){
458
459       var confirmPopup = $ionicPopup.confirm({
460         title: 'Deleting publication',
461         template: 'Are you sure you want to delete <b>'+ $scope.travel.title+'</b>?'
462       });
463       confirmPopup.then(function(res) {
464       if(res) {
465         console.log('You are sure');
466         console.log("delete travel: " + $stateParams.travelId);
467         $http({
468             url: urlapi + 'travels/' + $stateParams.travelId,
469             method: "DELETE"
470         })
471         .then(function(response) {
472                 console.log(response);
473                 $scope.travels=response.data;
474                 localStorage.setItem('c_travels', JSON.stringify($scope.travels));
475                 localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
476
477         },
478         function(response) { // optional
479                 // failed
480         });
481       } else {
482         console.log('You are not sure');
483       }
484     });
485
486
487    };
488    $scope.joinTravel = function(){
489        $scope.newjoin={
490            //travelId: $stateParams.travelId,
491            joinedUserId: localStorage.getItem("c_userid"),
492            joinedUsername: localStorage.getItem("c_username"),
493            joinedAvatar: localStorage.getItem("c_avatar")
494        };
495        $http({
496            url: urlapi + 'travels/'+ $stateParams.travelId+'/join',
497            method: "POST",
498            data: $scope.newjoin
499        })
500        .then(function(response) {
501                // success
502                console.log("response: ");
503                console.log(response);
504
505                $scope.travels=response.data;
506                localStorage.setItem('c_travels', JSON.stringify($scope.travels));
507                localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
508                $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
509
510        },
511        function(response) { // optional
512                // failed
513        });
514    };
515    $scope.unjoinTravel = function(){
516        console.log("unjoin");
517        $scope.unjoin={
518            travelId: $stateParams.travelId,
519            joinedUserId: localStorage.getItem("c_userid"),
520            joinedUsername: localStorage.getItem("c_username"),
521            joinedAvatar: localStorage.getItem("c_avatar")
522        };
523        $http({
524            url: urlapi + 'travels/'+ $stateParams.travelId+'/unjoin',
525            method: "POST",
526            data: $scope.unjoin
527        })
528        .then(function(response) {
529                // success
530                console.log("response: ");
531                console.log(response);
532
533                $scope.travels=response.data;
534                localStorage.setItem('c_travels', JSON.stringify($scope.travels));
535                localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
536                $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
537
538        },
539        function(response) { // optional
540                // failed
541        });
542    };
543
544    /* adding comment */
545    $scope.doingNewComment=false;
546    $scope.newComment={};
547
548    $scope.showNewComment = function() {
549      $scope.doingNewComment=true;
550    };
551    $scope.closeNewComment = function() {
552        $scope.doingNewComment=false;
553    };
554    $scope.doNewComment = function() {
555        $scope.newComment.commentUserId=localStorage.getItem("c_userid");
556        $scope.newComment.commentUsername=localStorage.getItem("c_username");
557        $scope.newComment.commentAvatar=localStorage.getItem("c_avatar");
558console.log($scope.newComment);
559        $http({
560          url: urlapi + 'travels/'+ $stateParams.travelId+'/comment',
561          method: "POST",
562          data: $scope.newComment
563        })
564        .then(function(response) {
565              // success
566              console.log("newComment added to server: " + response);
567              console.log(response);
568              $scope.travels=response.data;
569              localStorage.setItem('c_travels', JSON.stringify($scope.travels));
570              localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
571              $scope.travel = $filter('filter')($scope.travels, $stateParams.travelId, true)[0];
572
573              if(response.data.success==false){
574
575                  $ionicLoading.show({ template: 'failed to generate new asking package', noBackdrop: true, duration: 2000 });
576              }
577        },
578        function(response) { // optional
579              // failed
580        });
581        $scope.closeNewComment();
582    };
583    console.log("a");
584    console.log($scope.storageusername);
585    console.log($scope.travel.owner);
586
587
588    $scope.arrayObjectIndexOf = function(myArray, searchTerm, property) {
589      //console.log(myArray+", "+searchTerm+", "+property);
590        if(myArray)
591        {
592            for(var i = 0, len = myArray.length; i < len; i++) {
593                if (myArray[i][property] === searchTerm){
594                    //console.log("i: " + i);
595                    return i;
596                }
597            }
598        }
599        //console.log("i: -1");
600        return -1;
601    };
602})
603
604.controller('UsersCtrl', function($scope, $http, $ionicModal, $timeout, $ionicLoading) {
605    $scope.users="";
606
607    $scope.users=JSON.parse(localStorage.getItem('c_users'));
608
609    $scope.doRefresh = function() {
610      /* travels refresh: */
611        $http.get(urlapi + 'travels')
612        .success(function(data, status, headers,config){
613            console.log('data success');
614            console.log(data); // for browser console
615            $scope.travels = data; // for UI
616            localStorage.setItem('c_travels', JSON.stringify($scope.travels));
617            localStorage.setItem('c_travelsLastDate', JSON.stringify(new Date()));
618            $scope.$broadcast('scroll.refreshComplete');//refresher stop
619
620        })
621        .error(function(data, status, headers,config){
622            console.log('data error');
623            $scope.$broadcast('scroll.refreshComplete');//refresher stop
624            $ionicLoading.show({ template: 'Error connecting server', noBackdrop: true, duration: 2000 });
625
626        })
627        .then(function(result){
628            travels = result.data;
629            $ionicLoading.show({ template: 'Travels actualized from server!', noBackdrop: true, duration: 2000 });
630        });
631
632        /* users refresh: */
633        $http.get(urlapi + 'users')
634        .success(function(data, status, headers, config){
635            console.log('data success');
636            console.log(data); // for browser console
637            $scope.users = data; // for UI
638            localStorage.setItem('c_users', JSON.stringify($scope.users));
639            $scope.$broadcast('scroll.refreshComplete');//refresher stop
640        })
641        .error(function(data, status, headers,config){
642            console.log('data error');
643            $scope.$broadcast('scroll.refreshComplete');//refresher stop
644        })
645        .then(function(result){
646            users = result.data;
647        });
648    };
649})
650
651.controller('UserCtrl', function($scope, $stateParams, $http, $filter) {
652    if(localStorage.getItem('c_token')){// adding token to the headers
653        $http.defaults.headers.common['X-Access-Token'] = localStorage.getItem('c_token');
654    }
655    $scope.storageusername=localStorage.getItem("c_username");
656    $scope.users= JSON.parse(localStorage.getItem('c_users'));
657    $scope.user = $filter('filter')($scope.users, $stateParams.username, true)[0];
658    //$scope.user="";
659    console.log($stateParams.username);
660    /*$http.get(urlapi + 'users/byusername/'+$stateParams.username)
661        .success(function(data, status, headers,config){
662            console.log('data success');
663            console.log(data); // for browser console
664            $scope.user = data; // for UI
665        })
666        .error(function(data, status, headers,config){
667            console.log('data error');
668        })
669        .then(function(result){
670            user = result.data;
671    });*/
672
673    $http.get(urlapi + 'travels/user/'+$stateParams.username)
674        .success(function(data, status, headers,config){
675            console.log('data success');
676            console.log(data); // for browser console
677            $scope.travels = data; // for UI
678        })
679        .error(function(data, status, headers,config){
680            console.log('data error');
681        })
682        .then(function(result){
683            travels = result.data;
684    });
685
686
687
688    $scope.favUser = function(){
689        $scope.newfav={
690            //travelId: $stateParams.travelId,
691            userId: localStorage.getItem("c_userid"),
692            username: localStorage.getItem("c_username"),
693            avatar: localStorage.getItem("c_avatar")
694        };
695        $scope.user.favs.push($scope.newfav);//al unfav no cal fer aquest simulacre pq ja no existeix a l'array i no el resta dos cops en cas de que cliquin dos cops
696        $http({
697            //url: urlapi + 'users/'+ $stateParams.username+'/fav',
698            url: urlapi + 'users/'+ $scope.user._id+'/fav',
699            method: "POST",
700            data: $scope.newfav
701        })
702        .then(function(response) {
703                // success
704                console.log("response: ");
705                console.log(response);
706
707                $scope.users=response.data;
708                localStorage.setItem('c_users', JSON.stringify($scope.users));
709                $scope.user = $filter('filter')($scope.users, $stateParams.username, true)[0];
710
711        },
712        function(response) { // optional
713                // failed
714        });
715    };
716    $scope.unfavUser = function(){
717        console.log("unfav");
718        $scope.unfav={
719            userId: localStorage.getItem("c_userid"),
720            username: localStorage.getItem("c_username"),
721            avatar: localStorage.getItem("c_avatar")
722        };
723        $http({
724            //url: urlapi + 'users/'+ $stateParams.username+'/fav',
725            url: urlapi + 'users/'+ $scope.user._id+'/unfav',
726            method: "POST",
727            data: $scope.unfav
728        })
729        .then(function(response) {
730                // success
731                console.log("response: ");
732                console.log(response);
733
734                $scope.users=response.data;
735                localStorage.setItem('c_users', JSON.stringify($scope.users));
736                $scope.user = $filter('filter')($scope.users, $stateParams.username, true)[0];
737
738        },
739        function(response) { // optional
740                // failed
741        });
742    };
743
744    $scope.arrayObjectIndexOf = function(myArray, searchTerm, property) {
745        if(myArray){
746            for(var i = 0, len = myArray.length; i < len; i++) {
747                if (myArray[i][property] === searchTerm){
748                    return i;
749                }
750            }
751        }
752        return -1;
753    };
754})
755.controller('SettingsCtrl', function($scope, $stateParams, $translate) {
756  if(localStorage.getItem('lang'))//initialization
757  {
758    $scope.lang=localStorage.getItem('lang');
759  }else{
760    localStorage.setItem('lang', 'english');
761    $scope.lang=localStorage.getItem('lang');
762  }
763
764  $scope.langChange = function(lang){
765    console.log(lang);
766      window.localStorage.setItem('lang', lang);
767      $translate.use(lang);
768  };
769})
770.controller('HelpCtrl', function($scope, $stateParams, $translate) {
771  console.log("help page");
772});