breadcrumb.controller.js 1.61 KB
(function (window, angular) {
    var app = angular.module("framework.UI.breadcrumb", []);

    app.controller('BarController', barController);

    barController.$inject = ['$scope', '$state', '$modal', '$rootScope'];
    function barController($scope, $state, $modal, $rootScope) {
        $scope.breadcrumbs = [];
        $scope.helpAvailable = null;
        $scope.showHelp = showHelp;

        function showHelp() {
            if ($scope.helpAvailable)
                $modal.open({
                    templateUrl: $scope.helpAvailable,
                });
        }

        $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
            _parseStateName(toState.name);
            $scope.helpAvailable = toState.hasHelp;
        });

        $scope.helpAvailable = $state.current.hasHelp;
        _parseStateName($state.current.name);

        function _parseStateName(stateName) {
            var parts = stateName.split('.');
            var breadcrumbs = [];
            for (var i = 0; i < parts.length; i++) {
                var p = parts[i];
                if (p === "root")
                    continue;
                var full = parts.slice(0, i + 1).join('.');
                breadcrumbs.push({
                    name: parts[i],
                    $html: _generateBreadcrumbHtml(p, full)
                });
            }
            $scope.breadcrumbs = breadcrumbs;
        }

        function _generateBreadcrumbHtml(name, state) {
            var template = '<a ui-sref="' + state + '" >' + name + '</a>';
            return template;
        }
    };
})(window, angular);