Countdown feito para Angular JS

by Ivan Ferrer

HTML

<div ng-app="iCountdown">
<i-countdown set-date="2016-10-24 15:00:00" format-view="%d dias %h hs %i min %s sg" expire-message="redirecionando..."></i-countdown>
</div>

JavaScript

angular.module('iCountdown', [])
    .directive("iCountdown", function () {

        return {
            restrict: "EAC",
            scope: {
                setDate: "@",
                expireMessage: "@",
                formatView: "@"
            },
            replace: true,
            template: "<div><div></div></div>",
            link: function (scope, element) {

                scope.insertDate = function() {
                    scope.setMessageExpired(scope.expireMessage);
                    scope.setDateFinal(scope.setDate);
                    scope.start();
                };

                scope.$watch('setDate', function() {
                    scope.insertDate();
                }, true);

                var end = new Date();
                var _second = 1000;
                var _minute = _second * 60;
                var _hour = _minute * 60;
                var _day = _hour * 24;

                var params = {
                    second:_second,
                    minute:_minute,
                    hour: _hour,
                    day: _day,
                    interval: null,
                    messageFinal: 'expired!',
                    format:'Y-m-d H:i:s',
                    dateEnd: null
                };

                scope.setMessageExpired = function(message) {
                    params.messageFinal = message;
                };

                scope.setId = function(id) {
                    params.id = id;
                    scope.viewElement.setAttribute("id", id);
                };

                scope.setDateFinal = function(dateVal) {
                    params.dateEnd = dateVal;
                };

                var createDateFinal = function(strDate) {

                    var reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
                    var dateArray = reggie.exec(strDate);
                    return new Date(
                        (+dateArray[1]),
                       ...