function notebookConfig()

in ui/src/app/notebook/notebook.config.js [27:187]


function notebookConfig($stateProvider, permissionsConfig, permissionViewConfig, userPermissions) {
    var permissions = [
        userPermissions.VIEWER,
        userPermissions.USER,
        userPermissions.OWNER
    ];

    var data = {
        authorities: [roles.CONTENT_EDITOR, roles.NOTEBOOK_CREATOR],
        entityType: 'notebook'
    };

    var permissionsViewData = {
        authorities: [roles.CONTENT_EDITOR, roles.NOTEBOOK_READER],
        entityType: 'notebook'
    };

    $stateProvider
        .state('notebook', {
            abstract: true,
            parent: 'entity'
        })
        .state('entities.notebook-new', {
            url: '/project/{parentId}/notebook/new',
            views: {
                tabContent: {
                    template: template,
                    controller: 'NotebookDetailController',
                    controllerAs: 'vm'
                }
            },
            params: {
                isNewEntity: true
            },
            data: {
                authorities: [roles.CONTENT_EDITOR, roles.NOTEBOOK_CREATOR],
                pageTitle: 'indigoeln',
                tab: {
                    name: 'New Notebook',
                    service: 'notebookService',
                    kind: 'notebook',
                    type: 'entity',
                    state: 'entities.notebook-new'
                },
                isNew: true
            },
            resolve: {
                pageInfo: function($q, $stateParams, principalService) {
                    return $q.all([
                        principalService.checkIdentity(),
                        principalService.hasAuthorityIdentitySafe(roles.CONTENT_EDITOR),
                        principalService.hasAuthorityIdentitySafe(roles.NOTEBOOK_CREATOR),
                        principalService.hasAuthorityIdentitySafe(roles.EXPERIMENT_CREATOR)
                    ]).then(function(results) {
                        return {
                            notebook: {
                                description: '',
                                name: undefined
                            },
                            identity: results[0],
                            isContentEditor: results[1],
                            hasEditAuthority: results[2],
                            hasCreateChildAuthority: results[3],
                            experiments: {},
                            projectId: $stateParams.parentId
                        };
                    });
                }
            }
        })
        .state('entities.notebook-detail', {
            url: '/project/{projectId}/notebook/{notebookId}',
            views: {
                tabContent: {
                    template: template,
                    controller: 'NotebookDetailController',
                    controllerAs: 'vm'
                }
            },
            data: {
                authorities: [roles.CONTENT_EDITOR, roles.NOTEBOOK_READER, roles.NOTEBOOK_CREATOR],
                pageTitle: 'indigoeln',
                tab: {
                    name: 'Notebook',
                    service: 'notebookService',
                    kind: 'notebook',
                    type: 'entity',
                    state: 'entities.notebook-detail'
                }
            },
            resolve: {
                pageInfo: function($q, $stateParams, principalService, notebookService) {
                    return $q
                        .all([
                            notebookService.get($stateParams).$promise,
                            principalService.checkIdentity(),
                            principalService.hasAuthorityIdentitySafe(roles.CONTENT_EDITOR),
                            principalService.hasAuthorityIdentitySafe(roles.NOTEBOOK_CREATOR),
                            principalService.hasAuthorityIdentitySafe(roles.EXPERIMENT_CREATOR)
                        ])
                        .then(function(results) {
                            return {
                                notebook: results[0],
                                identity: results[1],
                                isContentEditor: results[2],
                                hasEditAuthority: results[3],
                                hasCreateChildAuthority: results[4],
                                projectId: $stateParams.projectId,
                                isNotHavePermissions: false
                            };
                        }, function() {
                            return {
                                notebook: null,
                                isNotHavePermissions: true
                            };
                        });
                }
            }
        })
        .state('entities.notebook-detail.print', {
            parent: 'entities.notebook-detail',
            url: '/print',
            onEnter: function(printModal, $stateParams, $state) {
                'ngInject';

                printModal
                    .showPopup($stateParams, 'Notebook')
                    .finally(function() {
                        $state.go('^', null, {notify: false});
                    });
            },
            onExit: function(printModal) {
                'ngInject';

                printModal.close();
            },
            data: {
                authorities: [roles.CONTENT_EDITOR, roles.NOTEBOOK_READER, roles.NOTEBOOK_CREATOR]
            }
        })
        .state('entities.notebook-new.permissions', _.extend({}, permissionsConfig, {
            parent: 'entities.notebook-new',
            data: data,
            permissions: permissions
        }))
        .state('entities.notebook-new.permissions-view', _.extend({}, permissionViewConfig, {
            parent: 'entities.notebook-new',
            data: permissionsViewData,
            permissions: permissions
        }))
        .state('entities.notebook-detail.permissions', _.extend({}, permissionsConfig, {
            parent: 'entities.notebook-detail',
            data: data,
            permissions: permissions
        }))
        .state('entities.notebook-detail.permissions-view', _.extend({}, permissionViewConfig, {
            parent: 'entities.notebook-detail',
            data: permissionsViewData,
            permissions: permissions
        }));
}