/**
* @ngdoc directives
* @name RotasUnificadasFilter
* @module s4c.directives.RotasUnificadasFilter.rotasUnificadasFilter
*
* @description
* `RotasUnificadasFilter` Controller do Filtro da funcionalidade de Rotas Unificadas
*
*
*/
(function () {
'use strict';
function RotasUnificadasFilter(RotasUnificadasFilter, Departamento, localize, PermissoesService) {
return {
restrict: 'E',
templateUrl: 'app/directives/rotas-unificadas-filter/rotas-unificadas-filter.html',
replace: true,
scope: {},
link: function ($scope, $elem, $attrs) {
$scope.res = $scope.$root.res;
angular.extend($scope, {
applyFilter: applyFilter,
marcarDesmarcarTodos: marcarDesmarcarTodos
});
$scope.isChecked = function () {
return $scope.marcar_todos;
}
PermissoesService.getPermissoes().then(function (perms) {
$scope.permissoesVisualizacao = perms.permissoesVisualizacao;
$scope.permissoesCriacao = perms.permissoesCriacao;
$scope.permissoesEdicao = perms.permissoesEdicao;
$scope.permissoesRemocao = perms.permissoesRemocao;
});
$scope.hasPermission = function () {
return $scope.permissoesVisualizacao.rotaPublica;
}
$scope.marcar_todos = true;
var instance = RotasUnificadasFilter.getInstance($attrs.id);
Departamento
.getAgencias()
.then(function (departamentos) {
instance.agencias = _.map(departamentos, function (departamento) {
departamento.ativo = true;
return departamento;
});
$scope.agencias = instance.agencias;
});
instance.dataRange = _timeSet();
$scope.dataRange = {
start: moment().subtract(1, 'day').startOf('day').format('D/MM - HH:mm'),
end: moment().endOf('day').format('D/MM - HH:mm')
};
/**
* @method _timeSet
*/
function _timeSet() {
return {
start: moment().subtract(1, 'day').startOf('day').format(),
end: moment().endOf('day').format()
}
};
/**
* @method _setTimeWindow
*/
function _setTimeWindow() {
var start = ($scope.dataRange.start) ?
moment($scope.dataRange.start, 'D/MM - HH:mm').format() :
null;
var end = ($scope.dataRange.end) ?
moment($scope.dataRange.end, 'D/MM - HH:mm').format() :
null;
instance.dataRange = {
start: start,
end: end
};
}
/**
* @method applyFilter
* @param {*} toggle
*/
function applyFilter(toggle) {
instance.trigger('filterChanged');
if (!toggle) {
$scope.$parent.toogleFilter();
}
}
/**
* @method marcarDesmarcarTodos
*/
function marcarDesmarcarTodos() {
$scope.marcar_todos = !$scope.marcar_todos;
if ($scope.marcar_todos) {
angular.forEach($scope.agencias, function (agencia) {
agencia.ativo = true;
});
} else {
angular.forEach($scope.agencias, function (agencia) {
agencia.ativo = false;
});
}
}
}
};
}
RotasUnificadasFilter.$inject = ['RotasUnificadasFilter', 'Departamento', 'localize', 'PermissoesService'];
angular.module('s4c.components.rotas-unificadas')
.directive('rotasUnificadasFilter', RotasUnificadasFilter);
}());