import ngModule from './module'; import getMainRoute from 'core/lib/get-main-route'; config.$inject = ['$stateProvider', '$urlRouterProvider']; function config($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/'); $stateProvider .state('login', { url: '/login?continue', description: 'Login', views: { login: {template: ''} } }) .state('home', { url: '/', description: 'Home', template: '' }); for (let file in window.routes) { let routeFile = window.routes[file]; let fileRoutes = routeFile.routes; let moduleName = routeFile.module; let validations = routeFile.validations || false; let mainModule = getMainRoute(fileRoutes); if (!mainModule) continue; for (let route of fileRoutes) { let configRoute = { url: route.url, template: `<${route.component} ${getParams(route)}>`, description: route.description, reloadOnSearch: false, resolve: { loader: loader(moduleName, validations) }, data: { moduleIndex: file, acl: route.acl } }; if (route.abstract) configRoute.abstract = true; if (route.routeParams) configRoute.params = route.routeParams; $stateProvider.state(route.state, configRoute); } } function getParams(route) { let params = ''; let temporalParams = []; if (!route.params) return params; Object.keys(route.params).forEach(key => { temporalParams.push(`${key} = "${route.params[key]}"`); }); return temporalParams.join(' '); } function loader(moduleName) { load.$inject = ['vnModuleLoader']; function load(moduleLoader) { return moduleLoader.load(moduleName); } return load; } } ngModule.config(config);