Source: directives/rotas-olimpicas-filter/rotas-olimpicas-filter.js

/**
 * @ngdoc directives
 * @name RotasOlimpicasFilter
 * @module s4c.directives.rotasOlimpicasFilter.RotasOlimpicasFilter
 *
 * @description
 * `RotasOlimpicasFilter` Controller do Filtro da funcionalidade de Rotas Olímpicas  
 * 
 */
(function () {
    'use strict';

    function RotasOlimpicasFilter(RotasOlimpicasFilter) {
        return {
            restrict: 'E',
            templateUrl: 'app/directives/rotas-olimpicas-filter/rotas-olimpicas-filter.html',
            replace: true,
            scope: {},
            link: function ($scope, $elem, $attrs) {

                angular.extend($scope, {
                    applyFilter: applyFilter
                });

                var instance = RotasOlimpicasFilter.getInstance($attrs.id);

                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) {
                    _setTimeWindow();
                    instance.trigger('filterChanged');
                    if (!toggle) {
                        $scope.$parent.toogleFilter();
                    }
                }
            }
        };
    }

    RotasOlimpicasFilter.$inject = ['RotasOlimpicasFilter'];

    angular.module('s4c.components.rotas-olimpicas')
        .directive('rotasOlimpicasFilter', RotasOlimpicasFilter);
}());