Source: directives/timepicker/timepicker.js

/**
 * @ngdoc directives
 * @name Timepicker
 * @module s4c.directives.timepicker.Timepicker
 *
 * @description
 * `Timepicker` Controller do módulo de Timepicker
 * 
 * 
 */
(function () {
    'use strict';

    function timepickerCtrl($scope, $rootScope, $sce, localize) {
        $scope.mudei = function (val) {
            $scope.data = val;
        }; 
    }

    timepickerCtrl.$inject = [
        '$scope',
        '$rootScope',
        '$sce',
        'localize'
    ];

    function timepicker() {
        return {
            restrict: 'AE',
            templateUrl: 'app/directives/timepicker/timepicker.html',
            replace: true,
            scope: {
                data: '=data',
                min: '=min',
                max: '=max',
                minTime: '=minTime',
                maxTime: '=maxTime',
                theme: '=theme',
                pickdate: '=pickdate',
                picktime: '=picktime',
                format: '=format',
                closeOnDateSelect: '=',
                disabled: '@',
            },
            controller: timepickerCtrl,
            link: function ($scope, $elem, $attrs, localize) {
                $scope.res = $scope.$root.res;
                $scope.time = $scope.data !== '*' ? $scope.data : '';
                $scope.label = $attrs.label;

                if ($scope.closeOnDateSelect === null || $scope.closeOnDateSelect === undefined) {
                    $scope.closeOnDateSelect = true;
                }

                if (typeof $scope.pickdate === undefined) {
                    $scope.pickdate = true;
                }

                if (typeof $scope.picktime === undefined) {
                    $scope.picktime = true;
                }

                if (typeof $scope.theme === undefined) {
                    $scope.theme = 'dark';
                }

                if (typeof $scope.format === undefined) {
                    $scope.format = 'd/m/Y H:m';
                }

                /**
                 * @method $watch
                 */
                $scope.$watch('data', function () {

                    if (typeof $scope.data === 'number' && !isNaN($scope.data)) {
                        $scope.data = moment($scope.data).format('D/M/Y H:m');
                    } else {
                        $scope.time = $scope.data !== '*' ? $scope.data : '';
                    }

                    var language;
                    if ($scope.res("COMUM_LOCALE") == "pt-BR") {
                        language = 'pt-BR';
                    } else {
                        language = 'en';
                    }
                    $scope.datetimepicker = $elem.find('#datetimepicker');
                    $scope.datetimepicker.datetimepicker({
                        scrollInput: false,
                        theme: $scope.theme,
                        format: $scope.format,
                        lang: language,
                        datepicker: $scope.pickdate,
                        timepicker: $scope.picktime,
                        closeOnDateSelect: $scope.closeOnDateSelect,
                        step: 15,
                        onShow: function () {
                            this.setOptions({
                                minDate: $scope.min ? $scope.min : false,
                                maxDate: $scope.max ? $scope.max : false,
                                minTime: $scope.minTime ? $scope.minTime : false,
                                maxTime: $scope.maxTime ? $scope.maxTime : false,
                                formatDate: 'd.m.Y',
                            });
                        },
                        onSelectTime: function () {
                            $scope.$apply();
                        }
                    });
                });
            }
        };
    }

    angular.module('s4c.directives.timepicker', [
        'datePicker',
        'ui.date'
    ])
        .directive('timepicker', timepicker);

}());