IIC2173-2015-2-Grupo2/GUI

View on GitHub
source/directives/navbar.directive.js

Summary

Maintainability
A
2 hrs
Test Coverage
(function() {
  'use strict';

  angular.module('app')
         .directive('appNavbar', appNavbar);

  function appNavbar() {
    var directive = {
      restrict: 'E',
      templateUrl: 'templates/shared/navbar.html',
      controller: navbarController,
      controllerAs: 'navbarCtrl'
    };

    return directive;
  }

  navbarController.$inject = ['$rootScope', 'sessionService', 'searchService'];

  function navbarController($rootScope, sessionService, searchService) {
    var vm = this;
    vm.session = {};
    getLSLists();

    vm.login = function() {
      sessionService.login(vm.session)
                    .then(vm.session = {});
    };

    vm.logout = function() {
      sessionService.logout();
    };

    vm.clearSearch = function() {
      searchService.clearCurrentNews();
      vm.filters = {};
      emitSearch();
    };

    vm.search = function() {
      searchService.setCurrentFilter(vm.filters);
      emitSearch();
    };

    function emitSearch() {
      $('#search-modal').modal('hide');
      $rootScope.$emit('newsChanged');
    }

    function getLSLists() {
      if (sessionService.loggedIn()) {
        vm.tagCollection      = vm.tagCollection      || searchService.getLSTags();
        vm.providerCollection = vm.providerCollection || searchService.getLSProviders();
        vm.categoryCollection = vm.categoryCollection || searchService.getLSCategories();
        vm.peopleCollection   = vm.peopleCollection   || searchService.getLSPeople();
        vm.locationCollection = vm.locationCollection || searchService.getLSLocations();
        vm.companyCollection  = vm.companyCollection  || searchService.getLSCompanies();
      }
    }

    $rootScope.$on('login', function() {
      vm.tagCollection      = searchService.getTags();
      vm.providerCollection = searchService.getProviders();
      vm.categoryCollection = searchService.getCategories();
      vm.peopleCollection   = searchService.getPeople();
      vm.locationCollection = searchService.getLocations();
      vm.companyCollection  = searchService.getCompanies();
    });

    $rootScope.$on('logout', function() {
      vm.logout();
    });
  }
})();