ui/src/app/experiment/experiment.config.js (116 lines of code) (raw):
/*
* Copyright (C) 2015-2018 EPAM Systems
*
* This file is part of Indigo ELN.
*
* Indigo ELN is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Indigo ELN is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Indigo ELN. If not, see <http://www.gnu.org/licenses/>.
*
*/
var experimentsTemplate = require('./component/experiment.html');
var experimentDeleteDialogTemplate = require('./delete-dialog/experiment-delete-dialog.html');
var roles = require('../permissions/permission-roles.json');
/* @ngInject */
function experimentConfig($stateProvider, permissionsConfig, permissionViewConfig,
userPermissions) {
var permissions = [
userPermissions.VIEWER,
userPermissions.OWNER
];
var permissionsViewData = {
authorities: [roles.CONTENT_EDITOR, roles.EXPERIMENT_READER]
};
$stateProvider
.state('experiment', {
parent: 'entity',
url: '/',
data: {
authorities: [],
pageTitle: 'Experiments'
},
views: {
'content@app_page': {
template: experimentsTemplate,
controller: 'ExperimentController',
controllerAs: 'vm'
}
},
resolve: {}
})
.state('entities.experiment-detail', {
url: '/project/{projectId}/notebook/{notebookId}/experiment/{experimentId}',
data: {
authorities: [roles.EXPERIMENT_READER, roles.EXPERIMENT_CREATOR, roles.CONTENT_EDITOR],
pageTitle: 'Experiment',
tab: {
name: 'Experiment',
service: 'experimentService',
kind: 'experiment',
type: 'entity',
state: 'entities.experiment-detail'
}
},
views: {
tabContent: {
template: '<experiment-detail></experiment-detail>'
}
},
resolve: {
saltCode: function(appValuesService) {
return appValuesService.fetchSaltCodes();
}
}
})
.state('experiment.delete', {
parent: 'experiment',
url: '/delete',
data: {
authorities: [roles.EXPERIMENT_REMOVER, roles.CONTENT_EDITOR]
},
onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {
$uibModal.open({
template: experimentDeleteDialogTemplate,
controller: 'ExperimentDeleteDialogController',
controllerAs: 'vm',
size: 'md',
resolve: {
entity: ['experimentService', function(experimentService) {
return experimentService.get({
experimentId: $stateParams.id,
notebookId: $stateParams.notebookId
}).$promise;
}]
}
}).result.then(function() {
$state.go('experiment', null, {
reload: true
});
}, function() {
$state.go('^');
});
}]
})
.state('entities.experiment-detail.permissions', _.extend({}, permissionsConfig, {
parent: 'entities.experiment-detail',
data: {
authorities: [roles.CONTENT_EDITOR, roles.EXPERIMENT_CREATOR],
entityType: 'experiment'
},
permissions: permissions
}))
.state('entities.experiment-detail.permissions-view', _.extend({}, permissionViewConfig, {
parent: 'entities.experiment-detail',
data: permissionsViewData,
permissions: permissions
}))
.state('entities.experiment-detail.print', {
parent: 'entities.experiment-detail',
url: '/print',
onEnter: function(printModal, $stateParams, $state) {
'ngInject';
printModal
.showPopup($stateParams, 'Experiment')
.finally(function() {
$state.go('^', null, {notify: false});
});
},
onExit: function(printModal) {
'ngInject';
printModal.close();
},
data: {
authorities: [roles.CONTENT_EDITOR, roles.EXPERIMENT_READER, roles.EXPERIMENT_CREATOR]
}
});
}
module.exports = experimentConfig;