Source: directives/legenda-calendario-olimpico/legenda-calendario-olimpico.js

// Após a execução do proceso S4C-449, que fez as legendas não desencadearem
// ato de filtragem, aparentemente essa diretiva não tem mais sentido em
// existir no sistema. A remoção deste arquivo é recomendada quando os testes
// do sistema não falharem na ausência deste. 
/**
 * @ngdoc directives
 * @name legendaCalendarioOlimpico
 * @module s4c.directives.legenda-calendario-olimpico.legendaCalendarioOlimpico
 *
 * @description
 * `LegendaCalendarioOlimpico` exibe informações sobre a Legenda do Calendário Olímpico
 *
 *@example
 *   <legenda-calendario-olimpico></legenda-calendario-olimpico>
 *
 */
(function () {
    angular.module('s4c.components.legenda-calendario-olimpico', [])
        .directive('legendaCalendarioOlimpico', LegendaCalendarioOlimpico);

    LegendaCalendarioOlimpico.$inject = ['LegendaIncidenteFilter'];

    function LegendaCalendarioOlimpico(LegendaIncidenteFilter) {
        return {
            restrict: 'E',
            templateUrl: 'app/directives/legenda-calendario-olimpico/legenda-calendario-olimpico.html',
            replace: true,
            scope: {},
            link: function ($scope, $elem, $attrs) {
                $scope.res = $scope.$root.res;
                angular.extend($scope, {
                    filtroAbertoAtivo: true,
                    filtroFechadoAtivo: false
                });

		        /**
		         * Listener do atributo filtroAbertoAtivo
		         * 
		         * @method watch
		         *
		         *
		         */                  
                $scope.$watch('filtroAbertoAtivo', function () {
                    var status = LegendaIncidenteFilter.getInstance($attrs.id).statuses;

                    if ($scope.filtroAbertoAtivo) {
                        status.push('ABERTO');
                    } else {
                        _.remove(status, function (valor) {
                            return valor === 'ABERTO';
                        });
                    }

                    LegendaIncidenteFilter.getInstance($attrs.id).trigger('filterChanged', 'filtro');
                });

		        /**
		         * Listener do atributo filtroFechadoAtivo
		         * 
		         * @method watch
		         *
		         *
		         */                  
                $scope.$watch('filtroFechadoAtivo', function () {
                    var status = LegendaIncidenteFilter.getInstance($attrs.id).statuses;

                    if ($scope.filtroFechadoAtivo) {
                        status.push('FECHADO');
                    } else {
                        _.remove(status, function (valor) {
                            return valor === 'FECHADO';
                        });
                    }

                    LegendaIncidenteFilter.getInstance($attrs.id).trigger('filterChanged', 'filtro');
                });

            }
        }
    }
}());